Die Wichtigkeit eines Backups und die Häufigkeit mit der es gemacht wird, sind direkt antiproportional. Das ist auch bei mir so. Meine bisherige Backup-”Strategie” bestand aus tar-Archiven, die auf DVD gebrannt wurden. Da das genauso umständlich wie zeitraubend und dumm ist, gab es bisher, wenn überhaupt, einmal pro Monat ein Backup auf 4-6 DVDs.
Dabei geht es auch so viel schöner, schneller und intelligenter:
Inkrementelle Backups mit Rsnapshot auf ein NAS
Was braucht man?
Einen alten Rechner mit ausreichend großer Festplatte – Richtet sich im Wesentlichen danach, was man gerade zur Verfügung hat und was man benötigt. In meinem Fall ein alter Pentium 2, 400MHz mit 128MB RAM und einer 120GB Festplatte. Netzwerkkarte versteht sich von selbst.
FreeNAS – Als NAS bezeichnet man Speicher, auf den über das Netzwerk zugegriffen werden kann. Möchte man sich keine der teuren kommerziellen Lösungen leisten oder ist mit dem Leistungsumfang der günstigen Alternativen nicht zufrieden, bietet es sich an, einen vorhandenen Rechner als NAS zu konfigurieren. Das kann man entweder mit einer beliebigen Linux-Distribution oder einem Unix-Derivat machen oder man verwendet FreeNAS. FreeNAS basiert auf dem m0n0wall-Projekt, welches wiederum eine FreeBSD-Variante für eingebettete Systeme ist. Das System kann auf einem USB-Stick installiert werden, was ca. 5min dauert.
Die komplette Konfiguration erfolgt komfortabel über eine WebGUI (http oder https) und ist weitesgehend ohne einen Blick ins Handbuch möglich.
Aktivierbare Dienste sind z.B.
- Samba (für Windows-Freigaben)
- FTP
- NFS, muss aktiviert werden, möchte man das NAS als Backup-Server nutzen wie weiter unten beschrieben.
- Rsync und SSH, müssen aktiviert werden, falls auch MS Windows-Clients gesichert werden sollen.
- Unison
- AFP (Freigaben für MacOS)
Unterstützt wird des Weiteren Festplattenverschlüsselung und RAID1, RAID5 Konfiguration.
Soweit, so gut. Mit FreeNAS hat man einen vom Arbeitsplatzsystem entkoppelten Speicherplatz. Als Software zum Ausführen des Backups bietet sich Rsync an. Rsync sychronisiert Dateien, wahlweise lokal oder über Netzwerk.
Die einfachste Variante, das Backup nun tatsächlich auszuführen ist die Verwendung von
rsync -zave ssh --delete --progress source/ user@freenas.local:/mnt/backup/dest
z = Komprimiere vor Übertragung.
a = Archiviere Timestamp, Rechte, Besitzer.
v = Verbose.
e = Gibt an welche Remote Shell Rsync verwenden soll. Hier: SSH
–delete = Wurde eine Datei in source gelöscht, lösche sie auch in dest.
–progress = Fortschrittsanzeige pro Datei.
Um das Backup regelmäßig auszuführen, legt man einen entsprechenden cron-Job an.
Der offensichtliche Nachteil dieser Lösung ist, dass man beispielsweise nicht auf das Backup von vor 2 Tage, 3 Wochen oder 5 Monaten zurückgreifen kann. Der Backup-Ordner auf unserem NAS enthält immer nur das aktuelle Backup.
Auch hierfür gibt es eine einfache Lösung: Rsnapshot. Rsnapshot verwendet rsync und ermöglicht mit Hilfe von Hard-Links das Anlegen mehrerer vollständiger Backups ohne nenneswert mehr Speicherplatz zu verbrauchen als für ein einzelnes vollständiges Backup.
Installiert man Rsnapshot unter Ubuntu-Linux, muss die Konfigurationsdatei nur minimal angepasst werden.
Wichtige Punkte sind hier:
snapshot_root: An diese Stelle werden alle Backups gespeichert. Der snapshot_root muss im lokalen Dateisystem liegen. Da wir trotzdem unser NAS verwenden möchten (ein Backup auf den gleichen Datenträger hat so gut wie keinen Nutzen), mounten wir das Backupverzeichnis über NFS.
sudo mkdir /media/backup sudo mount freenas.local:/mnt/backup /media/backup
Anmerkung: Die 120GB-Festplatte aus obigem System läuft unter dem Mount-Point /mnt/backup. Um sich den Mount-Befehl zu sparen, trägt man die NFS-Friegabe in die fstab ein.
intervall: Mit dem Intervall gibt man an, in welchem Verzeichnis der Snapshot gespeichert wird und wieviele vollständige Backups für dieses Intervall angelegt werden.
Beispiel:
intervall hourly 5
Speichert 5 vollständige Backups in hourly.0, hourly.1, …, hourly.4. In hourly.0 befindet sich das aktuellste Backup. Beim nächsten Backup wird hourly.0 nach hourly.1 verschoben, hourly.1 nach hourly.2 usw.. In hourly.0 wird das neue Backup angelegt (einfach dargestellt. Intern wird das ganze hocheffizient mit hard links gelöst, um Speicherplatz zu sparen).
backup: Angabe dessen, was eigentlich gesichert werden soll in der Form
backup /absolute/path/to/source/dir relative/path/to/dest/dir
z.B.
backup /home/user notebook/
Ist der snapshot_root z.B. /mnt/backup und führt man rsnaphot hourly aus, dann wird /home/user in /mnt/backup/hourly.0/notebook/home/siebel gesichert.
Die fertige Konfiguration sollte man mit rsnapshot configtest prüfen.
Das Backup führt man mit dem Befehl rsnapshot
Viele interessante Informationen und Gedanken zum Thema rsync snapshot und Verwendung von Hardlinks gibt es von Mike Rubels in Easy Automated Snapshot-Style Backups with Linux and Rsync
I'm a Software Developer, currently working at
Sehr schoene Idee mit Rsnapshot und FreeNAS backups zu fahren ;)
Ich bin gerade dabei mit FreeNAS ein neues Konzept aufzubauen. Nur dass mein Backup von Cobian Backup durchgefuehrt (nur Windows Clients). Aber an sich dasselbe Prinzip.
In heterogenen Netzen mit Linux / Unix und Windows im Einsatz ist das eine geniale Idee um die Kluft zwischen den Systemen (was zumindest die Backupthematik betrifft) zu schliessen.
Gruß
Steven