daily zfs snapshots

In (Open)Solaris gab es eine Funktion mit dem Namen TimeMachine. Das sind einzelne Scripte, welche in regelmaessigen Abstaenden laufen und Snapshots der Dateisysteme erstellen.

Da es diese Funktion unter FreeBSD so noch nicht gibt, hatte ich mir gedacht, so ein Script selbst zu bauen. Wie ich dann feststellen durfte, gibt es bereits eine handvoll Scripte, die genaue diese Aufgabe auf verschiedene Art und Weise vollbringen.

Da ich aber ohnehin Uebung in Shellscripten brauchte, habe ich es einfach mal weiter geschrieben und dabei herausgekommen ist ein Script, welches taegliche, woechentliche, monatliche und jaehrliche Snapshots erstellen kann. Die Konfiguration wird nicht in ein Config file geschrieben sondern in Form von Properties direkt auf die ZFS-Partition geschrieben.

Einzig in der /etc/periodic.conf muss ein Eintrag snapshot_zfs_enable="YES" hinterlegt werden.

Das Script koennt ihr euch hier runterladen. Dieses koennt ihr nach /usr/local/etc/periodic/daily/900.snapshot_zfs oder nach /etc/periodic/daily/900.snapshot_zfs entpacken. Wenn in der /etc/periodic.conf der Eintrag fuer snapshots drin ist, dann laeuft das Script von nun an jeden Tag.

Jetzt koennen wir fuer eine ZFS Partition mal das Snapshot einschalten:

source:shell
# zfs set org.snap:auto-snapshot=on tank/storage
# zfs get org.snap:auto-snapshot
NAME PROPERTY VALUE SOURCE
tank/storage org.snap:auto-snapshot on local
tank/storage/foo org.snap:auto-snapshot on inherited from tank/storage

Mit diesen Einstellungen jeden Tag ein Snapshot erstellt, wobei 10 taegliche, 3 woechentliche und 3 monatliche Snapshots aufgehoben werden. Zusaetzlich gibt es noch die Option fuer jaehrliche Snapshots. Die Zahl der aufzuhebenden Snapshots laesst sich mit den Properties org.snap:keep-daily, org.snap:keep-weekly, org.snap:keep-monthly und org.snap:keep-yearly festlegen.