Hallo zusammen,
ich habe einen Dateiserver, der unter /mnt/btrfs/home
Benutzerprofile liegen hat. Jedes Profil hat ein Verzeichnis .snapshots
, indem btrfs snapshots nach dem Pattern @GMT_$(date +%Y.%m.%d-%H.%M.%S)
erstellt werden. Das Pattern ist insofern wichtig, da es dem samba pattern entsprechen muss, um über Windows Clients die Rollbackfunktion bereitstellen zu können.
Nun wird bei jedem Start des Systems oder um Mitternacht ein btrfs subvolume per system service erstellt. Allerdings möchte ich gerne integrieren, dass er zusätzlich alle Snapshots löscht und ausschließlich Snapshots nach dem Großvater-, Vater-, Kind-Prinzip behält. Dabei soll er immer die letzten 7 Tagessnapshots der Woche, 4 Wochensnapshots im Monat und 12 Monatssnapshots im Jahr behalten. Zusätzlich soll der letzte Snapshot im Jahr behalten werden, was als Jahressnapshot zählt.
Nun sind meine bash Fähigkeiten nicht gerade die besten und ich habe keine Ahnung wie ich dieses Aufräumskript am besten implementiere und würde mich freuen, wenn ihr mir dabei helfen würdet.
Bisher sieht mein Skript wie folgt aus. Es erstellt ausschließlich Snapshots für alle Profile.
1 2 3 4 5 6 7 8 | #!/bin/bash homeDir=/mnt/btrfs/home profiles=$(ls ${homeDir}) for profile in ${profiles[@]}; do btrfs subvolume snapshot -r ${homeDir}/${profile} ${homeDir}/${profile}/.snapshots/@GMT_$(date +%Y.%m.%d-%H.%M.%S) done |
Viele Grüße Volker