rsync_title.jpg

Synchronschwimmen

rsync

01.02.2003
Mit dem Programm rsync [1] lassen sich lokal oder remote Dateien und Verzeichnisse synchronisieren. Dazu wird das "rsync remote-update protocol" benutzt, d. h. es wird zunächst auf Unterschiede zwischen Quelle und Ziel geprüft, bevor die eigentliche Übertragung beginnt – auf diese Weise wird das Transfervolumen minimiert.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Das Programm rsync hilft beim Kopieren von Daten auf lokalen oder entfernten Systemen. Dabei sorgt es dafür, dass auf Wunsch Dateieigenschaften (z. B. Rechte oder Besitzer) und ganze Verzeichnisstrukturen beibehalten werden. Der Programmaufruf ist ähnlich wie bei rcp oder scp: rsync datei(en) ziel. Um ein Verzeichnis dir1 auf dem lokalen System rekursiv in ein anderes Verzeichnis backup zu sichern, verwenden Sie:

huhn@asteroid:~$ rsync -r dir1 backup

Die Option -r (--recursive) sorgt dafür, dass Unterverzeichnisse bis in den letzten Winkel übertragen werden. Symbolische Linkswerden allerdings davon ausgeschlossen. Ein Hinweis skipping non-regular file dir2/link verrät: Die Datei link im Unterverzeichnis dir2 ist ein Symlink und wurde nicht kopiert. Sollen diese Verweise auf andere Dateien beim Übertragen berücksichtigt werden, hängen Sie den Parameter -l (--links) an den Aufruf an: rsync -rl dir1 backup.

Sollen symbolische Links hingegen "aufgelöst" werden, verwenden Sie die Option -L (--copy-links) – die ehemaligen Verweise finden sich nun als normale Dateien im backup-Verzeichnis. Damit Dateirechtebeibehalten werden, setzen Sie den Parameter -p (--perms); für das Speichern der Timestampsdie Option -t (--times).

Die Option zum Beibehalten des Dateieigentümers (-o oder --owner) kann nur von root verwendet werden, weil kein Benutzer einem anderen einfach so Dateien schenken darf. Wie die Manpage verrät, können alle diese Parameter -rlptg in einer einzigen Option zusammengefasst werden – -a (--archive) kopiert rekursiv und behält alle Dateieigenschaften bei. Auch hier sind root-Rechte nötig.

Gemustert

Mit dem Parameter --exclude=suchmuster werden Dateien vom Kopieren ausgeschlossen, die dem angegebenen Suchmusterentsprechen. Sollen beispielsweise Files, die auf .backup enden, von der Datensicherung ausgeschlossen werden, lautet der Befehl:

huhn@asteroid:~$ rsync --exclude=@L: *.backup quelle ziel

Dabei dürfen soviele --exclude-Optionen angegeben werden, wie nötig sind, um bestimmte Dateien auszuschließen. Ähnlich funktioniert der Parameter --exclude-from=datei – in einer Datei sind alle entsprechenden Suchmuster aufgelistet (eins pro Zeile), um die Dateien zu beschreiben, die ausgeschlossen werden sollen. Natürlich geht das auch anders herum: Die beiden Parameter --include=suchmuster und --include-from=datei helfen bei der Beschreibung von Mustern, die in den Transfer aufgenommen werden sollen.

Verschlüsselt bitte

Aus Sicherheitsgründen sollte rsync am besten zusammen mit ssh verwendet werden. Die "Secure Shell" (mit den beiden Kommandos ssh für das Login und scp für die sichere Datenübertragung) sorgt dafür, dass Daten nicht im Klartext über das Netz gehen, sondern verschlüsselt werden [3]. Das Tool scp stößt beim Datentransfer schnell an seine Grenzen. Bricht ein Down- oder Upload beispielsweise einmal ab, "merkt" sich das Programm nicht, welche Daten schon übertragen wurden. Das ist ärgerlich, gerade wenn Verzeichnisse rekursiv (scp -r) oder große Datenmengen unterwegs sind. Auch eine Versionskontrolle findet in diesem Szenario nicht statt, d. h. Dateien mit gleichem Namen werden einfach überschrieben.

Der Parameter, mit dem rsync zur Verwendung von ssh überredet wird, ist -e ssh oder --rsh=ssh (definiert ein Ersatzkommando für rsh, dieses wird durch das Gleichheitszeichen übergeben). Soll dem Kommando ssh ein eigener Parameter, wie z. B. -1 (um Protokoll-Version 1 zu verwenden), mitgegeben werden, muss der ganze Aufruf in Anführungszeichen eingeschlossen werden, da rsync sonst versucht, die Option auszuwerten:

huhn@asteroid:~$ rsync -e "ssh -1" datei ziel

Die verschlüsselte Verwendung von rsync lässt sich durch Setzen einer Umgebungsvariableübrigens als Standard definieren:

huhn@asteroid:~$ export RSYNC_RSH=ssh

Nach Setzen dieser Variable darf die Option -e ssh weggelassen werden. Übrigens: rsync eignet sich zusammen mit der Option --partial prima zum Übertragen von größeren Dateien:

huhn@asteroid:~$ rsync --partial datei.avi transpluto:filme/
Password:

Auf dem anderen Server sehen Sie mit Hilfe von ls -l das partielle File:

huhn@transpluto:~$ ls -l .datei@L: *
-rw——-    1 huhn     users     3899392 Jan  6 20:31 .datei.avi.yeahkG

Bricht der Kopiervorgang ab, wird der schon transferierte Teil nicht gelöscht, sondern unter dem Dateinamen abgelegt. Nehmen Sie die Übertragung wieder auf, prüft rsync zunächst, was auf dem Zielsystem schon vorhanden ist und setzt dort wieder an.

Glossar

Symbolische Links

Ein Verweis auf eine andere Datei, der von Anwendungsprogrammen wie eben diese Datei behandelt wird. Wenn die Datei, auf die ein Symlink verweist, gelöscht wird, zeigt der Link ins Leere. Symlinks werden mit dem Kommando "ln -s quelldatei zieldatei" erzeugt.

Dateirechte

Dateien haben neben einem Eigentümer und der Zugehörigkeit zu einer Gruppe bestimmte Rechte: Das "r" steht für Leseerlaubnis ("read"), "w" für Schreibberechtigung ("write") und das "x" für die Erlaubnis, die Datei auszuführen ("executable"). Die ersten drei Zeichen gehören zum Dateieigentümer, die zweiten drei zur Gruppe und die letzte Dreiergruppe gehört zu allen übrigen Benutzern des Systems. Je nachdem welcher Buchstabe dort erscheint, darf das File entsprechend gelesen, geschrieben oder ausgeführt werden [2].

Timestamps

Die Linux-Dateisysteme speichern eine Vielzahl von Dateiinformationen ab, z. B. die Zeitpunkte ("Zeitstempel"), die seit dem letzten Dateizugriff (atime), der letzten Statusänderung (ctime) oder der letzten Dateiinhaltsänderung (mtime) vergangen sind.

Suchmuster

Allgemein bestehen diese aus zwei Komponenten: der Angabe, nach welchem Zeichen gesucht wird, und der Angabe, wie oft die gesuchten Zeichen auftreten dürfen. Zusammen mit rsync gibt es eine ganze Reihe von komplizierten Zeichenkombinationen, denen in der Manpage etliche Abschnitte gewidmet werden. Mit den gängigen Wildcardskönnen Sie aber schon die meisten Dinge abdecken.

Wildcards

Sonderzeichen, die Teile von Zeichenketten unbestimmt lassen. Ein Fragezeichen "?" in einer Zeichenkette lässt nur denjenigen Buchstaben dieser Zeichenkette unbestimmt (z. B. h?llo => hallo, hGllo, h7llo,…), an dem sich das Fragezeichen befindet, während ein Stern "@L: *" für beliebig viele verschiedene Zeichen steht (z. B. G@L: *ss => Guss, Genuss).

Umgebungsvariable

Die Shell stellt dem Benutzer Speicherplatz bereit, um bestimmte Informationen aufzubewahren und Programmen zugänglich zu machen. Diese Umgebungsvariablen (environment variables) bestehen jeweils aus dem Namen und dem zugeordneten Wert. Für die Linux-Standard-Shell bash setzen Sie diese mit export, für die csh mit dem Befehl setenv.

Infos

[1] http://rsync.samba.org/

[2] Heike Jurzik: "Rechte und Pflichten – meine oder Deine Datei?", LinuxUser 10/2000, S. 93, http://www.linux-user.de/ausgabe/2000/10/093-zubefehl/befehl9.html

[3] Heike Jurzik und Hans-Georg Eßer: "Auf der sicheren Seite – ssh und scp", LinuxUser 07/2001, S. 92, http://www.linux-user.de/ausgabe/2001/07/092-zubefehl/befehl17.html

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • Synchron schalten
    Mit Rsync synchronisieren Sie Daten entweder auf einem lokalen Rechner oder über ein Netzwerk. Vor dem eigentlichen Abgleich überprüft das Programm, welche Unterschiede es zwischen Quell- und Zieldateien gibt, und überträgt nur die Änderungen.
  • cp und mv
    In dieser "Zu Befehl"-Folge zeigen wir Ihnen, wie Sie Dateien an andere Stellen kopieren oder verschieben. Bei genauem Hinsehen geschehen manchmal recht ungewöhnliche Dinge: Was passiert, wenn man einen symbolischen Link kopiert? Wie bleiben möglichst viele Eigenschaften einer Datei beim Kopieren erhalten? Und wie kopiert man Unterverzeichnisse?
  • Zu Befehl: Kanäle, Pipes und Tee
    Mit wenigen Handgriffen leiten Sie auf der Kommandozeile Ein- und Ausgaben von Befehlen um und kombinieren Kommandos. Wir stellen die benötigten Bash-Operatoren vor und zeigen, wie Sie mit dem Programm tee noch einen Zwischenschritt einlegen.
  • Zu Befehl: ssh, scp
    Die klassischen Unix-Programme Telnet und FTP erlauben Verbindungen und Datei-Transfers zu anderen Rechnern im Netz, sind aber unsicher: Alle Daten werden unverschlüsselt übertragen. Deswegen verwenden man heute die SSH-Tools (Secure Shell), die das Gleiche ermöglichen, dabei aber durch Verschlüsselung für Sicherheit sorgen.
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.