rsync gleicht Dateien und Ordner zwischen Lokalen oder Remote Systemen ab. die Synchronisation findet von der Quelle zum Ziel statt.
Ist die Quelle oder das Ziel ein Remote System findet der Datenabgleich via SSH oder einen rsync-daemon statt. Rsync wird oft in Backupscripten verwendet oder zum kopieren (sichern) Großer Datenmengen. Es kann bei einem Abbruch jederzeit neu starten und macht an der „letzten stelle einfach weiter“.
Rsync kopiert dabei auch nur neue oder geänderte Daten, was es wirklich gut für Backups macht. Wir behandeln hier nur die gängigsten Optionen!
Syntax
rsync [optionen] quelle ziel
Optionen | Bedeutung |
---|---|
-a |
Steht für „archive“ und ist einer der am häufigsten verwendeten Optionen. Die Option -a beinhaltet folgende Optionen -rlptgoD und kopiert somit Unterverzeichnisse, Symbolische Links und Rechte von Usern, Gruppen und Andere sowie die Zeitstempel der Dateien und Ordner von der Quelle. Kurz gesagt „-a“ macht eine 1zu1 Kopie von Quelle zum Ziel und ist grade für backups ideal geeignet. |
-v |
Steht für “verbose” und Zeigt während der Synchronisation alles was rsync macht grade an. |
--delete |
Löscht Daten die sich nicht (mehr) in der Quelle befinden. wird oft bei Backupscripten verwendet oder wenn Ordner 1zu1 immer auf den gleichen Stand sein sollen. |
-u |
Steht für “update” und überspringt Daten die im Ziel neuer als in der Quelle sind |
-n |
(–dry-run) Simuliert also nur was rsync machen würde, ohne echte Daten zu Kopieren oder zu überschreiben. |
--exclude=PATTERN |
Exkludiert bestimmte Daten die mit „PATTERN“ definiert werden beim übertragen. |
--iconv |
Konvertiert Daten zwischen Systemen mit verschiedenen Codepages |
--progress |
Zeigt die Zeit in Prozent und Geschwindigkeit beim übertragen von Daten an. |
Beispiel | Erklärung |
---|---|
rsync -av /var/www /mnt/backup |
Kopiert alle Daten inkl. Unterordner von /var/www nach /mnt/backup/www und behält dabei die Rechte und Zeitstempel der Dateien und Ordner bei. |
rsync -av /var/www/ /mnt/backup |
Kopiert alle Daten inkl. Unterordner von /var/www/ nach /mnt/backup/ und behält dabei die Rechte und Zeitstempel der Dateien und Ordner bei. |
rsync -av --delete /opt/tools/ root@meinserver.de:/opt/tools |
Kopiert alle Daten inkl. Unterordner von /opt/tools auf den entfernten Server root@meinserver.de (via SSH) in den Ordner /opt/tools. Dabei werden alle Daten die sich schon in /opt/tools auf root@meinserver.de gelöscht, sofern diese nicht in der Quelle vorhanden sind. Also eine 1zu1 Kopie. |
rsync -av --exclude='*.txt' /opt/tools/ root@meinserver.de:/opt/tools |
Kopiert alle Daten inkl. Unterordner ausser die mit *.txt enden von /opt/tools auf den entfernten Server root@meinserver.de in den Ordner /opt/tools |
rsync -av --delete --iconv=utf8-mac,utf8 /data/ root@meinserver.de:/data |
Kopiert alle Daten inkl. Unterordner von /data auf den entfernten Server root@meinserver.de in den Ordner /data , dabei findet eine Konvertierung von utf8-mac nach utf8 statt.
Dies muss z.B. verwendet werden wenn man von einem Mac System Daten auf einen Linux Server überträgt. Da Mac OS X die Codepage UTF8-MAC verwendet, welche auf einem Linux System nicht vorhanden ist. Macht man dies nicht gibt es Probleme bei Sonderzeichen und Umlauten wenn man auf die Dateien und Ordner auf dem Linux Server zugreifen möchte. Der rsync Befehl wird auf dem Mac OS X System ausgeführt und kopiert die Daten auf ein Remote Linux Server. |
Wenn ich die Option ‚–iconv=utf8-mac,utf8‘ verwende, wird sie mir im Terminal unter macOS 10.13.6 als unbekannte Option angegeben und nach dem rsync habe ich die Ordner/Dateien mit einem Umlaut doppelt.
Dann ist hier die rsync Version zu alt. Am besten via MacPorts oder Homebrew eine neuere rsync version installieren… dann klappt das auch.
Perfekt, habe die Version auf 3.1.3 hoch gezogen. Nun läuft es!
Vielen Dank für die kurze Erklärung. Das hätte ich vorher mal wissen müssen.
Zuvor hatte ich die Daten von einer Platte SDD1 auf SDE1/Backup kopiert und wollte die Datei- und Ordnerattribute beibehalten. Da ich das per Drag’n’drop getan habe und nicht über die Konsole mit „cp -ar …“ hatten die Ordner alle das Datum vom Kopiertag, die Dateien hatten ihr Datum beibehalten.
Anstatt alles nochmal mit „cp -ar“ zu kopieren, suchte ich eine Möglichkeit nur die Attribute zu kopieren. Hatte mit weiteren Optionen aber auch NUR die Optionen kopiert, aber wegen eines Fehlers bei der Eingabe in einen neuen Ordner. Bei richitger Eingabe wäre auch nichts kopiert worden, da die bereits kopierten Daten im Ziel „neuer“ waren.
Mit „sudo rsync -atv -I –size-only –progress /QUELLE/ /ZIEL“ habe ich alle Dateien ignorieren lassen und die Attribute übertragen bekommen.
Vielleicht hilft das noch wem anderes.
Danke!
Die Beispiele sind nicht ganz richtig!
Der Aufruf
rsync -av /var/www /mnt/backup
kopiert das Verzeichnis „www“ nach /mnt/backup/, so dass z.B. die Datei /var/www/foo.txt anschließend unter /mnt/backup/www/foo.txt zu finden ist!
Um alle Dateien und Unterordner aus /var/www nach /mnt/backup zu kopieren, muss noch ein „/“ an der Quelle ergänzt werden!
Also:
rsync -av /var/www/ /mnt/backup
Nun wäre die Datei /var/www/foo.txt anschließend unter /mnt/backup/foo.txt zu finden.
Das ist richtig, das Beispiel sollte auch veranschaulichen den Ordner „www“ zu kopieren… in der Erklärung ist es nun angepasst und ein weiteres Beispiel hinzugefügt THX!
Das ging ja fix!
Danke auch :)
Toll genau das was ich gesucht habe, kurz und bündig einfache Beispiele. Genau das was ich gesucht habe. DANKE weiter so!!!!!