+++
title = "daily zfs snapshots"
date = "2011-04-26T13:00:00+00:00"
author = "Gibheer"
draft = false
+++

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](//downloads/zfs_snapshot.sh)
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\
</source>

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.
