documentation.suse.com / Kopieren von Dateien und Verzeichnissen mit Rsync
SUSE Linux Enterprise Server 16.0

Kopieren von Dateien und Verzeichnissen mit Rsync

Veröffentlicht: 04.11.2025
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 /directory1 nach /destination kopiert.

  • > rsync -av /directory1 /destination/

    Im obigen Beispiel wird das Verzeichnis /directory1 nach /destination kopiert, das Ergebnis ist /destination/directory1/.

  • > rsync -av example1.txt example2.txt /destination/directory/

    Das obige Beispiel zeigt das Kopieren der Dateien example1.txt und example2.txt in das Zielverzeichnis.

Die häufig verwendeten OPTIONS sind unten aufgeführt:

  • -V

    Zeigt umfassende Ausgabetexte an

  • -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

  • -n oder --dry-run

    Führt einen Probelauf ohne Änderungen durch

  • -r

    Kopiert Verzeichnisse rekursiv

  • --progress

    Zeigt den Fortschritt während der Übertragung an

  • -b

    Erstellt während der Datensynchronisierung eine Sicherung

  • -h

    Zeigt die Zahlen in der Ausgabe in einem für Menschen lesbaren Format an

  • -e

    Weist Rsync an, für Remote-Übertragungen das SSH-Protokoll zu verwenden

  • -q or --quiet

    Schaltet den Rsync-Befehl und die Optionsausgabe stumm

  • --version

    Druckt die Rsync-Versionsnummer und beendet

Lokales Kopieren von Dateien mit Komprimierung
> rsync -avz example1.txt example2.txt /destination/

-a-Archivmodus

-v umfassend

-z Daten 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/
Anmerkung
Anmerkung: Nachgestellter Schrägstrich

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.

Vorgehen 1: Einrichten eines Rsync-Servers

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:

  1. Erstellen Sie auf Ihrem lokalen Computer ein /var/backup-Verzeichnis, in dem alle Sicherungskopien gespeichert werden sollen.

    > mkdir /var/backup
  2. Legen Sie das Eigentum fest.

    In diesem Beispiel ist der Benutzer tux in der Gruppe users Eigentümer des Verzeichnis:

    > chown tux.users /var/backup
  3. Konfigurieren des rsyncd-Daemon:

    1. Erstellen Sie ein Verzeichnis /etc/rsyncd.d/

      > mkdir /etc/rsyncd.d/
    2. Erstellen Sie die Hauptkonfigurationsdatei und tragen Sie die folgenden Zeilen /etc/rsyncd.conf ein:

      log file = /var/log/rsync.log1
      pid file = /var/lock/rsync.lock2
      merge /etc/rsyncd.d3
      include /etc/rsyncd.d4

      1

      /var/log/rsync.log ist der Ort, an dem Rsync die Protokolle schreibt.

      2

      /var/lock/rsync.lock ist die Datei, die die PID der laufenden Rsync-Daemon-Instanz enthält.

      3

      Führt die globalen Werte aus den Dateien /etc/rsyncd.d/*.inc in der Hauptkonfigurationsdatei zusammen.

      4

      Lädt die Module (oder Ziele) aus den Dateien /etc/rsyncd.d/*.conf. Diese Dateien dürfen keine Verweise auf die globalen Werte enthalten.

  4. Legen Sie das Modul oder 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 3
         path = /var/backup 4
         auth users = tux 5
         secrets file = /etc/rsyncd.secrets 6
         comment = Our backup target 7

    Im gegebenen Beispiel:

    1

    [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.

    2

    uid = tux gibt den Benutzer- oder Gruppennamen an, der für die Dateiübertragung herangezogen werden soll.

    3

    gid = users definiert den Pfad, in dem die Sicherungskopien gespeichert werden sollen (aus Schritt 1).

    4

    path = /var/backup definiert den Pfad, in dem die Sicherungskopien gespeichert werden sollen (aus Schritt 1).

    5

    auth users = tux 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.

    6

    secrets file = /etc/rsyncd.secrets gibt den Pfad einer Datei an, die Zeilen mit Benutzernamen und einfachen Passwörtern enthält.

  5. Erstellen Sie die Datei /etc/rsyncd.secrets mit dem folgenden Inhalt und ersetzen Sie PASSPHRASE:

    # user:passwd
    tux:PASSPHRASE
  6. Die Datei darf nur von „root“ gelesen werden können:

    chmod 0600 /etc/rsyncd.secrets
  7. Starten und aktivieren Sie den rsyncd-Daemon mit:

    > systemctl enable rsyncd
    > systemctl start rsyncd
  8. Testen 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.

  9. Auf Ihrem lokalen Computer listen Sie mit dem folgenden Befehl 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.

  10. 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::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.

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.