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.
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.
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.