15 Kopieren von Dateien mit RSync #
Viele moderne Benutzer arbeiten heutzutage gleich mit mehreren Computern: Computer daheim und am Arbeitsplatz, Laptop, Smartphone oder Tablet. Damit wird die Synchronisierung von Dateien und Dokumenten über mehrere Geräte wichtiger als je zuvor.
Bevor Sie ein Synchronisierungstool starten, machen Sie sich mit dessen Funktionen und Optionen vertraut. Sichern Sie in jedem Fall wichtige Dateien.
15.1 Konzeptübersicht #
Sollen große Datenmengen über eine langsame Netzwerkverbindung synchronisiert werden, bietet Rsync eine zuverlässige Methode, mit der ausschließlich die Änderungen in den Dateien übermittelt werden. Dies betrifft nicht nur Textdateien, sondern auch binäre Dateien. Um die Unterschiede zwischen Dateien zu erkennen, teilt rsync die Dateien in Blöcke auf und berechnet Prüfsummen zu diesen Blöcken.
Zum Erkennen der Änderungen ist eine gewisse Rechenleistung erforderlich. Die Computer auf beiden Seiten müssen daher ausreichende Ressourcen aufweisen (auch ausreichend RAM).
Rsync ist insbesondere dann von Nutzen, wenn große Datenmengen mit kleinen Änderungen in regelmäßigen Abständen übermittelt werden sollen. Dies ist häufig bei Sicherungskopien der Fall. Rsync eignet sich auch zum Spiegeln von Staging-Servern, mit denen komplette Verzeichnisbaumstrukturen von Webservern auf einem Webserver in einer DMZ gespeichert werden.
Trotz seines Namens ist Rsync kein Synchronisierungswerkzeug. Rsync ist ein Werkzeug, das Daten jeweils nur in eine einzige Richtung kopiert, nicht in beide Richtungen. Etwas anderes ist damit nicht möglich. Wenn Sie ein bidirektionales Werkzeug benötigen, mit dem Quelle und Ziel synchronisiert werden, verwenden Sie Csync.
15.2 Einfache Syntax #
Für das Befehlszeilenwerkzeug Rsync gilt die folgende grundlegende Syntax:
rsync [OPTION] SOURCE [SOURCE]... DEST
Sie können Rsync auf jedem lokalen Computer oder Remote-Computer verwenden, sofern Sie die erforderlichen Zugriffs- und Schreibrechte besitzen. Es können mehrere SOURCE-Einträge vorliegen. Die Platzhalter SOURCE und DEST können durch Pfade und/oder durch URLs ersetzt werden.
Die folgenden Rsync-Optionen werden am häufigsten verwendet:
-vGibt einen ausführlicheren Text zurück
-aArchivmodus; kopiert Dateien rekursiv und behält die Zeitstempel, das Benutzer-/Gruppeneigentum, die Dateiberechtigungen und die symbolischen Links bei
-zKomprimiert die übermittelten Daten
Beim Arbeiten mit Rsync sind die nachgestellten Schrägstriche besonders zu beachten. Ein nachgestellter Schrägstrich nach dem Verzeichnis bezeichnet den Inhalt des Verzeichnisses. Die Angabe ohne nachgestellten Schrägstrich bezeichnet das Verzeichnis selbst.
15.3 Lokales Kopieren von Dateien und Verzeichnissen #
In der nachfolgenden Beschreibung wird vorausgesetzt, dass der aktuelle Benutzer Schreibrechte für das Verzeichnis /var/backup besitzt. Mit dem folgenden Kommando kopieren Sie eine einzelne Datei aus einem Verzeichnis auf dem Computer in einen anderen Pfad:
>rsync-avz backup.tar.xz /var/backup/
Die Datei backup.tar.xz wird in das Verzeichnis /var/backup/ kopiert. Der absolute Pfad lautet /var/backup/backup.tar.xz.
Denken Sie daran, den nachgestellten Schrägstrich nach dem Verzeichnis /var/backup/ einzufügen. Wenn Sie den Schrägstrich nicht einfügen, wird die Datei backup.tar.xz in /var/backup (also in eine Datei) kopiert und nicht in das Verzeichnis /var/backup/!
Verzeichnisse werden auf ähnliche Weise kopiert wie einzelne Dateien. Im folgenden Beispiel wird das Verzeichnis tux/ mit dessen Inhalt in das Verzeichnis /var/backup/ kopiert:
>rsync-avz tux /var/backup/
Die Kopie befindet sich im absoluten Pfad /var/backup/tux/.
15.4 Remote-Kopieren von Dateien und Verzeichnissen #
Das Rsync-Werkzeug muss auf beiden Computern vorhanden sein. Zum Kopieren von Dateien aus Remote-Verzeichnissen oder in diese benötigen Sie eine IP-Adresse oder einen Domänennamen. Ein Benutzername ist optional, wenn die aktuellen Benutzernamen auf dem lokalen Computer und dem Remote-Computer identisch sind.
Mit dem folgenden Kommando kopieren Sie die Datei file.tar.xz vom lokalen Host auf den Remote-Host 192.168.1.1 mit identischen Benutzern (lokal und remote):
>rsync-avz file.tar.xz tux@192.168.1.1:
Alternativ sind auch die folgenden Befehle möglich und äquivalent:
>rsync-avz file.tar.xz 192.168.1.1:~>rsync-avz file.tar.xz 192.168.1.1:/home/tux
In allen Fällen mit Standardkonfiguration werden Sie aufgefordert, den Passwortsatz des Remote-Benutzers einzugeben. Mit diesem Kommando wird file.tar.xz in das Benutzerverzeichnis des Benutzers tux kopiert (in der Regel /home/tux).
Verzeichnisse werden im Remote-Verfahren auf ähnliche Weise kopiert wie lokal. Im folgenden Beispiel wird das Verzeichnis tux/ mit dessen Inhalt in das Remote-Verzeichnis /var/backup/ auf dem Host 192.168.1.1 kopiert:
>rsync-avz tux 192.168.1.1:/var/backup/
Unter der Voraussetzung, dass Sie Schreibrechte auf dem Host 192.168.1.1 besitzen, befindet sich die Kopie im absoluten Pfad /var/backup/tux.
15.5 Konfigurieren und Verwenden eines Rsync-Servers #
Rsync kann als Daemon (rsyncd) ausgeführt werden, der den Standardport 873 auf eingehende Verbindungen überwacht. Dieser Daemon kann „Kopierziele“ empfangen.
Mit den nachfolgenden Anweisungen erstellen Sie einen Rsync-Server auf jupiter mit einem backup-Ziel. In diesem Ziel können Sie Ihre Sicherungskopien speichern. So erstellen Sie einen Rsync-Server:
Erstellen Sie auf jupiter ein Verzeichnis, in dem alle Sicherungskopien gespeichert werden sollen. In diesem Beispiel wird das Verzeichnis
/var/backupverwendet:#mkdir/var/backupLegen Sie das Eigentum fest. In diesem Fall ist der Benutzer
tuxin der Gruppeusersder Eigentümer des Verzeichnisses:#chowntux.users /var/backupKonfigurieren Sie den rsyncd-Daemon.
Die Konfigurationsdatei wird in eine Hauptdatei und bestimmte „Module“ aufgeteilt, in denen sich das Sicherungsziel befindet. So können zusätzliche Module später einfacher eingefügt werden. Die globalen Werte können in den Dateien
/etc/rsyncd.d/*.incgespeichert werden, die Module dagegen in den Dateien/etc/rsyncd.d/*.conf:Erstellen Sie ein Verzeichnis
/etc/rsyncd.d/:#mkdir/etc/rsyncd.d/Tragen Sie die folgenden Zeilen in die Hauptkonfigurationsdatei
/etc/rsyncd.confein:# rsyncd.conf main configuration file log file = /var/log/rsync.log pid file = /var/lock/rsync.lock &merge /etc/rsyncd.d 1 &include /etc/rsyncd.d 2
Legen Sie das Modul (das Sicherungsziel) mit den folgenden Zeilen in der Datei
/etc/rsyncd.d/backup.confan:# backup.conf: backup module [backup] 1 uid = tux 2 gid = users 2 path = /var/backup 3 auth users = tux 4 secrets file = /etc/rsyncd.secrets 5 comment = Our backup target
Das backup-Ziel. Geben Sie einen beliebigen Namen ein. Benennen Sie das Ziel nach Möglichkeit entsprechend seinem Zweck und verwenden Sie denselben Namen in der
*.conf-Datei.Gibt den Benutzer- oder Gruppennamen an, der für die Dateiübertragung herangezogen werden soll.
Definiert den Pfad, in dem die Sicherungskopien gespeichert werden sollen (aus Schritt 1).
Gibt eine durch Komma getrennte Liste der zulässigen Benutzer an. In der einfachsten Form enthält diese Liste die Namen der Benutzer, die berechtigt sind, eine Verbindung zu diesem Modul herzustellen. In diesem Fall ist lediglich der Benutzer
tuxzulässig.Gibt den Pfad einer Datei an, die Zeilen mit Benutzernamen und einfachen Passwörtern enthält.
Erstellen Sie die Datei
/etc/rsyncd.secretsmit dem folgenden Inhalt und ersetzen Sie PASSPHRASE:# user:passwd tux:PASSPHRASE
Die Datei darf nur von
rootgelesen werden können:#chmod0600 /etc/rsyncd.secrets
Starten und aktivieren Sie den rsyncd-Daemon:
#systemctlenable rsyncd#systemctlstart rsyncdTesten Sie den Zugriff auf den Rsync-Server:
>rsyncjupiter::Beispiel für eine Antwort:
backup Our backup target
Ansonsten prüfen Sie die Konfigurationsdatei-, Firewall- und Netzwerkeinstellungen.
Mit den obigen Schritten wird ein Rsync-Server erstellt, auf dem Sie nun Sicherungskopien speichern können. Im obigen Beispiel wird auch eine Protokolldatei über alle Verbindungen angelegt. Diese Datei wird unter /var/log/rsyncd.log abgelegt. Dies ist nützlich, um Ihre Übertragungen zu debuggen.
Mit dem folgenden Kommando listen Sie den Inhalt des Sicherungsziels auf:
> rsync -avz jupiter::backup
Dieses Kommando listet alle Dateien auf, die auf dem Server im Verzeichnis /var/backup liegen. Diese Anfrage wird auch in der Protokolldatei unter /var/log/rsyncd.log aufgezeichnet. Um die Übertragung tatsächlich zu starten, geben Sie ein Quellverzeichnis an. Verwenden Sie . für das aktuelle Verzeichnis. Mit dem folgenden Kommando wird beispielsweise das aktuelle Verzeichnis auf den Rsync-Sicherungsserver kopiert:
> rsync -avz . jupiter::backup
Standardmäßig werden beim Ausführen von Rsync keine Dateien und Verzeichnisse gelöscht. Soll die Löschung aktiviert werden, müssen Sie die zusätzliche Option --delete angeben. Um sicherzustellen, dass keine neueren Dateien überschrieben werden, kann stattdessen die Option --update angegeben werden. Dadurch entstehende Konflikte müssen manuell aufgelöst werden.
15.6 Weitere Informationen #
- Csync
Bidirektionales Dateisynchronisierungswerkzeug, siehe https://csync.org/.
- RSnapshot
Erstellt inkrementelle Sicherungen, siehe https://rsnapshot.org.
- Unison
Bidirektionales Dateisynchronisierungswerkzeug – ähnlich wie CSync, jedoch mit grafischer Benutzeroberfläche, siehe https://www.seas.upenn.edu/~bcpierce/unison/.
- Rear
Informationen zu einem Framework für die Notfallwiederherstellung finden Sie im Administration Guide of the SUSE Linux Enterprise High Availability Extension, chapter Disaster Recovery with Rear (Relax-and-Recover).