Rsync

Aus xinux.net
Zur Navigation springen Zur Suche springen

Beschreibung

  • rsync ist ein Programm, welches angegebene Dateien bzw. Verzeichnisse auf einem Quell- und einem Zielmedium miteinander vergleicht
  • Dabei werden sowohl die Größe, als auch die Erstellungszeit beachtet.
  • Wenn sich nun zwei Dateien voneinander unterscheiden, verwendet rsync einen speziellen Algorithmus,
  • Dieser überträgt nur den Unterschied zwischen den zwei Dateien.
  • Somit wird die Synchronisationgeschwindigkeit enorm gesteigert.
  • Stimmen z.B. von einer 1 MB-Datei 200 kB nicht mit der anderen Datei überein, werden nur die 200 kB übertragen.
  • Ausgeschlossen sind logischerweise Dateien, die noch nicht auf dem Zielmedium existieren.
  • Beim ersten Abgleich werden somit alle Dateien komplett übertragen.
  • Aufgrund dieser Eigenschaften ist rsync sehr gut geeignet, um Sicherungen durchzuführen.
  • Wenn man allerdings Verzeichnisse zwischen zwei Systemen wie Laptop und Desktop-Rechner synchronisieren möchte, sind Programme wie Unison besser geeignet.

Anwendung

Die Syntax des Befehls im Terminal sieht folgendermaßen aus:

  • rsync [OPTIONEN] <Quelle> <Ziel>
  • Anstelle des Platzhalters Quelle gibt man den Ort an aus dem gelesen werden soll und das Ziel bestimmt den Ort in den rsync zu kopieren hat.
  • Gibt man nur einen Parameter an, so wird dieser als Ziel interpretiert und es gilt das aktuelle Verzeichnis als Quelle.

Optionen

Option Bedutung
-r kopiert Unterverzeichnisse
-l kopiert symbolische Links
-p behält Rechte der Quelldatei bei
-t behält Zeiten der Quelldatei bei,
-g behält Gruppenrechte der Quelldatei bei
-o behält Besitzrechte der Quelldatei bei (nur root)
-D behält Gerätedateien der Quelldatei bei (nur root)
-a fasst Optionen -r -l -p -t -g -o -D zusammen
-v zeigt während des Synchronisierens alle Schritte die ausgeführt werden an
--progress Fortschrittsanzeige beim Transfer Anzeigen
--partial Fortsetzung des Transfers bei Abbruch
-P fasst Optionen --progress und --partial zusammen
-n simuliert nur was passieren würde ("dry run")
-z aktiviert die Komprimierung für die Datenübertragung
-e damit lässt sich die remote shell auswählen, die meisten werden SSH nutzen also -e ssh
-exclude=Muster schließt ein bestimmtes Muster von der Sicherung aus
--delete sorgt dafür, dass Dateien, die im Quellverzeichnis gelöscht wurden, auch im Ziel gelöscht werden
-b sorgt dafür, dass durch die Option --delete gelöschte sowie alle veränderten Objekte gesichert werden
--backup-dir=Verzeichnis man kann so ein Verzeichnis dafür angeben
--iconv sorgt für eine Konvertierung der Dateinamen zwischen Systemen mit verschiedenen Codepages.

Wichtig

  • Vor dem Ausführen von rsync muss man sicher sein, die korrekten Parameter und Verzeichnisse angegeben zu haben.
  • Fahrlässige Handhabung kann zu Datenverlust führen.
  • Kopiert man das gesamte Homeverzeichnis, so werden auch private Daten, wie die privaten Schlüssel von SSH und GnuPG kopiert.
  • rsync kann nur das kopieren, wozu der Nutzer auch Rechte hat, z.B. bei rsync -a /etc ziel kann es zu Problemen kommen.
  • falls nicht alles kopiert wird, kann man versuchen, von "Hand" die Daten mit cp bzw. scp zu kopieren.
  • Vorsicht ist geboten, wenn man versucht, Konten wechselseitig zu sichern.
  • Man sollte darauf achten, dass man nicht das Backup von A auf B wieder auf A kopiert.
  • Nicht zuletzt bedeutet die Option --delete wirklich delete!
  • Sind in dem Zielverzeichnis andere Daten, werden sie ins Backup-Verzeichnis geschoben oder auch gelöscht!

Beispiele

Locales Verzeichnis dir1 wird als locales Verzeichnis dir2 kopiert

nur rekuriv -
Anmerkung
Das / ist wichtig, denn ohne würde eine Verzeichnis dir2/dir1 erstellt werden.
  • rsync -r dir1/ dir2

Locales Verzeichnis dir1 wird als locales Verzeichnis dir2 kopiert

Archiv und synchronisiert rekursiv und erhält symbolische Links, spezielle und Gerätedateien, Modifizierungszeiten, Gruppe, Eigentümer und Berechtigungen.
  • rsync -a dir1/ dir2

Verbose und Dry Run

Es wird nur gezeigt was kopiert werden würde.
  • rsync -anv dir1/ dir2

Kompremierung einschalten

  • rsync -az source destination

Progress anzeigen

  • rsync -azP source destination

Dinge die auf der Quelle nicht mehr existent sind, werden auch dem Zielsystem auch gelöscht

  • rsync -a --delete source destination

Exclude von Dateien und Verzeichnissen

  • rsync -a --exclude=pattern_to_exclude source destination

Die Synchronisierung mit einem Remote-System ist trivial, wenn Sie SSH-Zugriff auf den Remote-Rechner haben

rsync muss auf beiden Seiten installiert sein.
  • rsync -a ~/dir1 username@remote_host:destination_directory

Wenn SSH auf einem anderen Port läuft

  • rsync -a -e "ssh -p 9922 "~/dir1 username@remote_host:destination_directory


Links