Homeserver: Backupstrategie #1

In den folgenden Artikeln möchte ich auf die Backuplösung eingehen, die ich mit Hilfe meines Servers umgesetzt habe. Für das Systembackup meines Macbooks nutze ich Timemachine. Mit der aktuellen FreeNAS Version lässt sich ein AFP-Share für Timemachine verfügbar machen. Das klappt bis jetzt wunderbar. Jedoch möchte ich mich gerade bei wirklich wichtigen Daten, wie meinen Daten fürs Studium, nicht auf eine nicht von Apple abgesegnete Lösung verlassen.

Deshalb wollte ich RSync nutzen. FreeNAS bieten einen RSync-Server an, mit dem ein definierbarer Bereich auf der Platte als sogenanntes Module freigegeben werden kann. So muss beim Aufruf von RSync nicht mit Verzeichnissen hantiert werden. Die Angabe des Modules reicht, die Daten landen im richtigen Verzeichnis.

Ein weiterer wichtiger Punkt war die Haltung von mehreren Versionen meiner Daten. Ich wollte jede Woche ein Backup meiner Daten anlegen, einen Monat lang. Danach sollten die vorhandenen Backups rotieren: das Älteste kommt weg, die anderen werden weiter nach hinten geschoben. Natürlich sollte nicht nur einfach kopiert werden, sondern mittels Hardlinks auf Daten verwiesen werden um Plattenplatz zu sparen. Für diesen Einsatz gibt es rsnapshot. Leider kann mit rsnapshot nicht auf einen entfernten (wenn bei mir auch zwei Meter hinter mir stehenden) Server gebackupped werden. Also fiel die Möglichkeit schonmal aus.

Das Rotieren musste nun also „von Hand“ geschehen. Dabei habe ich mich etwas inspirieren lassen. Diese Shell-Skripte backuppen entfernte Server auf einen lokalen Rechner. Dabei werden die Backups rotiert und eine gewisse Anzahl Backups vorgehalten. Also fast, was ich gesucht habe. Die Skripte habe ich großzügig an meine Bedürfnisse angepasst.

Timemachine macht Backups automatisch, wenn das Backup-Volume verfügbar ist. So ungefähr sollte das auch beim Backup meiner Uni-Daten passieren. Unter Linux würde man wohl einen Cronjob anlegen, unter Mac OS X gibt es launchd. Dieser Daemon wird beim Systemstart als zweiter Prozess gestartet (siehe Aktivitätsanzeige) und soll verschiedene bekannte Starter (init, crond, etc.) ablösen und deren Aufgaben vereinheitlichen. Als weiteres Schmankerl wird launchd mit XML-Dateien konfiguriert. Wem das zu unübersichtlich ist, kann sich mit Lingon behelfen. Einen kleinen Einstiegsartikel zu Lingon findet man auf Apfeltalk.

Meine erste Idee war, einen AFP-Share zu nutzen und für jede Version meiner Daten einen Ordner (wie weekly.0, weekly.1 etc.) anzulegen. Beim Rotieren dieser Versionen wollte ich mit cp und Hardlinks arbeiten. Leider funktionierte das auch mit der GNU-Version von cp (über Macports bezogen) nicht. Woran genau es lag, kann ich nicht sagen. Vielleicht war AFP Schuld, vielleicht auch ZFS. Aber Moment… ZFS! Mit ZFS kann man von einem File System ohne großen Aufwand einen Snapshot (also quasi ein zeitliches Abbild eines File Systems) anlegen. Das wollte ich letztendlich tun.

Die Umsetzung dieser Idee und die Probleme, auf die ich gestoßen bin, kommen im nächsten Artikel. Bis dahin schöne Feiertage und so. ;)