Skip to content

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 bash
2set -Eeuo pipefail
3umask 077
4[[ $EUID -eq 0 ]] || { echo 'Run with sudo.' >&2; exit 1; }
5BACKUP_DIR=/var/backups/archforge-status
6mkdir -p "$BACKUP_DIR"
7TMP=$(mktemp -d)
8trap 'rm -rf "$TMP"' EXIT
9if [[ -f /var/lib/archforge-status/status.db ]]; then
10 sqlite3 /var/lib/archforge-status/status.db ".backup '$TMP/status.db'"
11fi
12cp /etc/archforge-status/status.env "$TMP/status.env"
13if [[ -f /etc/archforge-status/msmtprc ]]; then cp /etc/archforge-status/msmtprc "$TMP/msmtprc"; fi
14NAME="backup-$(date -u +%Y%m%d-%H%M%S).tar.gz"
15tar -C "$TMP" -czf "$BACKUP_DIR/$NAME" .
16chmod 600 "$BACKUP_DIR/$NAME"
17find "$BACKUP_DIR" -maxdepth 1 -type f -name 'backup-*.tar.gz' -mtime +14 -delete
18echo "Encrypted-disk recommended: backup contains secrets: $BACKUP_DIR/$NAME"