Repository files, collaboration, releases and project activity.
archforge-external-status / scripts/backup.shmain
▤ scripts/backup.sh778 bytes
19 lines · Select a line number for a permalink
1
#!/usr/bin/env bash2
set -Eeuo pipefail3
umask 0774
[[ $EUID -eq 0 ]] || { echo 'Run with sudo.' >&2; exit 1; }5
BACKUP_DIR=/var/backups/archforge-status6
mkdir -p "$BACKUP_DIR"7
TMP=$(mktemp -d)8
trap 'rm -rf "$TMP"' EXIT9
if [[ -f /var/lib/archforge-status/status.db ]]; then10
sqlite3 /var/lib/archforge-status/status.db ".backup '$TMP/status.db'"11
fi12
cp /etc/archforge-status/status.env "$TMP/status.env"13
if [[ -f /etc/archforge-status/msmtprc ]]; then cp /etc/archforge-status/msmtprc "$TMP/msmtprc"; fi14
NAME="backup-$(date -u +%Y%m%d-%H%M%S).tar.gz"15
tar -C "$TMP" -czf "$BACKUP_DIR/$NAME" .16
chmod 600 "$BACKUP_DIR/$NAME"17
find "$BACKUP_DIR" -maxdepth 1 -type f -name 'backup-*.tar.gz' -mtime +14 -delete18
echo "Encrypted-disk recommended: backup contains secrets: $BACKUP_DIR/$NAME"