Rsync unter Windows
From NJH-Wiki
- Autoren
- Volker Grabsch
- Frank Prößdorf
rsync
ist ein kassisches Unix-Werkzeug,
um regelmäßig bestimmte Dateien hochzuladen.
Es arbeitet sehr effizient
und ist dazu gedacht,
von Scripten gestartet zu werden.
cwRsync ist eine Windows-Version dieses Werkzeugs. Diese Howto zeigt, wie man cwRsync unter Windows benutzt. Dazu bauen wir ein ganz einfaches Script zum Hochladen einer Internetseite.
Contents |
Ziel-URL
Die Ziel-URL ist eine Kurzform der Zugangsdaten. Sie setzt sich wie folgt zusammen:
Benutzername @ Servername : Zielverzeichnis
Haben wir zum Beispiel die Zugangsdaten:
- Servername: meine-domain.de
- Benutzer: hans
- Zielverzeichnis: websites/meine-domain/
Dann lautet die Ziel-URL:
hans@meine-domain.de:websites/meine-domain/
Hochladen
cwRsync herunterladen, entpacken und installieren:
- cwRsync 2.0.9 (2,9 MB)
Eine neue Datei auf dem Desktop anlegen:
hochladen.bat
Diese Datei mit Notepad öffnen und folgendes hineinschreiben:
@echo off set CYGWIN=nontsec set PATH=Installations-Verzeichnis von cwRsync\bin;%PATH% cd "Verzeichnis der hochzuladenen Dateien" rsync -rzv . Ziel-URL
Dabei sind die drei markierten Werte entsprechend einzutragen. Die drei angegebenen Optionen bedeuten folgendes:
- -r
- Es wird rekursiv durch das Verzeichnis gegangen, so dass auch die Dateien in Unterverzeichnissen mit hochgeladen werden.
- -z
- Die hochzuladenden Daten werden vorher komprimiert.
- -v
- aktiviert eine Statusanzeige: Welche Dateien gerade hochgeladen werden, wieviel Bytes insgesamt übertragen wurden, ...
Beispiel
Nehmen wir folgende Situation an:
- cwRsync wurde in das Standard-Verzeichnis installiert: C:\Programme\cwRsync
- Hochzuladene Dateien liegen in C:\Meine Sachen\Homepage
- Ziel-URL: hans@meine-domain.de:websites/meine-domain/
Dann sieht die hochladen.dat so aus:
@echo off set CYGWIN=nontsec set PATH=C:\Programme\cwRsync\bin;%PATH% cd "C:\Meine Sachen\Homepage" rsync -rzv . hans@meine-domain.de:websites/meine-domain/
Schon werden mit jedem Doppelklick auf hochladen.bat automatisch die Dateien hochgeladen.
Schlüsselauthentifizierung
Um das Hochladen weiter zu automatisieren kann man auf ein Passwort verzichten und stattdessen über einen Schlüssel authentifizieren. Die dafür nötigen Werkzeuge liefert das in cwRsync enthaltene SSH gleich mit.
Zunächst wird ein Schlüsselpaar erzeugt:
ssh-keygen -t dsa
Der öffentliche Schlüssel id_dsa.pub wird dann in die Datei .ssh/authorized_keys2 auf dem Server kopiert. Dann muss die Rsync-Zeile aus obigem Script wie folgt geändert werden:
rsync -e 'ssh -i c:\id_dsa' -rvz . hans@meine-domain.de:websites/meine-domain/
Über die Option -e wird das Kommando angegeben, mit dem die Verbindung zum Server aufgebaut wird. Innerhalb dieses Kommandos wird der Authentifizierungs-Schlüssel über die Option -i angegeben.
Herunterladen
Vertauschen wir den Punkt und die Ziel-URL in der letzten Zeile, dann erhalten wir ein Programm, das die Dateien vom Server herunterlädt:
@echo off set CYGWIN=nontsec set PATH=Installations-Verzeichnis von cwRsync\bin;%PATH% cd "Verzeichnis der hochzuladenen Dateien" rsync -rzv Ziel-URL .
Weiterführendes
Will man über lokale Laufwerke oder Netzlaufwerke hinweg Verzeichnisse abgleichen, muss man wissen, wie cwRsync die Windows-Laufwerke anspricht.
Leider verwendet es nicht die normalen Windows-Pfade (C:\Pfad\Zur\Quelle) sondern es verwendet Cygwin-Pfade (/cygdrive/c/Pfad/Zur/Quelle).
- Beispiel 1
- Das aktuelle Verzeichnis soll nach X:\Ziel syncronisiert werden:
rsync -rzv . /cygdrive/x/Ziel
- Beispiel 2
- Das Verzeichnis C:\Quelle soll nach X:\Ziel syncronisiert werden:
rsync -rzv /cygdrive/c/Quelle/ /cygdrive/x/Ziel
Der abschließende Slash (/) beim Quellverzeichnis ist dabei wichtig! Lässt man ihn weg, landen die Dateien nicht in:
X:\Ziel
sondern in einem Unterverzeichnis:
X:\Ziel\Quelle

