Repository files, collaboration, releases and project activity.
ARCHFORGE HISTORY
Blame · scripts/backup.sh
Branch main · the Commit author is not necessarily a verified ArchForge account.
e59b7f7cc6archadmin2026-10-11
1 #!/usr/bin/env bashe59b7f7cc6archadmin2026-10-11
2 set -Eeuo pipefaile59b7f7cc6archadmin2026-10-11
3 umask 077e59b7f7cc6archadmin2026-10-11
4 [[ $EUID -eq 0 ]] || { echo 'Run with sudo.' >&2; exit 1; }e59b7f7cc6archadmin2026-10-11
5 BACKUP_DIR=/var/backups/archforge-statuse59b7f7cc6archadmin2026-10-11
6 mkdir -p "$BACKUP_DIR"e59b7f7cc6archadmin2026-10-11
7 TMP=$(mktemp -d)e59b7f7cc6archadmin2026-10-11
8 trap 'rm -rf "$TMP"' EXITe59b7f7cc6archadmin2026-10-11
9 if [[ -f /var/lib/archforge-status/status.db ]]; thene59b7f7cc6archadmin2026-10-11
10 sqlite3 /var/lib/archforge-status/status.db ".backup '$TMP/status.db'"e59b7f7cc6archadmin2026-10-11
11 fie59b7f7cc6archadmin2026-10-11
12 cp /etc/archforge-status/status.env "$TMP/status.env"e59b7f7cc6archadmin2026-10-11
13 if [[ -f /etc/archforge-status/msmtprc ]]; then cp /etc/archforge-status/msmtprc "$TMP/msmtprc"; fie59b7f7cc6archadmin2026-10-11
14 NAME="backup-$(date -u +%Y%m%d-%H%M%S).tar.gz"e59b7f7cc6archadmin2026-10-11
15 tar -C "$TMP" -czf "$BACKUP_DIR/$NAME" .e59b7f7cc6archadmin2026-10-11
16 chmod 600 "$BACKUP_DIR/$NAME"e59b7f7cc6archadmin2026-10-11
17 find "$BACKUP_DIR" -maxdepth 1 -type f -name 'backup-*.tar.gz' -mtime +14 -deletee59b7f7cc6archadmin2026-10-11
18 echo "Encrypted-disk recommended: backup contains secrets: $BACKUP_DIR/$NAME"