«

»

Jun
25

Backups mit rsync

Sicherst Du schon oder betest Du noch? Als vor einiger Zeit mein Rechner damit anfing, seltsame Geräusche von sich zu geben, mußte ich spontan daran oder an was ähnliches denken. Verdrängung vielleicht. Jedenfalls mußte schnellstens eine Backup-Strategie her… Irgendeine! Denn jedes noch so einfach gestrickte Backup ist besser als gar keins, gell? Für den denkbar einfachsten Fall, eine 1:1 Spiegelung der Daten, ist rsync ein ganz brauchbares Werkzeug.

Wie der Name (“remote synchronize“) schon sagt, kann es auch remote Kopien anlegen. Bei mir kommen allerdings nur ein via CIFS gemounteter Netzwerk-Share und eine mit Ext4 formatierte externe Platte zum Einsatz. Beide werden lokal eingebunden. Im Normalfall würde sich rsync genauso verhalten wie cp und nur eine Kopie aller Daten anlegen. Stattet man den Aufruf aber mit geeigneten Parametern aus, dann ist auch eine inkrementelle Sicherung basierend auf dem modification-timestamp der Dateien möglich. rsync ist sogar so tough, dass es nicht mal die ganze Datei überträgt. Es zerlegt sie in Blöcke, vergleicht die Prüfsummen jedes einzelnen Blocks und überträgt so ausschließlich die geänderten Bestandteile. Richtig groß zahlt sich das erst bei einer remote-Sicherung übers Internet aus. Lokal über USB 2.0 bringt es aber sicherlich auch etwas Performance.

Jetzt zum praktischen Teil. Ein paar Beispiele sind – wie fast immer – besser als tausend Worte.

Beispiel 1: Einfacher Dateitransfer

rsync -rt QUELLE ZIEL

Hierbei werden die Dateien aus QUELLE mit denen in ZIEL synchronisiert. Während -r (“recursive“) bewirkt, dass nicht nur das Verzeichnis QUELLE sondern auch dessen Inhalt in den Abgleich einbezogen wird, sorgt -t (“timestamp“) dafür, dass eine Aktualisierung der Dateien in ZIEL nur dann erfolgt, wenn die Datei in QUELLE einen neueren Änderungs-Zeitstempel hat.

Es spielt durchaus eine gewichtige Rolle, ob QUELLE mit oder ohne Slash am Ende angegeben wird. Ein Aufruf ohne Slash bewirkt, dass im ZIEL-Ordner ebenfalls das Verzeichnis QUELLE angelegt wird und die Dateien darin gespeichert werden. Kurz: Das Wurzelverzeichnis bleibt erhalten. Bei einem Slash am Ende von QUELLE wird stattdessen die Wurzel einfach weggelassen.

Beispiel 2: Datenarchivierung

rsync -av --stats QUELLE ZIEL

Der Parameter -a (“archive“) ist die Zusammenfassung weiterer üblicher Parameter für eine Archivierung der Inhalte von QUELLE:

  • -r (“recursive“): QUELLE wird rekursiv gesichert
  • -l (“links“): symbolische Links (keine Hardlinks !) werden als solche gespeichert
  • -p (“permissions“): die in den Dateien und Verzeichnissen eingestellten Berechtigungen bleiben auch in der Kopie erhalten
  • -t (“timestamp“): der Änderungs-Zeitstempel wird gesichert, so dass zukünftige Abgleiche nur seitdem geänderte Dateien übertragen
  • -g (“group“): die GID (“group-ID“) bleibt erhalten
  • -o (“owner“): die UID (“user-ID“) wird in der Kopie gespeichert
  • -D (“devices“): Gerätedateien, Fifos u.a. sog. “special files” werden als solche in der Kopie abgelegt

Nach der ersparten Schreibarbeit wird rsync durch das -v (“verbose“) noch etwas gesprächiger und gibt eine Liste der übertragenen Dateien und Verzeichnisse auf STDOUT aus. Das abschließende –stats sorgt noch für ein Statistik-Summary am Ende der Übertragung.

Beispiel 3: Aufräumen, Teil 1 – die Axt-Variante

rsync -av --delete [-n] QUELLE ZIEL

Im Normalfall werden Dateien, die in QUELLE gelöscht wurden, nicht automatisch in ZIEL entfernt. Mit –delete erfolgt die Anweisung, eben genau das zu tun. Weil das Kommando aber mit Vorsicht zu genießen ist, sollte man vorher zur Sicherheit eine Trockenübung fahren: -n (“dry-run“) ist ein solcher Testlauf. In Verbindung mit -v sieht man eine Liste der Änderungen ohne das tatsächlich irgendwelche Dateien angefaßt werden. Ist man mit dem Ergebnis einverstanden, läßt man beim nächsten Aufruf einfach das -n weg.

Beispiel 4: Aufräumen, Teil 2 – die sanfte Tour

rsync -avz --delete -b --suffix=SFX --backup-dir=BKPDIR QUELLE ZIEL

Anstelle der oben beschriebenen Axt-Lösung, kann mit -b (“backup“) auch auf die sanftere Variante verfahren werden: eine Kopie der zu löschenden Dateien anstatt sie direkt von der Platte zu putzen. Per default werden die Dateien nun in ZIEL umbenannt und ein Tilde-Symbol (~) an den Dateinamen rangehängt. Mit –suffix kann ein alternativer Suffix gewählt werden. Über die Option –backup-dir ist es sogar möglich, eine Art Mülleimer-Funktion anzuwenden: die Dateien werden dann in diesen Ordner verschoben.

Beispiel 5: Unnötiges vom Backup ausschließen

rsync -av --exclude-from=FILENAME --stats QUELLE ZIEL

Über die Option –exclude-from kann eine Datei mit Dateinamens-Mustern angegeben werden, die vom Backup auszuschließen sind.

1 Kommentar

  1. Basti sagt:

    Mensch war ich lange nicht hier. Schöne, übersichtliche & knackige Zusammenfassung von rsync.

Hinterlasse eine Antwort

Ihre E-Mail-Adresse wird nicht veröffentlicht.

Sie können diese HTML-Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">