Daten mit rsync unter Linux synchronisieren
Daten mit rsync unter Linux synchronisieren
Das Programm rsync[1] ermöglicht unter Linux die unidirektionale Daten-Synchronisation von einem Quell- zu einem Zielverzeichnis. Diese beiden Verzeichnisse können dabei auf unterschiedlichen Rechnern liegen (die Änderungen werden dann über das Netzwerk übertragen).
Beispiel: Datensynchronisation für Backup-Zwecke
Häufig wird rsync für Backup-Zwecke verwendet. Mit dem folgenden Beispiel-Kommando wird das Verzeichnis /home/ des Servers server.example.com hin zum lokalen Rechner in das Verzeichnis /mnt/server-mirror/home/ synchronisiert. Die Daten werden dabei über SSH getunnelt übertragen:
rsync -av –delete -e ssh root@server.example.com:/home/ /mnt/server-mirror/home/
oder
rsync -r -t –progress –delete -e ssh root@server.example.com:/mnt/ncdata/ /mnt/ncdata/
Wenn rsync automatisiert in einem Skript verwendet werden soll, kann die Authentifizierung etwa über einen SSH Key durchgeführt werden:
rsync -av –delete -e „ssh -i /home/user/.ssh/sshkey“ root@server.example.com:/home/ /mnt/server-mirror/home/
Die gezeigten rsync Optionen haben folgende Bedeutung:
- -a (Kurzversion für –archive): gleiche Bedeutung wie -rlptgoD
- -r (Kurzversion für –recursive): Unterverzeichnisse kopieren
- -l (Kurzversion für –links): symbolische Links kopieren
- -p (Kurzversion für –perms): Rechte der Quelldatei beibehalten
- -t (Kurzversion für –times): Zeiten der Quelldatei beibehalten
- -g (Kurzversion für –group): Gruppenrechte der Quelldatei beibehalten
- -o (Kurzversion für –owner): Besitzrechte der Quelldatei beibehalten (nur als root User möglich)
- -D (Kurzversion für –devices –specials): Gerätedateien der Quelldatei beibehalten (nur als root User möglich)
- -v (Kurzversion für –verbose): zeigt während der Ausführung an welche Dateien synchronisiert werden
- –delete: entfernt Dateien im Zielverzeichnis die mittlerweile im Quellverzeichniss nicht mehr vorhanden sind
Backupversionen mit rdiff-backup erstellen
Das oben gezeigte Kommando synchronisiert die Daten zwar vom Quell- zum Zielverzeichnis. Wird allerdings z.B. irrtümlich eine Datei gelöscht und anschließend rsync ausgeführt, ist die gelöschte Datei auch im Zielverzeichnis nicht mehr vorhanden.