blob: ee9d265c3977909af4db8d5d18e44065bf184398 (
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
47
48
49
50
|
#!/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/sbin/*.sh \
/mnt/brimstone/mirror/index.html \
/etc/nginx/sites-available/stygian.conf \
/etc/nginx/nginx.conf \
/usr/local/sbin/mirror-verify.sh \
/usr/local/sbin/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."
|