rsync unter Windows

Unter Linux kann ich mit rsync sehr einfach und schnell meine Dateien von „A“ nach „B“ synchronisieren. Leider habe ich unter Windows kein vergleichbares Tool gefunden. Zwar bietet Microsoft mit SyncToy ein ähnliches Tool an, aber dies hat einige Tücken. Zum einen habe ich schon mehrfach festgestellt das nicht alle Daten kopiert wurden oder auf der Quelle nicht mehr vorhandene Dateien bzw. Verzeichnisse auf dem Ziel gelöscht werden. Ich muss aber zugeben, dass ich noch Version 2.0 einsetze und laut Changelog soll das Problem mit dem löschen in Version 2.1 behoben worden sein. Die Version 2.1 ist erst vor kurzem erschienen.

Mit der Hilfe von Cygwin habe mich mir das rsync-Tool nach Microsoft Windows portiert. Damit auch andere Anwender rsync unter Windows nutzen können, habe ich alle benötigten Dateien in ein ZIP-Archiv gepackt, welches man hier herunterladen kann und dann nur noch entpacken muss. Eine Installation ist nicht erforderlich.

Anwendungsbeispiel 1:

Als erstes muss die Datei rsync.zip unter C:\Programme entpackt werden. In diesem Verzeichnis befindet sich die Datei backup.cmd welche bereits ein Beispiel enthält. Die Datei kann im Wordpad oder einem anderen Texteditor zum bearbeiten geöffnet werden.

Mit rsync soll der Inhalt des Datenverzeichnis „C:\Datenhalde“ auf eine externe USB-Festplatte „Z:\Backup“ synchronisiert werden. Der entsprechende Aufruf sieht wie folgt aus:

rsync.exe -a -v –delete /cygdrive/C/Datenhalde/ /cygdrive/Z/Backup

Durch Linux-Emulation von Cygwin muss vor jeder Pfadangabe „cygdrive“ vorangestellt und anstatt der Backslashs müssen Slashs verwendet werden. Befindet sich ein Leerzeichen im Pfad, dann muss der kompletten Pfad in Anführungszeichen gesetzt werden.

Nach dem abspeichern der Datei backup.cmd kann diese nun per Doppelklick ausgeführt werden. Nun öffnet sich ein DOS-Fenster und die Synchronisation wird abgearbeitet. Dies dauert je nach Anzahl und Größe der Dateien die kopiert werden sollen unterscheidlich lange. Besonders beim ersten ausführen der Synchronisation nimmt dieser Prozess etwas mehr Zeit in Anspruch. Nicht mehr auf der Quelle vorhandene Daten werden auf dem Ziel automatisch gelöscht.

Für Unix-Befehle ist es ein Unterschied, ob man Verzeichnisse mit oder ohne einem trailing slash adressiert. Dies wirkt sich auch auf die Verwendung von rsync aus. Endet die Quellenangabe nicht mit einem Slash, wird auch das Verzeichnis selbst kopiert. Endet die Quellenangabe aber mit einem Slash, wird der Inhalt des Verzeichnis kopiert und nicht das Verzeichnis selbst.

Anwendungsbeispiel 2:

Man kann auch ganze Verzeichnisse und bzw. oder Dateimuster angegeben, die nicht mit gesichert werden sollen. Möchte man nur ein einziges Unterverzeichnis nicht mit syncroniseren, kann man dies mit der Option „–exclude“ erledigen. Der Aufruf in der Datei backup.cmd sieht dann wie folgt aus:

rsync.exe -a -v –delete –exclude=downloads /cygdrive/C/Datenhalde/ /cygdrive/Z/Backup

Nun wird das Verzeichnis C:\Datenhalde\downloads samt Inhalt nicht kopiert.

Möchte man mehrere Verzeichnisse von der Synchronisation ausschließen, nutzt man die Option „–exclude-from“. In die Datei excludes.txt werden alle Verzeichnisse und Dateimuster angegeben die nicht mit gesichert werden sollen. Das Ganze sieht etwa so aus:

UnterverzeichnisA
UnterverzeichnisB
UnterverzeichnisC

Der Aufruf in der Datei backup.cmd sieht dann wie folgt aus:

rsync.exe -a -v –delete –exclude-from=excludes.txt /cygdrive/C/Datenhalde/ /cygdrive/Z/Backup

Rsync bietet noch viel mehr nützliche Optionen. Ein Blick in die man page von rsync gibt entsprechend Auskunft.

Die verwendete Version von Rsync ist 3.0.6.

Ein Gedanke zu „rsync unter Windows

  1. noggerl

    Meines Wissens nach hat robocopy (http://en.wikipedia.org/wiki/Robocopy) ähnliche Funktionen wie rsync, aber cool, dass du dir die Mühe gemacht hast. Jetzt muss ich mich ned an die krude Syntax dieses MS-Tools gewöhnen, falls ich mal unter Windows Verzeichnisse synchronisieren möchte.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

* Die DSGVO-Checkbox ist ein Pflichtfeld

*

Zustimmung zur Datenspeicherung lt. DSGVO