Eine Möglichkeit einfach und komfortabel Backups von Dateisystemen zu machen sind so genannte Snapshots. Wie der Name schon sagt wird dabei eine Momentaufnahme eines Dateisystems angelegt, auf das sich später einfach zugreifen lässt. Ich zeige dir in diesem Tutorial, wie du mit Hilfe eines kleinen Toolsets diese sehr einfach verwalten, also anlegen und mounten kannst.

  1. Snapshots funktionieren nur in Verbindung mit Soft Updates. Kurz gesagt, Soft Updates ist ein Feature, welches die Festplattenperformance erhöht, indem es Dateiänderungen bspw. nur im RAM vornimmt und bei geringerer Festplattenlast diese auf das Dateisystem überträgt.
    • Nachteil: Bei einem Systemabsturz kann es sein, dass die letzten Änderungen noch nicht auf die Festplatte geschrieben wurden, was Datenverlust zur Folge haben kann.
    • Vorteil: Die Geschwindigkeit ist besser und macht sich durchaus bemerkbar und ermöglicht zudem einige Funktionen wie bspw. die hier beschriebenen Snapshots.
  2. Um Soft Updates zu aktivieren (ohne grosse Performance-Optimierungen) darf das Dateisystem für welches du Soft Updates aktivieren willst aktuell nicht gemountet sein. Um Soft Updates auf dem Root-Device zu aktivieren, musst du im Single User-Mode starten (Punkt 4 im Bootmenu). Folgender Befehl aktiviert Soft Updates für das gewählte Device:

    # tunefs -n enable /dev/ad0s2a

  3. Wenn dann das System neu gestartet wurde und Soft Updates aktiviert sind, installieren wir das Toolset aus den Ports:

    # cd /usr/ports/sysutils/freebsd-snapshot/ && make install clean

  4. Nach dem bekannten "rehash" um das Binary im User-Pfad bekannt zu machen, können wir den Befehl "snapshot" verwenden:
    • Snapshot erstellen: Einen Snapshot erstellst du wie folgt, wobei der Parameter "Anzahl" angibt, wieviele Snapshots rückwirkend vorgehalten werden sollen. Die Benennung erfolgt automatisch, du musst also "Zielpfad" nicht selber anpassen. Die Snapshots werden im Verzeichnis ".snap" des jeweiligen Dateisystem gespeichert.:

      # snapshot make -g<Anzahl> <Quellpfad>:<Snapshot-Tag>

      Beispiel: # snapshot make -g5 /usr/local:usr_local
    • Snapshots auflisten: Verfügbare Snapshots kannst du mit dem Parameter "list" auflisten lassen:

      # snapshot list <Quellpfad>

      Beispiel: # snapshot list /usr/local
    • Snapshot mounten: Um nun auf einen Snapshot zu zugreifen, kannst du eine Snapshot-Version mit Hilfe folgendem Befehl mounten und danach wie auf jedes andere Verzeichnis auch zugreifen:

      # snapshot mount <Quellpfad>:<Snapshot-Pfad> <Mountpoint>

      Beispiel: # snapshot mount /usr/local:usr_local.3 /mnt
  5. Die Snapshot-Erstellung lässt sich auch automatisieren. Der beste weg ist, in der Datei "/etc/periodic.conf" die Konfiguration vorzunehmen:

    snapshot_enable="YES"
    snapshot_schedule="<Quellpfad>:<Wochenrhythmus>:<Tagesrhythmus>:<Stundenrhythmus>"

    Beispiel: snapshot_schedule="/usr/local:0:2:4", was bedeutet, dass für "/usr/local" täglich zwei und stündlich vier Snapshots angelegt werden.

    Anschliessend trägst du noch folgende Zeilen in die "/etc/crontab" ein:

    # Perform hourly/daily/weekly maintenance (FreeBSD UFS2/ZFS snapshots only).
    0 * * * * root /usr/local/sbin/periodic-snapshot hourly
    0 0 * * * root /usr/local/sbin/periodic-snapshot daily
    0 0 * * 0 root /usr/local/sbin/periodic-snapshot weekly

  6. Wichtig: Wenn ihr regelmässig Snapshots anlegen wollt, schaut euch unbedingt die Beispiele auf der Webseite dieses Toolsets an, es ist vielleicht nicht ganz einfach zu verstehen. Noch ein Tipp: Erstelle die Snapshots auf einem anderen als dem Quell-Device. Denn wenn die Festplatte kaputt ist, sind auch die Snapshots weg.