Rsync
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