Verwaltung von Snapshots/Backups (bash)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Verwaltung von Snapshots/Backups (bash)

Beitrag von smutbert » 17.07.2018 20:42:55

Hallo liebe Leute,

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
(und das ganze dann in einer Schleife für unterschiedliche Hostnamen oder andere Verzeichnisse/Subvolumes als data)


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

Antworten