Mám na PXM1 a PXM2 rpool s daty ze všech LXC kontejnerů. Snapshot každých 6 hodin
ti zachrání zadek, kdyžs nedopatřením smázl /etc v produkci. (Stalo se. Ne, fakt.)
Skript
bash
#!/usr/bin/env bash
# /usr/local/bin/zfs-snap-rotate.sh
set -euo pipefail
POOL="${1:-rpool/data}"
KEEP_DAYS="${2:-7}"
PREFIX="auto"
TS=$(date -u +%Y%m%d-%H%M%S)
SNAP_NAME="${POOL}@${PREFIX}-${TS}"
# Vytvoř nový snapshot (rekurzivně přes všechny child datasety)
zfs snapshot -r "${SNAP_NAME}"
# Smaž snapshoty starší než KEEP_DAYS
CUTOFF=$(date -u -d "${KEEP_DAYS} days ago" +%s)
zfs list -H -t snapshot -o name,creation -p | \
awk -v cutoff="${CUTOFF}" -v prefix="${PREFIX}" '
$1 ~ prefix && $2 < cutoff { print $1 }
' | while read -r snap; do
echo "[remove] ${snap}"
zfs destroy "${snap}"
doneCron
bash
# crontab -e
0 */6 * * * /usr/local/bin/zfs-snap-rotate.sh rpool/data 7 >> /var/log/zfs-snap.log 2>&1Variace
Pro PBS sync přidej před zfs destroy push do proxmox-backup-client:
bash
proxmox-backup-client backup data.pxar:/data \
--repository root@pam!api@pbs:rpool-snapsPro per-CT snapshoty (Proxmox je dělá taky, ale jsou na úrovni LXC), iteruj přes
pct list. Pohoda.