blob: c46ed2b4a9c4ad87c06f257b32b14bf29d2bd2dc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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."
|