AA_snapshot_sxc903388_VivekChugh.jpg

© Vivek Chugh, sxc.hu

Schnappschuss

Backups mit Rsnapshot

20.07.2011
Mit Rsnapshot legen Sie auf einfache Art sowohl lokale Backups als auch Sicherungen auf entfernten Maschinen an. Das Rotationsprinzip des Tools gibt Ihnen dabei schnellen Zugriff auf ältere Dateiversionen.

Das "R" in Rsnapshot [1] lässt dessen Herkunft bereits erahnen – die Backup-Software baut auf Rsync auf, also auf ein bewährtes Werkzeug zur Datensynchronisation. Statt blind sämtliche Verzeichnisse zu archivieren, beherrscht Rsync verschiedene Mechanismen, anhand derer es neue oder geänderte Dateien erkennt und dann platzsparend nur die Änderungen überträgt. Viele Administratoren binden nicht zuletzt deswegen schon lange Rsync in die eigene Backupstrategie ein. Doch die Vielzahl der Rsync-Optionen überfordert gerade Einsteiger schnell. Wohl aus diesem Grund spendierten die Entwickler von Rsnapshot der kryptischen Rsync-Kommandozeile eine einfache Konfigurationsmöglichkeit.

Rsnapshot sichert sowohl lokale als auch entfernte Dateien und beherrscht zudem das Einbinden externer Tools, beispielsweise für MySQL-Dumps. Es kennt verschiedene Intervalle und legt die Sicherungen gruppiert und nach Alter sortiert ab. Durch dieses Rotationsprinzip haben Sie stets Zugriff auf mehrere vergangene Dateiversionen, wobei Sie die Anzahl der vorgehaltenen Intervalle frei wählen können – beispielsweise drei stündliche, sieben tägliche, vier wöchentliche, und zwei monatliche Backups. Der eigentliche Clou: Rsnapshot überträgt nur die seit dem letzten Durchlauf geänderten Dateien. Das schont nicht nur Plattenplatz, sondern auch die Netzwerkbandbreite.

Installation und Konfiguration

Auf unserem Testsystem, einem Server unter Ubuntu 10.04 LTS, ging die Installation dank fertiger Pakete schnell von der Hand. Ein simples apt-get install rsnapshot befördert das Programm auf das System. Anschließend legen Sie mittels touch /etc/rsnapshot.exclude eine leere Exclude-Datei an (dazu später mehr) und sperren sie mittels chmod 711 /etc/rsnapshot.exclude vor allzu neugierigen Blicken. Damit ist die Installation bereits abgeschlossen.

Die Konfiguration selbst nehmen Sie in /etc/rsnapshot.conf vor. Beim Bearbeiten im Editor Ihrer Wahl gilt es unbedingt zu beachten, dass Rsnapshot als Trennzeichen zwischen den einzelnen Optionen zwingend einen Tabulator erwartet – greifen Sie indes aus Gewohnheit auf das Leerzeichen zurück, verweigert das Backupwerkzeug seinen Dienst. Wichtig ist auch, dass Sie Verzeichnisnamen entgegen der üblichen Konvention stets mit einem Slash abschließen. Die einzelnen Optionen sind gut dokumentiert.

Zunächst wählen Sie ein Backup-Wurzelverzeichnis (snapshot_root) – auf unserem Testsystem liegt es auf einem RAID-System, wir benutzen dazu das Verzeichnis /backup/snapshots/ (beachten Sie den abschließenden Slash). Für externe Geräte wie USB-Festplatten ist zusätzlich die Option no_create_root von Interesse. Rsnapshot greift bei Bedarf auch auf eine ganze Reihe von externen Hilfsmitteln zurück, die Sie in der Konfiguration zusätzlich aktivieren. Auf unserem Testsystem betraf das die Optionen cmd_cp und cmd_du (die Pfade zu den Tools cp und du) mit den entsprechenden Vorgabewerten sowie cmd_ssh mit /usr/bin/ssh und cmd_rsnapshot_diff mit /usr/bin/rsnapshot-diff.

Der Übersichtlichkeit halber aktivieren Sie auch rsync_short_args, rsync_long_args und du_args. Die Option exclude_file sollte auf das vorab angelegte Excludes-File in /etc/rsnapshot.exclude zeigen, und zum Schluss setzen Sie link_dest[Tab]1.

Fehler in Ubuntu 10.04

In der aktuellen LTS-Version von Ubuntu hat sich ein kleiner Fehler eingeschlichen – Logrotate rotiert nur /var/log/rsnapshot.log, während die Rsnapshot gemäß seiner Standardkonfiguration diese Datei ohne Endung .log anlegt. Das führt dazu, dass die Protokolldatei sehr groß wird und schließlich die Festplatte überläuft. Die einfachste Lösung des Problems: Benennen Sie die Datei in der Rsnapshot-Konfiguration mittels logfile[Tab]/var/log/rsnapshot.log wie von Ubuntu erwartet.

Am Rotieren

Nach Abschluss der Grundkonfiguration ist es an der Zeit, zunächst die einzelnen Rotationszyklen mittels interval zu konfigurieren. Für den privaten Einsatz hat es sich bewährt, Backups in stündlichen und täglichen Zyklen anzulegen, was Sie mit der folgenden Konfiguration bewerkstelligen:

interval        hourly  2
interval        daily   7

Damit hält Rsnapshot jeweils zwei Revisionen des stündlichen Backups vor sowie sieben Ausgaben der Tagessicherung, also eine volle Woche. Analog konfigurieren Sie bei Bedarf auch die anderen Intervalle.

Nun teilen Sie Rsnapshot noch mit, was es eigentlich sichern soll – der dazugehörige Parameter heißt naheliegenderweise backup. Falls bloßes Kopieren nicht reicht, binden Sie Skripts mittels backup_script ein. Auch hier müssen Sie alle Parameter per Tabulator trennen und alle Pfadnamen mit einem Slash abschließen. Ein Beispiel zeigt Listing 1. Dessen Zeilen weisen Rsnapshot an, die wichtigsten System- und Datenverzeichnisse der lokalen Ubuntu-Installation zu sichern. Der erste Parameter gibt dabei das zu sichernde Verzeichnis an, der zweite Parameter das Unterverzeichnis innerhalb des Backupverzeichnisses (snapshot_root).

Listing 1

backup  /opt/   webserver.local/
backup  /root/  webserver.local/
backup  /srv/   webserver.local/
backup  /var/   webserver.local/
backup  /home/  webserver.local/
backup  /etc/   webserver.local/
backup  /usr/local/     webserver.local/
backup  /lib/ufw/       webserver.local/

Ähnlich verhält es sich mit backup_script (Listing 2): Die ersten beiden Zeilen sichern die aktuelle Quota-Tabelle in die Datei webserver.local/dumps/repquota.user bzw. repquota.group, der Befehl in der dritten Zeile tut dies für die Liste der installierten Pakete. Auch Dumps von MySQL- oder PostgreSQL-Datenbanken sind möglich, wie Zeile 4 beweist. Achten Sie aber darauf, gegebenenfalls die Berechtigung der rsnapshot.conf anzupassen und separate Backup-Benutzer für MySQL zu verwenden, damit ein möglicher Angreifer nicht etwa Root-Zugriff auf die Datenbank erhält.

Listing 2

backup_script   /usr/sbin/repquota -avcsu > repquota.user       webserver.local/dumps/repquota.user
backup_script   /usr/sbin/repquota -avcsg > repquota.group      webserver.local/dumps/repquota.group
backup_script   /usr/bin/dpkg --get-selections > packages.lst   webserver.local/dumps/packages.lst
backup_script   /usr/bin/mysqldump --all-databases --complete-insert --user=backup --password=12345 > mysql.dump        webserver.local/dumps/mysql

Haben Sie die Rotationszyklen und die zu sichernden Daten in der rsnapshot.conf konfiguriert, starten Sie einen ersten Testlauf. Führen Sie dazu als Root rsnapshot -v hourly aus. Nach einer Weile meldet Rsnapshot den erfolgreichen Backuplauf.

Ein Blick ins Backup-Wurzelverzeichnis fördert bei Erfolg das Unterverzeichnis hourly.0 zutage. Unterhalb dieses Verzeichnisses legt Rsnapshot die Kopien ab – /lib/ufw beispielsweise in hourly.0/lib/ufw, die Ergebnisse der Backupskripte entsprechend im dumps-Verzeichnis. Die angehängte Null zeigt an, dass es sich dabei um das erste stündliche Backup in der Rotation handelt.

Rufen Sie jetzt rsnapshot -v hourly erneut auf, gesellt sich ein zweites Verzeichnis dazu – Rsnapshot verschiebt das bisherige hourly.0 nach hourly.1 und befüllt das .0-Verzeichnis neu. Dieser Prozess setzt sich solange fort, bis die Maximalzahl an Rotationszyklen erreicht ist. Danach entfernt Rsnapshot beim Durchlauf das jeweils älteste Verzeichnis.

Genauso verhält es sich mit anderen Intervallen, wie etwa den täglichen oder wöchentlichen Backups: Ein Blick in die Verzeichnisse mit .0 öffnet den Zugriff auf die jeweils jüngste Sicherung; je höher die Zahl ausfällt, desto älter ist die Kopie.

Löschen dürfen Sie bestimmte Verzeichnisse indes nicht, denn Rsnapshot verbindet diese mit Hardlinks untereinander. Beim Backup-Lauf sichert Rsnapshot jeweils nur die neuen Dateien, für bereits bestehende verweist es aufs Nachbarverzeichnis. So liegen im Beispiel alle Mails seit dem letzten Durchlauf in hourly.0, ältere Mails sind nur in hourly.1 gespeichert.

Ausnahmegenehmigung

Nicht immer ist es sinnvoll, alle Daten zu speichern. Von manchen Dateien benötigen Sie schlichtweg kein Backup (etwa von Cache-Dateien), manche anderen lassen sich aus dem laufenden Betrieb nicht sichern, beispielsweise Disk Images von virtuellen Maschinen. Derartige Ausnahmen konfigurieren Sie in der Datei /etc/rsnapshot.exclude. Tragen Sie dort pro Zeile eine Datei oder ein Verzeichnis ein, das Rsnapshot nicht erfassen soll. Ein Beispiel dazu gibt Listing 3.

Listing 3

/home/mirrorbrain/LOCK-mirrorprobe
.mhonarc.lck
*.vdi
*.cache

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Backups ziehen mit Rsnapshot
    Rsnapshot legt inkrementelle Backups an, ohne den vorhandenen Speicherplatz zu sprengen. Ein Cronjob nimmt Ihnen die lästige Arbeit ab.
  • Die 21 besten Backup-Tools
    Linuxlinks.com hat einen Artikel zu den 21 besten freien Backup-Tools veröffentlicht. Er liefert eine kompakte Übersicht über grafische und Kommandozeilentools.
  • Frisch serviert
    Warum Ihren ausgemusterten PC im Wertstoffhof entsorgen? Richten Sie ihn besser als kleinen Server ein, der die wichtigsten Dienste im Heimnetz offeriert.
  • Zum halben Preis
    Wer Platz und Zeit sparen will, muss nicht auf Komfort verzichten: Das clevere Backup-Skript Ccollect produziert komfortable Vollbackups schnell und auf kleinem Raum.
  • Datenschubser
    Schnell mal ein Backup einrichten? Mit Sbackup und seiner grafischen Oberfläche archivieren Sie wichtige Daten im Handumdrehen.
Kommentare
Typo?
Lutz (unangemeldet), Donnerstag, 21. Juli 2011 09:18:38
Ein/Ausklappen

".. sperren sie mittels chmod 711 /etc/rsnapshot.exclude vor allzu neugierigen Blicken .."
Das sollte doch wohl "chmod 600 /etc/rsnapshot.exclude " heissen,
711 ist für eine Exclude-Datei unsinnig.

Gruß,
Lutz


Bewertung: 123 Punkte bei 10 Stimmen.
Den Beitrag bewerten: Gut / Schlecht
-
Re: Typo?
Florian Effenberger, Donnerstag, 21. Juli 2011 14:11:48
Ein/Ausklappen

In der Tat - da hat sich wirklich ein Fehler eingeschlichen. Die rsnapshot.exclude sollte vor neugierigen Blicken geschützt werden, weil ein Angreifer unter Umständen sonst Informationen über die Dateistruktur erhält. Da rsnapshot ohnehin als root laufen muss, genügt ein chmod 600 der Datei - root darf lesen und schreiben, alle anderen haben keinen Zugriff. chmod 711 ist natürlich falsch - danke für den Hinweis!


Bewertung: 135 Punkte bei 14 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 12/2014: ANONYM & SICHER

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...