From 13eb2d51c7284472efabc278bf9b7ec0b8575e47 Mon Sep 17 00:00:00 2001 From: doc Date: Sun, 14 Sep 2025 22:13:41 +0000 Subject: first commit --- mirror-backup.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 mirror-backup.sh (limited to 'mirror-backup.sh') diff --git a/mirror-backup.sh b/mirror-backup.sh new file mode 100755 index 0000000..c46ed2b --- /dev/null +++ b/mirror-backup.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# Backup critical mirror server configs + ZFS snapshots +# Doc’s "configs over cargo" edition 🐒 + +set -euo pipefail +umask 022 + +BACKUP_DIR="/mnt/brimstone/mirror-config-backups" +TIMESTAMP=$(date +%Y%m%d-%H%M%S) +ARCHIVE="$BACKUP_DIR/mirror-configs-$TIMESTAMP.tar.gz" + +mkdir -p "$BACKUP_DIR" + +echo "[$(date)] Creating config archive: $ARCHIVE" + +tar -czf "$ARCHIVE" \ + /etc/rsyncd.conf \ + /etc/rsyncd.motd \ + /etc/mirror-gpg \ + /usr/local/bin/mirror-verify.sh \ + /usr/local/bin/mirror-backup.sh \ + /etc/systemd/system/rsyncd.service \ + /etc/systemd/system/mirror-verify.* \ + /etc/cron.d/*mirror* 2>/dev/null || true + +echo "[$(date)] Archive complete." + +# Rotate old archives, keep last 7 +echo "[$(date)] Rotating archives (keeping last 7)..." +ls -1t "$BACKUP_DIR"/mirror-configs-*.tar.gz 2>/dev/null | tail -n +8 | while read -r oldfile; do + echo "Removing old archive: $oldfile" + rm -f "$oldfile" +done + +#rsync to backup server +echo "[$(date)] Sending to Stygian2 Backup Server..." +rsync -avhr /mnt/brimstone/mirror-config-backups/*.tar.gz doc@stygian2.failzero.net:/home/doc/stygianconfig + +# Trigger ZFS snapshots +echo "[$(date)] Taking ZFS snapshots..." +zfs snapshot brimstone@mirror-backup-$TIMESTAMP || true +zfs snapshot brimstone2@mirror-backup-$TIMESTAMP || true + +echo "[$(date)] Snapshots created: brimstone@mirror-backup-$TIMESTAMP, brimstone2@mirror-backup-$TIMESTAMP" +echo "[$(date)] Backup completed successfully." + -- cgit v1.2.3