47.6. Einführung in rsync

rsync bietet sich immer dann an, wenn große Datenmengen, die sich nicht zu stark verändern, regelmäßig übertragen werden müssen. Dies ist zum Beispiel bei der Erstellung von Backups häufig der Fall. Ein weiteres Einsatzgebiet sind so genannte staging server, also Server auf denen zum Beispiel der komplette Verzeichnisbaum eines Webservers bereitgehalten wird, und der regelmäßig auf den eigentlichen Webserver in einer „DMZ“ gespiegelt wird.

47.6.1. Konfiguration und Benutzung

rsync kann man in zwei verschiedenen Modi verwenden. Zum einen kann rsync zum archivieren oder kopieren von Dateien verwendet werden. Hierzu benötigt man auf dem Zielrechner nur eine remote Shell wie zum Beispiel SSH. rsync kann aber auch als Daemon verwendet werden, und Verzeichnisse im Netz zur Verfügung stellen.

Die grundlegende Benutzung von rsync erfordert keine besondere Konfiguration. Mit rsync ist es direkt möglich, komplette Verzeichnisse auf einen anderen Rechner zu spiegeln. Beispielsweise kann man mit folgendem Befehl ein Backup des Heimatverzeichnisses von tux auf einem Backupserver "sun" anlegen:

rsync -baz -e ssh /home/tux/ tux@sun:backup

Um das Verzeichnis zurück zu spielen, findet folgender Befehl Verwendung:

rsync -az -e ssh tix@sun:backup /home/tux/

Bis hierher unterscheidet sich die Benutzung kaum von einem normalen Kopierprogramm wie scp

Damit rsync seine Features voll ausnutzen kann, sollte das Programm im „rsync“ Modus betrieben werden. Hierzu wird auf einem der Rechner der Daemon rsyncd gestartet. In diesem Fall muss rsync über die Datei /etc/rsyncd.conf konfiguriert werden. Wenn zum Beispiel das Verzeichnis /srv/ftp über rsync zugänglich sein soll, kann folgende Konfigurationsdatei verwendet werden:

gid = nobody
uid = nobody
read only = true
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log

[FTP]
        path = /srv/ftp
        comment = An Example

Danach muss der rsyncd gestartet werden: rcrsyncd start. Der rsyncd kann auch beim Bootprozess automatisch gestartet werden. Hierzu muss entweder dieser Dienst in YaST im Runlevel Editor aktiviert werden, oder manuell der Befehl insserv rsyncd eingegeben werden. Alternativ kann rsyncd auch von xinetd gestartet werden. Dies empfiehlt sich aber nur bei Servern auf denen der rsyncd nicht allzu oft verwendet wird. Im obigen Beispiel wird auch ein Logfile über alle Verbindungen angelegt. Dieses wird unter /var/log/rsyncd.log abgelegt.

Nun kann der Transfer von einem Client Rechner aus geprüft werden. Dies geschieht mit folgenden Befehl:

rsync -avz sun::FTP

Dieser Befehl listet alle Dateien auf, die auf dem Server im Verzeichnis /srv/ftp liegen. Diese Anfrage taucht auch im Logfile unter /var/log/rsyncd.log auf. Um den Transfer tatsächlich zu starten, muss noch ein Zielverzeichnis angeben werden. Für das aktuelle Verzeichnis kann das auch der „.“ sein, also zum Beispiel:

rsync -avz sun::FTP .

Immer dann wenn der rsyncd auf dem Server angesprochen werden soll, müssen zwei Doppelpunkte zwischen dem Servernamen und dem Ziel-Laufwerk eingegeben werden.

Normalerweise werden beim Abgleich mit rsync keine Dateien gelöscht. Wenn dies erzwungen werden soll, muss zusätzlich die Option --delete angegeben werden. Um sicherzustellen, dass keine neueren Dateien überschrieben werden, kann die Option --update angegeben werden. Dadurch entstehende Konflikte müssen manuell aufgelöst werden.

47.6.2. Weiterführende Literatur

Wichtige Informationen zu rsync sind in den Manualpages man rsync und man rsyncd.conf enthalten. Eine technische Dokumentation zur Vorgehensweise von rsync finden Sie unter /usr/share/doc/packages/rsync/tech_report.ps Aktuelles zu rsync können Sie auf der Webseite des Projektes unter http://rsync.samba.org nachlesen.