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.