meine Backups erledige ich mit einem Shell... Bashskript, das die Daten mit rsync auf ein btrfs-Subvolume sichert und dann vom btrfs-Subvolume einen readonly-Snapshot erstellt. Mit der Zeit fallen dabei ziemlich viele Snapshots an von denen ich nicht alle beliebig lange behalten will.
Die Snapshots heißen zum Beispiel
- hostname.data.20180715
oder wenn sie aus einem bestimmten Anlass gemacht wurden beispielsweise
- hostname.data.20180716.pre-update
Bei letzteren würde ich gerne auf das automatische Löschen verzichten.
Auf eine erste Eingebung hin möchte ich die Backups der letzten ~2 Monate vollzählig behalten, davor nur das jeweils erste im Monat. Außerdem würde ich von den Backups, die älter als ~1 Jahr sind, nur das erste des Jahres behalten. Meine Idee der Umsetzung sieht ungefähr so aus
Code: Alles auswählen
cleanMonth=$(date +%Y%m -d "$(date -R) -2 month")
loopCount=0
ls /backup | grep -E "^hostname.data.${cleanMonth}[0-3][0-9]$" | while read SnapShot ; do
test ${loopCount} -eq 0 && continue
btrfs subvolume delete "/backup/${SnapShot}"
((loopCount++))
done
cleanYear=$(date +%Y -d "$(date -R) -13 month")
loopCount=0
ls /backup | grep -E "^hostname.data.${cleanYear}[0-1][0-9][0-3][0-9]$" | while read SnapShot ; do
test ${loopCount} -eq 0 && continue
btrfs subvolume delete "/backup/${SnapShot}"
((loopCount++))
done
Was mir daran nicht gefällt – auch wenn es eher ein theoretisches Problem ist – ist, dass das Vorgehen mindestens monatliche Backups voraussetzt, damit immer alles aufgeräumt wird.
An bessere/anderen Ideen, Anmerkungen wäre ich sehr interessiert. (Auch an besseren Ideen als nur monats- bzw, jahreserste Backups zu behalten.)
Danke & lg, smutbert