Da Didis RSS-Feed mir ständig Berichte über irgendwelche verquasten Datensicherungslösungen auf den Bildschirm schmiert, ein Bericht über das gute Programm rsync, das in nahezu allen Belangen die Konkurrenten auf die Plätze zu verweisen vermag, jedoch bis heute ausgeblieben ist, mache ich das jetzt selbst.
rsync sollte jedem Linuxnutzer bekannt sein; andernfalls sind auch sie natürlich herzlich dazu eingeladen, diesen Artikel aufmerksam zur Kenntnis zu nehmen. Der Unterschied in der Bedienung liegt lediglich in den in den Beispielen genannten Pfadangaben; /cygdrive/c/ antspricht unter Linux etwa /.
Das Programm rsync ist eine Kommandozeilenanwendung für die inkrementelle oder vollständige Sicherung auf lokale oder Netzwerkdatenträger. Es beherrscht auch das Kopieren von symbolischen Verknüpfungen, ohne ihre Funktionsfähigkeit einzuschränken, und kann Daten unter anderem auch über SSH oder eine spezielle Client-Server-Konfiguration (dazu – auf Englisch – hier mehr) auf irgendwo auf der Welt herumstehende Server sichern. Das Hübsche ist zudem: Es lässt sich vollständig über Batchdateien, Windows-Konsolenskripte also, steuern und somit ohne großen Aufwand zur Zusammenarbeit mit der Windows-Aufgabenverwaltung bewegen.
Standardmäßig arbeitet rsync inkrementell, findet es also im Zielverzeichnis Dateien, die es aus dem Quellverzeichnis kopieren soll, so kopiert es nur etwaige Unterschiede zwischen diesen Dateien und überträgt nicht die vollständige Datei erneut.
Der Einfachheit dieser Anleitung wegen beschränke ich mich hier auf die für Endanwender wohl primär bedeutsame inkrementelle Sicherung auf ein anderes Laufwerk, in meinem Fall eine externe Festplatte („G:\“).
Zunächst ist es empfehlenswert, rsync herunterzuladen. Ich nutze hierbei cwrsync, eine spezielle Windows-Version von rsync, die das Cygwin-System nutzt. Aktuell ist derzeit Version 4.0.5, die Anleitung sollte aber so auch für künftige Versionen funktionieren. Die Installation ist übrigens portabel, der Installationspfad ist somit beliebig wählbar.
Nun kann es sicher nicht schaden, sich einmal mit den Optionen von rsync zu befassen. Zwar gibt es mittlerweile grafische Oberflächen für rsync, aber für die Wartung von Konfigurationsskripten und die Automatisierung der Sicherung sind Batchdateien eher zu empfehlen, siehe auch meine kleine Einführung in das ExifTool.
Im Installationsordner von cwrsync liegt bereits eine Datei namens cwrsync.cmd. Diese beinhaltet bereits alle notwendigen Optionen und ist, für die Neugierigen unter euch, (auf Englisch) umfassend dokumentiert. Kopiert sie irgendwohin, zum Beispiel auf euren Desktop, und öffnet sie von dort (um das Original jederzeit wiederherstellen zu können) mit einem Texteditor eurer Wahl. Bei Interesse lest die Kommentare, ansonsten scrollt ganz ans Ende der Datei.
Grundsätzlich sieht ein rsync-Befehl so aus:
rsync [Optionen] [Quelle] [Ziel]
Quelle und Ziel stellen jeweils Pfadangaben dar und sollten, sofern sie Leerzeichen beinhalten, mit Anführungsstrichen umschlossen werden. Da rsync in einer simulierten Linuxumgebung läuft, muss den Laufwerken allerdings /cygdrive/ vorangestellt werden. Möchte man etwa den Ordner C:\Windows sichern, so lautet die Pfadangabe /cygdrive/c/Windows.
Die wichtigsten Optionen lauten:
- -r: verarbeitet die Quelle rekursiv, das heißt, kopiert alle Unterverzeichnisse und enthaltenen Dateien ins Zielverzeichnis
- -c: erstellt Prüfsummen der übertragenen Dateien, um etwaige Übertragungsfehler zu erkennen
- -n: simuliert den Vorgang (empfehlenswert zum Feinjustieren der Einstellungen)
- -u: überspringt Dateien, die im Zielverzeichnis in einer neueren Version vorliegen
- -v: gibt detaillierte Informationen über den aktuellen Vorgang aus
- –delete: löscht Dateien aus dem Zielverzeichnis, die im Quellverzeichnis nicht mehr vorhanden sind
- –exclude=…: schließt die Dateien oder Ordner „…“ aus
Eine vollständige Liste aller möglichen Optionen ist auf der englischsprachigen manpage zu rsync zu finden.
Zum besseren Verständnis folgt eine Beispielzeile aus meinem eigenen Backup-Skript. Ich möchte meine „Eigenen Dateien“ („C:\Users\admin\Documents“) mit Ausnahme des Verzeichnisses „FH“ vollständig auf meine externe Festplatte sichern. Symbolische Verknüpfungen, wie sie ab Windows Vista fester Bestandteil des Systems geworden sind (der Ordner „Programme“ ist etwa eine symbolische Verknüpfung auf „Program Files“), sollen beibehalten bleiben. Die Zeile sieht so aus:
rsync -urzvp --delete --exclude=/FH --copy-links "/cygdrive/c/Users/admin/Documents/" "/cygdrive/g/backup/Eigene Dateien"
Alle Inhalten der von mir gewünschten Ordner werden so rekursiv in das Backupverzeichnis „Eigene Dateien“ gesichert. Was ich im Quellverzeichnis nicht mehr benötigte, wird auch im Zielverzeichnis gelöscht.
Ich empfehle meiner hoffentlich interessierten Leserschaft, einfach mal ein wenig mit rsync herumzuspielen (nicht die Option -n vergessen!). Die meisten von euch werden bald erkennen, dass es völlig überflüssig ist, hart ergaunertes Geld den Herstellern proprietärer Sicherungsprogramme in den Rachen zu werfen.
Eine letzte Anmerkung: rsync arbeitet unidirektional, das bedeutet, dass es nur Dateien von A nach B oder von B nach A kopieren, nicht aber zwei Verzeichnisse miteinander abgleichen („synchronisieren“) kann. Für diesen Zweck ist das technisch ähnliche unison einen Blick wert.
Ich wünschte, ich könnte Dir eine schmieren…pöh…Elender…aber kriegt die Email-Benachrichtigung nicht auf die Reihe…Amateur…
Liegt an WordPress, wird dir auch noch passieren, wart’s ab …
Jehova! Jehova! TL;DR Ich mag Wurst.