Skip to content

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-111 #!/usr/bin/env bash
e59b7f7cc6archadmin2026-10-112 set -Eeuo pipefail
e59b7f7cc6archadmin2026-10-113 umask 077
e59b7f7cc6archadmin2026-10-114 [[ $EUID -eq 0 ]] || { echo 'Run with sudo.' >&2; exit 1; }
e59b7f7cc6archadmin2026-10-115 BACKUP_DIR=/var/backups/archforge-status
e59b7f7cc6archadmin2026-10-116 mkdir -p "$BACKUP_DIR"
e59b7f7cc6archadmin2026-10-117 TMP=$(mktemp -d)
e59b7f7cc6archadmin2026-10-118 trap 'rm -rf "$TMP"' EXIT
e59b7f7cc6archadmin2026-10-119 if [[ -f /var/lib/archforge-status/status.db ]]; then
e59b7f7cc6archadmin2026-10-1110  sqlite3 /var/lib/archforge-status/status.db ".backup '$TMP/status.db'"
e59b7f7cc6archadmin2026-10-1111 fi
e59b7f7cc6archadmin2026-10-1112 cp /etc/archforge-status/status.env "$TMP/status.env"
e59b7f7cc6archadmin2026-10-1113 if [[ -f /etc/archforge-status/msmtprc ]]; then cp /etc/archforge-status/msmtprc "$TMP/msmtprc"; fi
e59b7f7cc6archadmin2026-10-1114 NAME="backup-$(date -u +%Y%m%d-%H%M%S).tar.gz"
e59b7f7cc6archadmin2026-10-1115 tar -C "$TMP" -czf "$BACKUP_DIR/$NAME" .
e59b7f7cc6archadmin2026-10-1116 chmod 600 "$BACKUP_DIR/$NAME"
e59b7f7cc6archadmin2026-10-1117 find "$BACKUP_DIR" -maxdepth 1 -type f -name 'backup-*.tar.gz' -mtime +14 -delete
e59b7f7cc6archadmin2026-10-1118 echo "Encrypted-disk recommended: backup contains secrets: $BACKUP_DIR/$NAME"