9 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.
9.1 Konzeptüberblick #
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.
9.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:
-v
Gibt einen ausführlicheren Text zurück
-a
Archivmodus; kopiert Dateien rekursiv und behält die Zeitstempel, das Benutzer-/Gruppeneigentum, die Dateiberechtigungen und die symbolischen Links bei.
-z
Komprimiert 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.
9.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 Befehl kopieren Sie eine einzelne Datei aus einem Verzeichnis auf dem Computer in einen anderen Pfad:
tux >
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/
anzugeben! Wenn Sie den Schrägstrich nicht einfügen, wird die Datei backup.tar.xz
in /var/backup
kopiert (also in eine Datei), 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:
tux >
rsync
-avz tux /var/backup/
Die Kopie befindet sich im absoluten Pfad /var/backup/tux/
.
9.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 Befehl kopieren Sie die Datei file.tar.xz
vom lokalen Host auf den Remote-Host 192.168.1.1
mit identischen Benutzern (lokal und remote):
tux >
rsync
-avz file.tar.xz tux@192.168.1.1:
Alternativ sind auch die folgenden Befehle möglich und äquivalent:
tux >
rsync
-avz file.tar.xz 192.168.1.1:~tux >
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 Befehl 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:
tux >
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
.
9.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/backup
verwendet:root #
mkdir
/var/backupLegen Sie das Eigentum fest. In diesem Fall ist der Benutzer
tux
in der Gruppeusers
der Eigentümer des Verzeichnisses:root #
chown
tux.users /var/backupKonfigurieren Sie den rsyncd-Daemon.
Die Konfigurationsdatei wird in eine Hauptdatei und einige „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/*.inc
gespeichert werden, die Module dagegen in den Dateien/etc/rsyncd.d/*.conf
:Erstellen Sie das Verzeichnis
/etc/rsyncd.d/
:root #
mkdir
/etc/rsyncd.d/Tragen Sie die folgenden Zeilen in die Hauptkonfigurationsdatei
/etc/rsyncd.conf
ein:# 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.conf
an:# 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
tux
zulässig.Gibt den Pfad einer Datei an, die Zeilen mit Benutzernamen und einfachen Passwörtern enthält.
Erstellen Sie die Datei
/etc/rsyncd.secrets
mit dem folgenden Inhalt und ersetzen Sie PASSPHRASE:# user:passwd tux:PASSPHRASE
Die Datei darf nur von
root
gelesen werden können:root #
chmod
0600 /etc/rsyncd.secrets
Starten und aktivieren Sie den rsyncd-Daemon:
root #
systemctl
enable rsyncdroot #
systemctl
start rsyncdTesten Sie den Zugriff auf den Rsync-Server:
tux >
rsync
jupiter::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. Diese Funktion ist besonders beim Debuggen der Datenübertragungen hilfreich.
Mit dem folgenden Befehl listen Sie den Inhalt des Sicherungsziels auf:
rsync -avz jupiter::backup
Dieser Befehl 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 Befehl 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.
9.6 Weiterführende Informationen #
- CSync
Bidirektionales Dateisynchronisierungswerkzeug, siehe https://www.csync.org/.
- RSnapshot
Erstellt inkrementelle Sicherungen, siehe http://rsnapshot.org.
- Unison
Bidirektionales Dateisynchronisierungswerkzeug – ähnlich wie CSync, jedoch mit grafischer Benutzeroberfläche, siehe http://www.seas.upenn.edu/~bcpierce/unison/.
- Rear
Disaster Recovery-Framework, siehe Administrationshandbuch für die SUSE Linux Enterprise-Hochverfügbarkeitserweiterung https://documentation.suse.com/sle-ha-12/.