Rsync-Backup-Skript für Windows
rsync ist ein in der Linux-/Unixwelt bewährtes Kommandozeilenprogramm, mit dem sich zwei Verzeichnisse synchronisieren lassen. Es hat den großen Vorteil, daß bei der Synchronisierung nur die im Quellverzeichnis veränderten oder neu hinzugekommenen Dateien und Verzeichnisse ins das Zielverzeichnis kopiert werden. Dies spart insbesondere bei großen Dateiarchiven enorm Zeit. rsync verfügt über eine große Zahl von Optionen, die auf der Kommandozeile angegeben werden. Es kann sowohl lokal auf den Rechner Verzeichnisse synchronisieren als auch per ssh über das Netzwerk.
1. Rsync einrichten
Um rsync auch unter Windows nutzen zu können, müssen die Cygwin-Tools installiert werden. Diese stellen unter Windows ein Terminal mit den wichtigsten Linux- bzw. Unix-Befehlen zur Verfügung. Dazu geht man auf die Webseite www.cygwin.com und lädt das Setup-Programm herunter (Der Link hierzu befindet sich unter "Current Cygwin DLL version"). Es gibt eine 64-Bit- und eine 32-Bit-Version.
Anschließend startet man das Setup-Programm und klickt beim ersten Dialog-Fenster auf "Weiter".
Im nächsten Schritt wählt man "Install from Internet".
Das "Root Directory" sollte auf "C:\cygwin" belassen werden.
Als "Local Package Directory" trägt man "C:\cygwin\packages" ein.
Bei der "Internet Connection" wählt man "Direct Connection".
Als Download-Server wählt man in Deutschland wegen der höheren Übertragungsrate am besten einen deutschen Server, z.B. ftp.gwdg.de
Danach wird eine Paketliste vom ausgewählten Server heruntergeladen und in einer Baumstruktur angezeigt.
Hier klickt man bei "Net" auf das Pluszeichen und bei Rsync auf den ringförmigen Pfeil, so dass daneben die Version-Nummer erscheint. Ein gleiches führt man für openssh durch (openssh befindet sich ebenfalls unter Net, etwas weiter oben).
Ein Klick auf weiter führt die Installation aus. Abschließend wird noch gefragt, ob man ein Symbol ("Icon") für das Cygwin-Terminal auf dem Desktop und im Startmenü haben will. Dies kann man bejahen. Damit ist die Installation abgeschlossen.
2. Batchdatei anlegen
2.1. Sicherung eines Verzeichnis auf ein anderes Laufwerk
Für die Spiegelung eines Verzeichnisses auf ein anderes Laufwerk, z.B. eine Wechselplatte, legt man mit einem Texteditor am besten eine Batchdatei mit dem Namen "backup.cmd" an. Sie sollte folgenden Inhalt haben:
@ECHO OFF SET SOURCE="/cygdrive/c/users/" SET TARGET="/cygdrive/e/backups/" SET EXCLUDES="--exclude-from=/cygdrive/c/cygwin/etc/rsync-exclude.txt" c:\cygwin\bin\rsync.exe -av --delete --chmod=u+rwX,o-rwX,g-rwX %EXCLUDES% %SOURCE% %TARGET% PAUSE
Download: backup.cmd
In diesem Skript werden einige Variable gesetzt:
- SOURCE: ist das Quellverzeichnis. Hier ist hinter dem Verzeichnis /cygdrive/ das Quellverzeichnis anzugeben. Soll das Verzeichnis c:\users gesichert werden ist dies also in der Form /cygdrive/c/users zu schreiben. (Zur Erklärung: rsync kennt nur Linux-/Unix-konforme Dateipfade. Das Laufwerk C:\ wird in der Cygwin-Umgebung daher als /cygdrive/c eingebunden).
- TARGET: ist das Zielverzeichnis auf dem Backup-System. Dies ist in gleicher Form wie bei SOURCE anzugeben: /cygdrive/<Laufwerksbuchstabe>/<Verzeichnis><
- EXCLUDES: Legt den Pfad zu einer Datei mit einer Liste von Dateien fest, die nicht synchronisiert werden sollen. Die Dateinamen werden einfach untereinander - mit Pfad relativ zum in obiger Batchdatei angegebenen Quellverzeichnis - in die Datei geschrieben. Also z.B.
/*/AppData/Local/ElevatedDiagnostics /*/AppData/Local/Microsoft/Windows/UsrClass.dat /*/AppData/Local/Microsoft/Windows/UsrClass.dat.LOG1 /*/AppData/Local/Microsoft/Windows/UsrClass.dat.LOG2 /*/NTUSER.DAT /*/ntuser.dat.LOG1 /*/ntuser.dat.LOG2
Download: rsync-exclude.txt
In der Exclude-Datei lassen sich auch Dateien aufführen, welche beim Ausführen des Scripts gerade durch Windows gesperrt sind. Dadurch kann man Fehlermeldungen vermeiden. Die Exclude-Variable kann auch leer gelassen werden:SET EXCLUDES=""
In der vorletzten Zeile des Scripts werden die Variablen an rsync übergeben. Startet man das Skript durch Doppelklick auf die Datei, werden die Verzeichnisse synchronisiert.
2.2 Batchdatei für Sicherung über das Netzwerk
Die Skriptdatei für die Sicherung über das Netzwerk auf einen Server unterscheidet sich nur gering von der Sicherung auf ein anderes Laufwerk. Man legt mit einem Texteditor am besten eine Batchdatei mit dem Namen "netbackup.cmd" an. Sie sollte folgenden Inhalt haben:
@ECHO OFF SET SSHPATH="-e /cygdrive/c/cygwin/bin/ssh.exe" SET SOURCE="/cygdrive/c/users/" SET TARGET="user@server:/home/user/backups/Win7" SET EXCLUDES="--exclude-from=/cygdrive/c/cygwin/etc/rsync-exclude.txt" c:\cygwin\bin\rsync.exe -av --delete --chmod=u+rwX,o-rwX,g-rwX %EXCLUDES% %SSHPATH% %SOURCE% %TARGET% PAUSE
Download: netbackup.cmd
In diesem Skript werden einige Variable gesetzt:
- SSHPATH: legt den Pfad zum SSH-Programm fest (Muss nicht verändert werden).
- SOURCE: ist das Quellverzeichnis. Hier ist hinter dem Verzeichnis /cygdrive/ das Quellverzeichnis anzugeben. Soll das Verzeichnis c:\users gesichert werden ist dies also in der Form /cygdrive/c/users zu schreiben. (Zur Erklärung: rsync kennt nur Linux-/Unix-konforme Dateipfade. Das Laufwerk C:\ wird in der Cygwin-Umgebung daher als /cygdrive/c eingebunden).
- TARGET: ist das Zielverzeichnis auf dem Backup-System. Dies ist in folgender Form anzugeben: <Benutzername>@<Servername>:<Verzeichnis>
- EXCLUDES: Legt den Pfad zu einer Datei mit einer Liste von Dateien fest, die nicht synchronisiert werden sollen. Die Dateinamen werden einfach untereinander - mit Pfad relativ zum in obiger Batchdatei angegebenen Quellverzeichnis - in die Datei geschrieben. Also z.B.
/*/AppData/Local/ElevatedDiagnostics /*/AppData/Local/Microsoft/Windows/UsrClass.dat /*/AppData/Local/Microsoft/Windows/UsrClass.dat.LOG1 /*/AppData/Local/Microsoft/Windows/UsrClass.dat.LOG2 /*/NTUSER.DAT /*/ntuser.dat.LOG1 /*/ntuser.dat.LOG2
Download: rsync-exclude.txt
In der Exclude-Datei lassen sich auch Dateien aufführen, welche beim Ausführen des Scripts gerade durch Windows gesperrt sind. Dadurch kann man Fehlermeldungen vermeiden. Die Exclude-Variable kann auch leer gelassen werden:SET EXCLUDES=""
Startet man nun das Skript durch Doppelklick auf die angelegte Datei, wird man nach dem Passwort auf dem Server gefragt. Nach der Eingabe des Passwortes beginnt die Synchronisation.
Für das passwortlose Verbinden mit externen Servern kann mittels ssh-keygen ein SSH-Schlüssel-Paar angelegt werden.
3. Weiterführende Informationen
Homepage von rsync: rsync.samba.org