rsync-Server #

rsync ist ein Programm, mit dem man Verzeichnisse und Dateien auf verschiedenen Rechnern abgleichen kann. Im Prinzip reicht ein installiertes rsync-Paket (sowie ssh) auf beiden Rechnern, um mit einem Befehl dafür zu sorgen, daß zwei Verzeichnisse gleich sind. Dabei können z.B. von beiden Rechnern die aktuellsten Files behalten werden oder ein Rechner auf dem anderen gespiegelt werden. Dabei ist der grosse Unterschied zu anderen File-Übertragungsprotokollen, das rsync immer nur die Dateien (oder Teile von Dateien) versendet, die sich wirklich geändert haben (es benutzt dazu md5-Checksummen). Als eigentliches Verbindungsprotokoll kann ssh, rsh (ein ssh-Vorgänger) oder auch ein rsync-eigenes (unverschlüsseltes) Protokoll benutzt werden.

Wir benutzen intern einen solchen rsync-Server, um KrefixLinux innerhalb unseres KrefixLinux/EntwicklerTeam zu verteilen.

Generell sind die manpages rsync und rsyncd.conf übrigens auch sehr hilfreich.

Wozu ein rsync-Server? #

Ein rsync-Server ist ein rsync-Daemon, der Anfragen auf dem rsync-Port annimmt und dann mittels des oben erwähnten rsync-eigenen Protokolls Dateien austauscht. dies kann z.B. ein effektiver Ersatz für einen ftp-Server sein. Im Gegensatz zur Übertragung per ssh oder rsh muss der Benutzer keinen login-Account auf der Maschine haben. Es sind anonyme Zugriffe genauso möglich wie die Authentifizierung über eine rsync-eigene Passwortdatei.

Automatischer Start #

Leider wird im Standard-Debian-Paket rsync nicht als Server gestartet. Ich habe daher folgendes Init-Skript nach /etc/init.d/rsyncd geschrieben. Danach habe ich in den Runleveln einen Link S20rsyncd gesetzt. Die 20 erschien mir richtig, da auch andere ähnliche Services die 20 benutzen.

..to be continued

Konfigurationsdateien #

Die Datei /etc/rsyncd.conf ist die eigentliche Konfigurationsdatei. Ein Muster findet man unter /etc/share/doc/rsync. Dieses entpackt man, kopiert es nach /etc und wandelt es ggf. ab. Die Optionen sind größtenteils selbsterklärend und ansonsten auf o.g. manpage gut erklärt. Ggf. muss noch eine Datei /etc/rsyncd.secrets erzeugt werden, die die Benutzernamen und Passwörter enthält. System-Accounts (und Passwörter aus /etc/passwd) können nicht benutzt werden.

Zugriff auf den Server #

Von einem anderen Rechner aus kann man nun z.B. folgendes schreiben:

  rsync username@servername.domain.net::modul/bla . -a

um die Datei bla, die im Modul (unter Samba würde man 'share' sagen) modul liegt, vom angegebenen Host in das aktuelle lokale Verzeichnis zu kopieren. Hat man keine Authentifizierung eingestellt, schreibt man einfach:

  rsync servername.domain.net::modul/bla . -a

Die Optionen (wie -a) sollte man auf jeden Fall nochmals nach der manpage prüfen und für seinen Einsatzzweck auswählen, da die Möglichkeiten des Programms sehr vielfältig sind.