Hübsch verschnürt
Ein Backup ist allemal besser als keins. Doch Datensicherung ist oft ein mühseliges Geschäft – vor allem, wenn es an das Wiederherstellen von Dateien geht. Bequemer als mit dump, tar, zip und Co. geht es mit dem Open-Source-Paket storeBackup.
- Michael Riepe
Es geistert eine Vielzahl von Backup-Skripts durch das Internet. Meist beschränken sie sich jedoch darauf, Dateien mit dump oder tar zu einem Paket zusammenzuschnüren und das auf einem anderen Datenträger abzulegen. Spätestens beim Restore endet aller Komfort – insbesondere, wenn der Nutzer aus einer Serie von Backups einzelne Dateien wiederherstellen muss. Kopiert man den Datenbestand hingegen mit cp –r regelmäßig auf eine externe Festplatte, lassen sich zwar Dateien und Verzeichnisse leicht wiederherstellen. Das Backup dauert jedoch lange, und die gesicherten Daten nehmen unnötig viel Platz weg.
An diesem Punkt setzt storeBackup an. Das in Perl geschriebene Programm kopiert nur neue und geänderte Dateien. Solche, die seit der letzten Sicherung unverändert geblieben sind – erkennbar an ihrer MD5-Prüfsumme –, ersetzt es durch Hardlinks auf die bereits gesicherten Versionen. Das Backup-Laufwerk muss deshalb mit einem Dateisystem formatiert sein, das „harte“ Links unterstützt. Alternativ kann man als Repository ein Verzeichnis auf einem NFS-Server verwenden.
Einmal speichern genügt völlig
Einzelne Backup-Jobs lassen sich mit Konfigurationsdateien definieren. Die zahlreichen Optionen des Programms – die sich auch auf der Kommandozeile verwenden lassen – sind in der Datei README erklärt. Anfänger sollten mit storeBackup.pl –g <datei> ein kommentiertes Template erzeugen und nach ihren Wünschen editieren. Anschließend können sie mit storeBackup.pl –f <datei> das Backup ausführen.
Listing 1 zeigt eine Konfiguration für die Sicherung der Systemdateien. Home-Verzeichnisse der Nutzer und Verzeichnisse, die temporäre Dateien enthalten, schließt exceptDirs aus dem Backup aus. cpIsGnu teilt dem Programm mit, dass es sich bei cp um die Gnu-Version handelt – sie besitzt einige Fähigkeiten, die der klassischen Variante fehlen. Die Vorhaltezeit kann der Nutzer mit keepAll einstellen. Fehlt der Parameter, löscht storeBackup automatisch alle Backups, die älter sind als 30 Tage. Die jeweils erste oder letzte Sicherung eines Jahres, eines Monats oder einer Woche kann der Nutzer per Option unbegrenzt lang aufheben. Außerdem lässt sich für die Backups bestimmter Wochentage eine abweichende Vorhaltezeit einstellen.
Die Option series weist das Programm an, für die Sicherung ein eigenes Unterverzeichnis im Backup-Repository anzulegen. Standardmäßig gehen alle Backups nach default. Wer mehrere Rechner oder Systembereiche unabhängig voneinander sichern will, sollte für jeden einen eigenen Namen wählen. Der Parameter otherBackupSeries gibt an, welche Sicherungen storeBackup nach identischen Dateien durchsuchen soll. Voreingestellt ist das jeweils letzte Backup aller Serien; 0:system beschränkt die Suche auf die zuletzt durchgeführte Sicherung der Serie system. Vor dem Doppelpunkt darf auch ein Intervall wie 0-2 – die letzten drei Backups – oder das Schlüsselwort all stehen.
Sicherung im Schnelldurchlauf
Ein vollständiges Backup mit storeBackup dauert lange und benötigt obendrein viel Rechenzeit, weil das Programm alle Dateien mit bzip2 komprimiert, um Platz zu sparen. Mit den zusätzlichen Optionen lateLinks = yes und lateCompress = yes lassen sich das Anlegen der Links und das Komprimieren der Dateien auf einen späteren Zeitpunkt verschieben. Mit storeBackupUpdateBackup.pl - -backupDir <backupdir> kann der Nutzer das Versäumte nachholen – allerdings darf währenddessen keine Datensicherung laufen. Außerdem kann das Programm mit der Option - -autorepair Inkonsistenzen im Repository beseitigen, die etwa nach einer fehlgeschlagenen Sicherung auftreten können.
Wer Daten zum Beispiel von einem Laptop per NFS auf einen schnelleren Server sichert, kann storeBackupUpdateBackup.pl auch auf dem Server laufen lassen. Das empfiehlt sich vor allem, wenn der über mehrere Prozessoren verfügt: storeBackup nutzt automatisch alle verfügbaren CPUs.
Einzelne Dateien lassen sich wiederherstellen, indem man sie aus dem Backup-Repository kopiert und gegebenenfalls mit bunzip2 entpackt. Für ein Restore ganzer Verzeichnisbäume eignet sich das mitgelieferte Programm storeBackupRecover.pl besser. storeBackupRecover.pl –r <backupdir>/<serie>/<datum> –t /tmp/restore kopiert die angegebene Sicherung nach /tmp/restore, entpackt alle komprimierten Dateien und stellt Links, Zeitstempel und Zugriffsrechte der Originaldateien wieder her. Unterverzeichnisse oder einzelne Dateien lassen sich ebenfalls auf die Art aus dem Backup zurückholen.
Listing 1: Konfigurationsdatei für storeBackup
sourceDir = /
backupDir = /tmp/backup
series = system
otherBackupSeries = 0:system
exceptDirs = home root tmp var/tmp var/spool
cpIsGnu = yes
#keepAll = 30d
(mr)