Rsync unter Windows

From NJH-Wiki

Jump to: navigation, search
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:

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
Personal tools