Rsync

Aus wiki.archlinux.de

Einführung

Rsync ist ein Programm, welches Dateien kopiert. Dieses kann sowohl lokal, als auch in einem Netzwerk passieren. Es ist dabei sehr schnell, da es lediglich die unterschiedlichen Dateiteile kopiert. Deshalb ist rsync hervorragend für (wiederkehrende) Sicherungen geeignet. Jedoch ist rsync nur unidirektional - d.h. es kann nur in eine Richtung synchronisieren. Bidirektionale Synchronisation ist z.B. durch unison möglich, welches allerdings dasselbe Protokoll wie rsync benutzt.

Installation

Um rsync zu benutzen, müssen wir es installieren. Dazu führen wir (mit Rootrechten) folgendes aus:

$ pacman -Sy rsync

Anwendung

Die Syntax von rsync ist wenig aufregend. Wir haben verschiedene Optionen, sowie je ein Quell- und ein Zielverzeichnis.

rsync [OPTION...] SRC... [DEST]

Lässt man das zweite Verzeichnis weg, so werden lediglich die Dateien im ersten Verzeichnis angzeigt.

Will man lediglich die Dateien in einem Ordner, nicht aber den Ordner selbst kopieren, so erreicht man dies, indem man ein Backslash an den Quellpfad hängt (z.B. /home/hans/docs/). Der Ordner wird dementsprechend mitkopiert, wenn man den Backslash weglässt (z.B. /home/hans/docs).

Nützliche Optionen sind unter anderen:

  • -a um rekursiv (-r) zu kopieren und dabei Rechte (-p), Gruppenrechte (-g), Zeiten (-t) und symbolische Links (-l) sowie als Root Besitzrechte (-o) und Gerätedateien(-D) beizubehalten.
  • -v für die Ausgabe der Informationen über die kopierten Dateien (und eine kleine Zusammenfassung zum Schluss). Je mehr -v, desto umfangreicher die Ausgabe. Mehr als zwei -v sind allerdings nur für Debuggingzwecke ratsam. Zwei -v bewirken, dass nicht nur alle transferierten Dateien angezeigt werden, sondern auch solche, die übersprungen werden. Außerdem ist die Zusammenfassung am Ende umfangreicher.
  • -P um eine Fortschrittsanzeige anzuzeigen (--progress) und bei Abbruch ab der Abbruchstelle weiterzukopieren (--partial).
  • -n für einen Testdurchlauf ohne Änderungen
  • -z für die Komprimierung der übertragenen Dateien (Diese kann auch über '-e "ssh -C"' eingeschaltet werden)
  • -e für die Definition der Remote-Shell (z.B. ssh)
  • -b sichert alle veränderten (auch durch --delete gelöschten) Dateien
  • --exclude=REGEXP schließt alle aus der Quelle betroffenen Dateien vom Kopiervorgang aus
  • --delete löscht alle Dateien des Ziels, die in der Quelle nicht vorhanden sind
  • -W vermeidet die Prüfung der einzelnen Blocks und kopiert stattdessen die gesamte Datei. Das ist besonders bei großen Dateien nützlich.

Beispiele

$ rsync -avx /

Synchronisiert die gesamte /-Partition (-x = "one filesystem") und behält Rechte, Gruppenrechte, Zeiten und symbolische Links bei.

$ rsync -avPzbe "ssh -p 667" --delete --backup-dir=/home/hans/Sicherung/Alt peter@rechner:/tmp/ /home/hans/Sicherung 

Kopiert die Temporärdateien von einem entfernten Rechner über die SSH mit Port 667 auf den lokalen Rechner. Weiter werden die vorherigen Sicherungen und alle Dateien in /home/hans/Sicherung/, die nicht in /tmp/ liegen, nach /home/hans/Sicherung/Alt verschoben.

Problemlösung

Problem:

rsync: Command not found

Lösung: Auf beiden Rechnern muss natürlich Rsync installiert sein