Rsync: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Thomas (Diskussion | Beiträge) (→Unison) |
|||
| (9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=Beschreibung= | =Beschreibung= | ||
| − | rsync ist ein Programm, welches angegebene Dateien bzw. Verzeichnisse auf einem Quell- und einem Zielmedium miteinander vergleicht | + | *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. | |
| − | 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. | + | *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= | =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. | |
| − | 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= | =Optionen= | ||
| Zeile 79: | Zeile 85: | ||
=Wichtig= | =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. | + | *Vor dem Ausführen von rsync muss man sicher sein, die korrekten Parameter und Verzeichnisse angegeben zu haben. |
| − | rsync kann nur das kopieren, wozu der Nutzer auch Rechte hat, z.B. bei | + | *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. | |
| − | kann es zu Problemen kommen. | + | *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. | |
| − | 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! | |
| − | 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= | =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= | ||
*http://www.thegeekstuff.com/2011/01/rsync-exclude-files-and-folders/ | *http://www.thegeekstuff.com/2011/01/rsync-exclude-files-and-folders/ | ||
Aktuelle Version vom 17. Februar 2023, 09:14 Uhr
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