Kopieren von Dateien und Verzeichnissen mit Rsync
- WAS?
Sie können das Rsnyc-Tool verwenden, um Dateien lokal oder remote zu kopieren. Rsync ist unidirektional und kann Dateien nur in eine Richtung kopieren.
- WARUM?
Dieser Artikel bietet einen Überblick über das Rsnyc-Tool und seine grundlegende Verwendung zum lokalen und Remote-Kopieren von Dateien.
- AUFWAND
Es dauert bis zu 20 Minuten, um die grundlegende Verwendung des Rsync-Tools zu verstehen.
- ZIEL
Erlangen Sie ein grundlegendes Verständnis von Rsync und seiner Verwendung für Dateiübertragungen.
- ANFORDERUNGEN
Zugriffsberechtigungen für die Quell- und Zielspeicherorte zum Kopieren von Dateien.
1 Das Rsync-Konzept #
Sie können das rsync-Tool zum Übertragen oder Kopieren von Dateien lokal und remote verwenden. rsync ist unidirektional. Es kopiert Dateien in eine Richtung und synchronisiert keine Daten. Anstatt den gesamten Inhalt der Datei zu übertragen, minimiert rsync die Menge der kopierten Daten, indem nur die Änderungen innerhalb der Datei verschoben werden. So wird die Datenübertragung über eine langsame Netzwerkverbindung verbessert.
Wenn große Dateien mit rsync kopiert werden, erfordert das Erkennen von Änderungen eine gewisse Rechenleistung. Die Computer auf Quell- und Zielseite müssen daher ausreichende Ressourcen aufweisen, einschließlich RAM.
Verwenden Sie Rsync, wenn große Datenmengen mit kleinen Änderungen in regelmäßigen Abständen übermittelt werden sollen. Dies ist nützlich für die Arbeit mit Sicherungen. rsync eignet sich auch zum Spiegeln von Staging-Servern, mit denen komplette Verzeichnisbaumstrukturen von Webservern auf einem Webserver in einer DMZ gespeichert werden.
Dieser Artikel enthält Beispiele, die die Verwendung von rsync zum lokalen und remoten Kopieren von Dateien zeigen. In diesem Dokument wird auch erläutert, wie Sie einen rsync-Server verwenden.
2 Grundlegende Nutzung von Rsync #
Sie können rsync auf jedem Computer verwenden, auf dem Sie Zugriffs- und Schreibberechtigungen haben.
Kopieren Sie Dateien vom Quellspeicherort zum Zielspeicherort, wie im folgenden Beispiel gezeigt:
>rsync [OPTION] SOURCE [SOURCE]... DESTINATION
Sie können mehrere SOURCE-Einträge haben und die Platzhalter SOURCE und DESTINATION können Pfade, URLs oder beides sein.
Nachfolgend sind einige Anwendungsfälle für das Kopieren von Dateien aufgeführt:
>rsync -av /directory1/ /destination/Im obigen Beispiel bezeichnet der abschließende Schrägstrich nach dem Verzeichnis den Inhalt des Verzeichnisses und nicht das Verzeichnis selbst. Dabei werden nur die Inhalte von
/directory1nach/destinationkopiert.>rsync -av /directory1 /destination/Im obigen Beispiel wird das Verzeichnis
/directory1nach/destinationkopiert, das Ergebnis ist/destination/directory1/.>rsync -av example1.txt example2.txt /destination/directory/Das obige Beispiel zeigt das Kopieren der Dateien
example1.txtundexample2.txtin das Zielverzeichnis.
Die häufig verwendeten OPTIONS sind unten aufgeführt:
-VZeigt umfassende Ausgabetexte an
-aArchivmodus; kopiert Dateien rekursiv und behält die Zeitstempel, das Benutzer-/Gruppeneigentum, die Dateiberechtigungen und die symbolischen Links bei
-zKomprimiert die übermittelten Daten
-noder--dry-runFührt einen Probelauf ohne Änderungen durch
-rKopiert Verzeichnisse rekursiv
--progressZeigt den Fortschritt während der Übertragung an
-bErstellt während der Datensynchronisierung eine Sicherung
-hZeigt die Zahlen in der Ausgabe in einem für Menschen lesbaren Format an
-eWeist Rsync an, für Remote-Übertragungen das SSH-Protokoll zu verwenden
-q or --quietSchaltet den Rsync-Befehl und die Optionsausgabe stumm
--versionDruckt die Rsync-Versionsnummer und beendet
- Lokales Kopieren von Dateien mit Komprimierung
>rsync -avz example1.txt example2.txt /destination/-a-Archivmodus-vumfassend-zDaten während der Übertragung komprimieren- Kopieren eines Verzeichnisses mit Komprimierung
>rsync -avz /sourcedirectory/ /destinationdirectory/Überträgt
/sourcedirectory/Inhalte mit Komprimierung.- Remote-Dateiübertragung mit Komprimierung
>rsync -avz example1.txt user@remote_host:/remote/destination/Überträgt
example1.txtüber SSH an einen Remotecomputer, wobei die Daten komprimiert werden.- Remote-Verzeichnisübertragung mit Komprimierung
>rsync -avz /sourcedirectory/ user@remote_host:/remote/destination/Überträgt
/sourcedirectory/über SSH an einen Remotecomputer, wobei die Daten komprimiert werden.
3 Lokales Kopieren von Dateien und Verzeichnissen mit Rsync #
Sie können Dateien innerhalb desselben Computers mit Rsync kopieren, wenn Sie über Schreibberechtigung für den Zielspeicherort verfügen.
Kopieren Sie die Datei backup.tar.xz mithilfe des Befehls rsync -avz backup.tar.xz /var/backup/ an den Zielort /var/backup/.
Die Datei backup.tar.xz wird in das Verzeichnis /var/backup/ kopiert. Der absolute Pfad lautet /var/backup/backup.tar.xz.
4 Remote-Kopieren von Dateien und Verzeichnissen mit Rsync #
Sie können mit Rsync Dateien von einem Computer auf einen Remotecomputer kopieren. Stellen Sie sicher, dass Sie sowohl auf dem Quell- als auch auf dem Zielcomputer über Rsync verfügen und dass Sie über SSH mit dem Remotecomputer verbunden sind.
Mit dem folgenden Befehl kopieren Sie eine einzelne Datei aus einem Verzeichnis auf Ihrem Computer in das Verzeichnis /var/backup auf einem Remotecomputer:
>rsync -avz example1.txt user@remote_host:/var/backup/
Denken Sie daran, den nachgestellten Schrägstrich nach dem /var/backup/-Verzeichnis einzufügen. Wenn Sie den Schrägstrich nicht einfügen, wird die Datei example1.txt in die Datei /var/backup kopiert und nicht in das Verzeichnis /var/backup/.
Überprüfen Sie die kopierte Datei im absoluten Pfad /var/backup/example1.txt.
So kopieren Sie das Verzeichnis source/ und dessen Inhalt in das Verzeichnis /var/backup/:
>rsync -avz /source/ user@remote_host:/var/backup/
Überprüfen Sie das kopierte Verzeichnis im absoluten Pfad /var/backup/source/.
5 Konfigurieren und Verwenden eines Rsync-Servers #
Ein Rsync-Server ermöglicht die Dateisynchronisierung, automatisierte Backups und zentrale Speicherung. Rsync kann als Daemon (rsyncd) ausgeführt werden, der den Standardport 873 auf eingehende Verbindungen überwacht. Dieser Daemon kann copying targets empfangen.
Die Konfigurationsdatei des Rsync-Daemon ist 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 /etc/rsyncd.d/*.inc-Dateien gespeichert werden, die Module dagegen in den /etc/rsyncd.d/*.conf-Dateien.
Mit den nachfolgenden Anweisungen erstellen Sie einen Rsync-Server mit einem backup-Ziel. In diesem Ziel können Sie Ihre Sicherungskopien speichern. So erstellen Sie einen Rsync-Server:
Erstellen Sie auf Ihrem lokalen Computer ein
/var/backup-Verzeichnis, in dem alle Sicherungskopien gespeichert werden sollen.>mkdir /var/backupLegen Sie das Eigentum fest.
In diesem Beispiel ist der Benutzer
tuxin der GruppeusersEigentümer des Verzeichnis:>chown tux.users /var/backupKonfigurieren des
rsyncd-Daemon:Erstellen Sie ein Verzeichnis
/etc/rsyncd.d/>mkdir /etc/rsyncd.d/Erstellen Sie die Hauptkonfigurationsdatei und tragen Sie die folgenden Zeilen
/etc/rsyncd.confein:log file = /var/log/rsync.log1 pid file = /var/lock/rsync.lock2 merge /etc/rsyncd.d3 include /etc/rsyncd.d4
/var/log/rsync.logist der Ort, an dem Rsync die Protokolle schreibt./var/lock/rsync.lockist die Datei, die die PID der laufenden Rsync-Daemon-Instanz enthält.Führt die globalen Werte aus den Dateien
/etc/rsyncd.d/*.incin der Hauptkonfigurationsdatei zusammen.Lädt die Module (oder Ziele) aus den Dateien
/etc/rsyncd.d/*.conf. Diese Dateien dürfen keine Verweise auf die globalen Werte enthalten.
Legen Sie das Modul oder 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 3 path = /var/backup 4 auth users = tux 5 secrets file = /etc/rsyncd.secrets 6 comment = Our backup target 7
Im gegebenen Beispiel:
[backup]ist das Sicherungsziel. Für die das Sicherungsziel kann ein beliebiger Name verwendet werden. Sie können das Ziel nach Möglichkeit entsprechend seinem Zweck benennen, verwenden Sie denselben Namen in der*.conf-Datei.uid = tuxgibt den Benutzer- oder Gruppennamen an, der für die Dateiübertragung herangezogen werden soll.gid = usersdefiniert den Pfad, in dem die Sicherungskopien gespeichert werden sollen (aus Schritt 1).path = /var/backupdefiniert den Pfad, in dem die Sicherungskopien gespeichert werden sollen (aus Schritt 1).auth users = tuxgibt 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.secrets file = /etc/rsyncd.secretsgibt 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 SiePASSPHRASE:# user:passwd tux:PASSPHRASE
Die Datei darf nur von „root“ gelesen werden können:
chmod 0600 /etc/rsyncd.secrets
Starten und aktivieren Sie den
rsyncd-Daemon mit:>systemctl enable rsyncd>systemctl start rsyncdTesten Sie auf dem Remotecomputer den Zugriff auf Ihren
rsync-Server:>rsync jupiter::Eine ähnliche Antwort wie die folgende wird angezeigt:
backup Our backup target
Wenn die obige Antwort nicht angezeigt wird, überprüfen Sie Ihre 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. Das Protokoll kann zur Fehlersuche bei Ihren Übertragungen herangezogen werden.Auf Ihrem lokalen Computer listen Sie mit dem folgenden Befehl den Inhalt des Sicherungsziels auf:
>rsync -avz jupiter::backupDieser Befehl listet alle Dateien auf, die auf dem Server im Verzeichnis
/var/backupliegen. Diese Anfrage wird auch in der Protokolldatei unter/var/log/rsyncd.logaufgezeichnet.Geben Sie das Quellverzeichnis an, um das aktuelle Verzeichnis in Ihren
rsync-Backup-Server zu kopieren. Wenn das Quellverzeichnis Ihr aktuelles Verzeichnis ist, verwenden Sie.>rsync -avz . jupiter::backupStandardmäßig werden beim Ausführen von
rsynckeine Dateien und Verzeichnisse gelöscht. Soll die Löschung aktiviert werden, müssen Sie die zusätzliche Option--deleteangeben. Um sicherzustellen, dass keine neueren Dateien überschrieben werden, kann stattdessen die Option--updateangegeben werden. Dadurch entstehende Konflikte müssen manuell aufgelöst werden.
6 Löschen und Aktualisieren von Dateien und Verzeichnissen mit Rsync #
Sie können Dateien innerhalb desselben Computers mit Rsync kopieren und synchronisieren, wenn Sie über Schreibberechtigung für den Zielspeicherort verfügen. Sie können Dateien oder Verzeichnisse nach dem Kopieren auch löschen.
So kopieren Sie Dateien example1.txt und example2.txt aus /source/directory/ nach /destination/directory/:
>rsync -av --update /source/directory/ /destination/directory/
Der Rsync-Befehl aktualisiert die Dateien example1.txt und example2.txt im /destination/directory/ wenn dies älter ist als die Quelldatei. Wenn die Version im Ziel neuer ist, werden die Dateien nicht überschrieben. Alle anderen neuen Dateien oder Verzeichnisse aus /source/directory/ werden ebenfalls nach /destination/ kopiert.
So kopieren Sie eine vorhandene Datei und löschen eine Datei, die im Zielverzeichnis nicht vorhanden ist:
>rsync -av --delete /source/directory/ /destination/directory/
In diesem Szenario enthalten sowohl das Quell- als auch das Zielverzeichnis example1.txt und example2.txt. Das /destination/directory enthält eine zusätzliche Datei, example3.txt.
Der Rsync-Befehl kopiert oder aktualisiert die Dateien example1.txt und example2.txt aus /source/directory/ nach /destination/directory/. Der Befehl löscht auch die Datei example3.txt aus /destination/directory/ da sie in /source/directory/ nicht existiert. Auch die Verzeichnisstruktur in /destination/directory/ wird bereinigt, sodass sie /source/directory/ entspricht.
7 Fehlersuche für Rsync #
Das Kopieren von Dateien oder Ordnern kann aus verschiedenen Gründen fehlschlagen. Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen und Ressourcen zum Kopieren der Dateien verfügen.
Mögliche Methoden zur Fehlerbehebung:
Stellen Sie sicher, dass Sie die neueste Version von Rsync verwenden. Stellen Sie für die Remote-Übertragung von Dateien oder Verzeichnissen sicher, dass Rsync sowohl auf dem Quell- als auch auf dem Zielcomputer installiert ist.
Stellen Sie sicher, dass Sie über die erforderliche Rsync-Zugriffsberechtigung verfügen.
Stellen Sie sicher, dass Sie den richtigen Hostnamen angeben, um Dateien remote zu kopieren.
Stellen Sie sicher, dass der Rsync-Dienst ausgeführt wird, wenn Sie Rsync im Daemon-Modus verwenden.
8 Rechtliche Hinweise #
Copyright © 2006–2025 , SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie in Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie in https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.