Skip to content

Seitensynchronisation mit rsync

Auf meinem neuen Webserver bei hr concepts habe ich einen shell-account, d.h. ich kann per ssh und Kommandozeile darauf zugreifen, als säße ich direkt am Server.
Der Server unterstützt außerdem rsync, ein sehr praktisches Programm zum Abgleichen meiner lokalen Festplatte mit dem Server.
Anders als bei normalen ftp-Clients kann rsync Dateien auch inkrementell übertragen. Er überträgt also nur das, was die zwei Dateiversionen tatsächlich unterscheidet. Das spart vor allem bei großen Dateien Zeit.
Ansonsten macht rsync den Datenabgleich unabhängig vom Timestamp der Dateien, d.h. man kann mit der --size-only Option angeben, dass Dateien nur auf Größe verglichen werden. Das ist beim Umstellen zwischen verschiedenen ftp-Programmen nützlich. ;-)

rsync wurde dafür entwickelt, große Datenbestände, z.B. Mirrors abzugleichen. Der Algorithmus wurde von Dr. Andrew Tridgell entwickelt. Etwas mehr gibt’s bei Paul Holbrook.

Installation

Zuerst hatte ich versucht cwRsync mit Plink (als Ersatz für SSH) von PuTTY zum Laufen zu bekommen. Jedoch – ohne Erfolg.
Also habe ich mir doch cygwin runtergeladen und installiert – im net-Modul ist ssh und rsync enthalten.
Dann habe ich die Dateien

  • cygcrypto-0.9.7.dll
  • cygminires.dll
  • cygpopt-0.dll
  • cygwin1.dll
  • cygz.dll
  • rsync.exe
  • ssh-keygen.exe
  • ssh.exe

aus der cygwin-Installation in ein extra Verzeichnis kopiert.
Mit dem Befehl
rsync -r --size-only --progress --delete --stats -e ssh /cygdrive/d/homepage/gungfu.de/ accountname@www.gungfu.de:verzeichnis/
kann ich jetzt meine Festplatte mit dem Server abgleichen.
Dabei ist zu beachten, dass cygwin keine Windows-Verzeichnisangaben versteht. Daher das /cygdrive/ im Beispiel. /cygdrive/d/ steht also für d:\
Was macht der Befehl noch?
-r rekursiv in Unterverzeichnisse
–size-only Unterschied nur anhand der Dateigrößen
–progress Zeige Fortschritt
–delete Lösche Dateien, die lokal nicht mehr vorhanden sind auch auf dem Server
–stats Zeige einen Statusbericht nach der Übertragung
-e ssh Verwende ssh

So ungefähr war’s das…

Meine ersten Übertragungsergebnisse

Number of files: 3029
Number of files transferred: 449
Total file size: 94619429 bytes
Total transferred file size: 27116260 bytes
Literal data: 24681364 bytes
Matched data: 2434917 bytes
File list size: 54748
Total bytes written: 24763132
Total bytes read: 71308

wrote 24763132 bytes read 71308 bytes 15853.46 bytes/sec
total size is 94619429 speedup is 3.81

weitere Ergebnisse

Nachdem ich alles aktuallisiert und wieder etwas geändert habe (lokal) lieferte rsync eine wesentlich schnellere Übertragung als das ftp-Programm geschafft hätte, das ich sonst immer verwende(te).
Beim Übertragen der Bookmarks, die ich auf meinem Webspace zwischenspeichere, damit ich auf verschiedenen Rechnern dieselben Links zur Verfügung habe – erweist sich das oben angesprochene inkrementelle Übertragen als sehr viel schneller.

{ 2 } Comments

  1. Hans | 2006/1/3 at 03:10 | Permalink

    wie siehts aus m it private key authentifizierung, das krieg ich unter cygwin nicht zum laufen? hat das jemand mal versucht? ich definiere das identity-file mit dem -i parameter, aber werde dennoch nach der passphrase gefragt, obwohl keine passphraqse gesetzt wurde für die datei.

  2. Steffen | 2006/1/3 at 07:08 | Permalink

    Hallo Hans,

    was willst du mit -i bewirken? Laut man-page zu rsync dient die Option zur Erzeugung einer Zusammenfassung. Ehm.

    Vielleicht hast du --password-file=FILE gemeint?

    Hast du die Datei authorized_keys auf dem Server schon angepasst? Ansonsten habe ich auf der Wiki-Seite für Rsync jetzt ein paar Links zusammengetragen.

{ 2 } Trackbacks

  1. [...] : Webentwicklung — admin @ 9:21 am

    Die Parameter in Seitensynchronisation mit rsync habe ich nochmal überarbeite [...]

  2. [...] igiert hatte, musste ich diese Änderungen natürlich wieder auf den Server laden. rsync hat mir dabei sehr geholfen: Number of files: 3403 Number o [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *