Rsnapshot legt inkrementelle Backups an, ohne den vorhandenen Speicherplatz zu sprengen. Ein Cronjob nimmt Ihnen die lästige Arbeit ab.
Im professionellen Bereich sind Backups Pflicht; Privatleute vergessen hingegen gerne das Sichern der eigenen Daten. Hier hilft Rsnapshot [1] weiter: Einmal eingerichtet, archiviert es automatisch Verzeichnisse des lokalen oder eines entfernten Rechners auf einer lokalen Festplatte oder Partition, einem USB-Stick oder einem Rechner im internen Netz.
Die Archive rotieren im festen Rhythmus, für unveränderte Daten legt Rsnapshot beim inkrementellen Backup Hardlinks an: Das spart Speicherplatz und schont die Ressourcen. Allerdings sichern Sie mit dem Programm keine lokalen Dateien auf einen Rechner im Internet – dafür gibt es Rsync [2].
Installation
Das Quellcode-Archiv von der Heft-CD enthält die neueste Version 1.2.9 von Rsnapshot. Sie entpacken das Archiv und übersetzen das Programm über den Dreischritt ./configure --sysconfdir=/etc, make und – mit Root-Rechten – make install als letzen Befehl. Unter /etc erzeugen Sie dann über den Befehl cp rsnapshot.conf.default rsnapshot.conf eine vollwertige Konfigurationsdatei für das Backup-Programm. Suse-Nutzer finden die neueste Version auf der Rsnapshot-Webseite [1] auch als RPM.
Zentrale Schaltstelle
Sämtliche Einstellungen für Rsnapshot nehmen Sie mit Root-Rechten in der Datei rsnapshot.conf vor. Als Feldtrenner dienen in der Datei Tabulatoren statt Leerzeichen – andernfalls verweigert Rsnapshot den Dienst.
Über die Variable snapshot_root bestimmen Sie, in welchem Verzeichnis die gesicherten Daten landen. Im Beispiel ist das mit /home/backup/ ein lokales Verzeichnis. Möglich wäre es aber auch, andere lokal eingehängte Datenträger, wie ein USB-Stick, eine externen Festplatte oder eine weitere Partition zu nutzen. Auch Samba-Shares und NFS-Freigaben von Rechnern im lokalen Netz erkennt die Software.
Mangels direkter Unterstützung von Netzwerkprotokollen darf snapshot_root aber nicht auf einem Rechner im Internet liegen. Aus Sicherheitsgründen sollte ausschließlich der Benutzer im Datenlager Dateien lesen, schreiben und ausführen dürfen.
Als nächstes widmen Sie sich den weiteren Pfaden. Rsnapshot basiert auf einer Reihe effektiver Werkzeuge wie Cp, Rsync, SSH, Rm und Du. Kommentieren Sie die Pfade zu diesen Werkzeugen aus, damit Rsnapshot sie findet: Ein einfaches which rsync zeigt Ihnen zuvor, ob Ihr Rechner das Programm kennt und wo Sie es finden. In die Zeilen cmd_preexec und cmd_postexec tragen Sie bei Bedarf Pfade zu Skripten ein, die Rsync vor und nach dem Synchronisieren ausführt.
Im Bereich BACKUP INTERVALS legen Sie fest, wie viele Sicherheitskopien Rsnapshot in einem bestimmten Backup-Intervall erstellt (Abbildung 1). Der Eintrag interval hourly 3 sorgt zum Beispiel dafür, dass lediglich drei Ordner mit den Namen hourly.0, hourly.1 und hourly.2 in Ihrem Backup-Ordner rotieren. Beim Archiv mit der Nummer 0 handelt es sich um das aktuellste Backup; kommt ein neues hinzu, zählt Rsnapshot die älteren Archive eine Nummer nach oben.
Hierbei wäre zu beachten, dass die Intervallnamen hourly, weekly und so weiter willkürliche Namen sind, die nicht das tatsächliche Backupintervall festlegen. Die Backupzyklen bestimmen Sie später über einen Cronjob. Beim Backup greift ein Intervall immer auf die Archive des in der Liste darüberstehenden Intervalls zu – oder legt, wenn diese nicht existieren, eigene an.
Folgt also in der rsnapshot.conf der Eintrag interval daily 7, nimmt das Programm das Archiv hourly mit der höchsten Nummer (in diesem Falls hourly.3) und speichert es als Archiv (daily.0). Diese Strategie verfolgt das Programm auch für auf den Eintrag daily folgende Intervalle.

interval bestimmen, wie viele Backups Rsnapshot maximal anlegt.” width=”300″ height=”195″ />
Abbildung 1: Die Einträge nebeninterval bestimmen, wie viele Backups Rsnapshot maximal anlegt. Über verbose und loglevel bestimmen Sie, welche Informationen Rsnapshot von sich preisgibt. Kommentieren Sie den Eintrag logfile /var/log/rsnapshot aus, um den Programmablauf zu protokollieren. Die Parameter include, exclude sowie include-file und exclude-file betreffen Rsync [2].
Die Optionen schließen einzelne Dateien oder Dateitypen ins Backup ein oder nehmen sie heraus. Setzen Sie den Eintrag link_dest auf 1, kopiert das Backup auch spezielle Dateien wie symbolische Links und Device-Dateien. Der Eintrag lockfile bewirkt, dass Rsnapshot immer nur ein Archiv zur Zeit erstellt.
Bündel schnüren
Nun stellt sich die Frage: Welche Dateien wollen Sie sichern? Geht es um einen lokalen Ordner, lautet der Eintrag im Backup-Bereich der Konfigurationsdatei backup /home/daten/ lokal/. Rsnapshot sichert den Ordner /home/daten mit sämtlichen Dateien und Verzeichnissen im Ordner /home/backup/hourly.0/lokal.
Das kommt wie folgt zustande: Nach dem in der Variable snapshot_root festgelegten Verzeichnis erstellt das Tool zunächst ein nach dem festgelegten Intervalltyp benanntes Directory hourly.0. In diesem erzeugt Rsnapshot ein neues Unterverzeichnis lokal/, in dem sich der absolute Pfad zu den Quelldateien befindet.
Um eine einzelne Datei zu archivieren, genügt der Dateiname, wie die Zeile backup /home/bild.jpg lokal/ zeigt. Wollen Sie mehrere Verzeichnisse sichern, erweitern Sie die rsnapshot.conf einfach um die nötigen Backup-Zeilen (Abbildung 2). Um Dateien eines entfernten Rechners lokal zu sichern, brauchen Sie einen SSH-Zugang zum entfernten Rechner und tragen zum Beispiel backup user@remote.org:/home/user/daten/ remote/ in die rsnapshot.conf ein. Das setzt voraus, dass der Zugriff über SSH ohne Passwort erfolgt. Wie das funktioniert, zeigt der Kasten “SSH ohne Passwort”.

Abbildung 2: Über mehrere Backup-Einträge sichern Sie mit Rsnapshot sowohl einzelne Dateien als auch komplette Ordner.
SSH ohne Passwort
Im Beispiel sichern Sie den entfernten Rechner B auf Ihren Rechner A. Erzeugen Sie dazu auf A einen neuen Schlüssel über den Befehl ssh-keygen -t rsa und geben Sie als Dateiname einen Pfad, wie zum Beispiel /home/Username/.ssh/id_rsa_backup ein. Er darf auf keinen vorhandenen Schlüssel zeigen. Beantworten Sie die zwei folgenden Fragen nach dem Passwort mit [Eingabe]. Anschließend finden Sie im Verzeichnis ~/.ssh die neuen Schlüssel id_rsa_backup und id_rsa_backup.pub.
Transportieren Sie den öffentlichen Schlüssel id_rsa_backup.pub von Rechner A nach Rechner B via Scp, Diskette oder USB-Stick. Stellen Sie sicher, dass niemand diesen währendessen manipuliert. Hängen Sie auf Rechner B über den Befehl cat id_rsa_backup.pub >> ~/.ssh/authorized_keys den Schlüssel an die Datei authorized_keys an, sodass dieser Rechner weiß, welchem privaten Schlüssel der Zugang erlaubt ist.
Fügen Sie auf Rechner A im Verzeichnis .ssh in der Datei config den folgenden Abschnitt an:
Host Rechner B IdentityFile ~/.ssh/id_rsa_backup
Jetzt klappt der passwortlose Zugriff von Rechner A auf Rechner B. Vorsicht: SSH erwartet, dass ausschließlich Sie Schreibrechte auf Ihr Home-Verzeichnis, auf das Verzeichnis .ssh sowie die privaten Schlüssel haben. Sonst bricht der Vorgang ab.
Trockenschwimmen
Bevor Sie einen Cronjob einrichten, der das Backup automatisiert, überprüfen Sie Ihre Einstellungen in der rsnapshot.conf und rufen das Programm manuell über das Kommando rsnapshot hourly auf. Klappt alles, erscheint nun unter /home/backup/ ein neuer Ordner hourly.0 – andernfalls verrät eine Fehlermeldung, was nicht funktioniert. Im Zweifelsfall haben Sie einen Ordner falsch benannt oder Leerzeichen statt Tabulatoren verwendet – solche Fehler passieren häufiger.
Funktioniert das Backup, richten Sie einen Cronjob ein: Das setzt voraus, dass der Cron-Daemon läuft. Sie starten ihn mit Root-Rechten über den Befehl:
/etc/init.d/cron start
Nutzer von Ubuntu und Suse legen eine Datei namens rsnapshot im Verzeichnis /etc/cron.d/ ab (Abbildung 3), die folgenden Eintrag enthält:
0 0,10,18 * * * root rsnapshot h? ourly

Abbildung 3: Ein Cronjob startet Rsnapshot zu festgelegten Zeitpunkten, und Sie blicken in eine gesichert Zukunft – zumindest in Bezug auf die Daten.
Debianer tragen diese Zeile in die Datei /etc/crontab ein. Der Eintrag sorgt dafür, dass Cron den Befehl rsnapshot hourly um 0, 10 und 18 Uhr ausführt. Um tägliche Sicherungen zu erreichen, kommentieren Sie auch den Eintrag für daily aus. Weitere Informationen zu Cron finden Sie im Web [3]. Nun heißt es “Fire & Forget”: Läuft die automatische Sicherung einmal, kümmern Sie sich einfach nicht mehr darum – und sind froh wenn Sie das Backup mal brauchen.
Glossar
-
inkrementell
-
Sichert im Gegensatz zum Voll-Backup nur solche Dateien, die sich seit dem letzten Sicherungslauf geändert haben.
Infos
[1] Rsnapshot: http://www.rsnapshot.org
[2] Zu Rsync: Heike Jurzik, “Synchroner Datenstrom”, LinuxUser 04/2006, S. 90, http://www.linux-user.de/ausgabe/2006/04/090-rsync/
[3] Zu Cron: Patricia Jung, “Diener auf die Minute”, LinuxUser 12/2000, S. 80, http://www.linux-user.de/ausgabe/2000/12/080-cron/cron-1.html




