Backup mit rsync


Wer seine Daten auf einem Server ablegt, sollte auch ein regelmäßiges Backup einrichten. Bei den heutigen Datenmengen sind Bandlaufwerke oder gar das Brennen auf CD/DVD kaum noch sinnvoll. Glücklicherweise sind Festplatten inzwischen so günstig, dass es sich lohnt, den Serverinhalt einfach zu spiegeln. Das hat einige Vorteile: Man benötigt keine Spezialhardware und kann jederzeit schnell auf das Backupzugreifen, wenn es nötig wird.

Sicher ist sicher - Mehrfachbackup mit Platzersparnis

Ein Backup ist nur sinnvoll, wenn nicht nur der Stand des letzten Tages, sondern möglichst auch frühere Versionen der Dateien gespeichert werden. Ein solches Backup führt aber schnell zu sehr großen Datenmengen. Sinnvoll ist also ein Backup, das nur geänderte Dateien erneut speichert. Um dennoch täglich ein komplettes Backup zu erzeugen, gehen wir in zwei Schritten vor:
Zuerst rotieren wir die alten Backups nach hinten, und erzeugen eine komplette Kopie des letzten Backups. Für diesen Schritt verwenden wir Hardlinks; diese haben den Vorteil, dass jede Datei zwar zweimal vorhanden ist, aber nur einmal Platz beansprucht.
Im zweiten Schritt gleichen wir mit rsync den Serverinhalt mit unserem neuen Backupverzeichnis ab. Nun werden nur die Dateien, die sich geändert haben, neu auf der Festplatte gespeichert.
Diese Vorgehensweise ermöglicht es ein Backup über mehrere Tage vorzuhalten, ohne dass Speicherplatz verschwendet wird.
Ein Nachteil dieser Methode soll auch nicht verschwiegen werden: Da eine unveränderte Datei nur einmal auf der Festplatte gespeichert wird, reagiert das Backup sehr empfindlich auf Defekte. Um die Datensicherheit zu gewährleisten, empfehle ich deshalb den Einsatz eines RAID-Systems.

Aufbau

Für den Beispielaufbau gehen wir von zwei Rechnern aus: einem Fileserver (192.168.0.10) und einem Backupserver. Auf beiden Rechnern läuft ein Samba-Server, über den das Verzeichnis "/srv/smb" freigegeben ist. Diese Freigabe ist beim Backup natürlich read-only.
Der Backupserver kann auf die Quelldaten auf verschiedene Weise zugreifen. Die einfachste Möglichkeit, die wir auch für dieses Beispiel verwenden, ist ein NFS-Share. Dieses muss auf dem Fileserver eingerichtet werden. Zusätzlich erzeugen wir auf dem Backupserver das Verzeichnis "/mnt/fileserver"; hier hängen wir das NFS-Share später ein.
Das Backupskript erledigt sowohl das Backup als auch das Rotieren; beide Schritte können einzeln oder gemeinsam ausgeführt werden.
Dieses Skript müssen wir nun regelmäßig (z. B. durch einnen CRON-Job) ausführen.
Der Befehl hierfür lautet
# mwbackup -b -r -s /mnt/fileserver/ -d /srv/smb/fileserver -nfs 192.168.0.10:/srv/smb
Zu beachten ist der Backslash am Ende des Quellverzeichnisses; er sorgt dafür, dass nur der Inhalt des Verzeichnisses gesichert wird, nicht das Verzeichnis selbst.
Wer nur ein Backup fahren oder rotieren oder möchte, wählt entsprechend
# mwbackup -b -s /mnt/fileserver/ -d /srv/smb/fileserver -nfs 192.168.0.10:/srv/smb
oder
# mwbackup -r -d /srv/smb/fileserver
Das letzte Backup befindet sich immer im Verzeichnis "daily.1". Das Verzeichnis "daily.0" wird für das nächste Backup benötigt.

Im Skript selbst können noch einige Variablen angepasst werden. So kann das das Dateisystem, auf dem sich das backup befindet, normalerweise read-only gemountet sein; auch kann eine Mail-Adresse angegeben werden, an die Fehler gesendet werden.

Links

Idee und Originalskript bei Heinlein

Downloads

mwbackup (7 KB)

Kommentar erstellen


© Martin Walter Computerservice
Alle Rechte vorbehalten
Vervielfältigung nur mit Genehmigung von Martin Walter