Rsync: Dateiübertragung und Synchronisation unter Linux

Rsync ist ein effizientes Tool zur Dateiübertragung und -synchronisation zwischen verschiedenen Systemen. Es wird häufig für Backups, Datei-Spiegelungen und das Aktualisieren von Dateien innerhalb lokaler Verzeichnisse oder zwischen entfernten Servern verwendet. Rsync optimiert den Datentransfer, indem es nur Unterschiede zwischen Quell- und Zieldateien überträgt. Aufgrund seiner Geschwindigkeit, Flexibilität und vielseitigen Optionen ist es eine bevorzugte Wahl für Systemadministratoren und Entwickler.

Voraussetzungen

Stellen Sie sicher, dass Sie Zugriff auf eine Linux-Workstation mit nicht-root sudo-Rechten haben und genügend Speicherplatz für große Dateiübertragungen vorhanden ist.

Installation von Rsync unter Linux

Rsync ist in den offiziellen Repositories der meisten Linux-Distributionen verfügbar und oft bereits vorinstalliert. Die folgenden Befehle zeigen, wie Sie Rsync abhängig von Ihrer Distribution installieren können.

Rsync mit APT installieren

Installation von Rsync mit PKG

Rsync mit Pacman installieren

Installation von Rsync mit DNF

Rsync mit YUM installieren


Rsync-Befehlsstruktur

Die folgende Syntax wird in Rsync verwendet:

Die Rsync-Befehle setzen sich aus diesen Elementen zusammen:

  • [OPTION]: Definiert verschiedene Flags oder Parameter zur Steuerung des Synchronisationsprozesses.
  • SRC: Gibt die Dateien und Verzeichnisse an, die synchronisiert werden sollen.
  • Für eine Übertragung über SSH nutzen Sie USER@HOST:QUELLE als Quellpfad.
  • DEST: Bestimmt das Zielverzeichnis oder die Zieldatei für die Synchronisation.
  • Für eine Remote-Synchronisation über SSH geben Sie USER@HOST:ZIEL als Zielpfad an.

Rsync-Befehlsoptionen

Hier sind einige der am häufigsten genutzten Rsync-Optionen und ihre Bedeutungen:

Option Langform Kurzform Beschreibung
Hilfe --help -h Zeigt die Rsync-Hilfe an.
Detailgrad --verbose -v Erhöht den Detailgrad der Ausgabe.
--quiet -q Unterdrückt nicht-fehlermeldende Ausgaben.
Dateiauswahl --archive -a Aktiviert den Archivmodus, um Symlinks, Berechtigungen und weitere Attribute beizubehalten.
--recursive -r Kopiert Verzeichnisse und deren Inhalte rekursiv.
--relative -R Behält relative Pfade bei.
Aktualisierung --update -u Überspringt Dateien, die im Zielverzeichnis neuer sind.
--inplace Aktualisiert Zieldateien direkt, ohne temporäre Kopien anzulegen.
Backups --backup -b Erstellt Backups von Dateien, bevor sie überschrieben werden.
--backup-dir=VERZ Speichert Backups in einem bestimmten Verzeichnis.
Symbolische Links --links -l Kopiert symbolische Links als solche.
--copy-links -L Ersetzt symbolische Links durch die Dateien oder Verzeichnisse, auf die sie verweisen.
Berechtigungen --perms -p Behält Datei-Berechtigungen während der Übertragung bei.
Zeitstempel --times -t Behält ursprüngliche Änderungszeiten bei.
Entfernen --delete Löscht überflüssige Dateien im Zielverzeichnis, die nicht in der Quelle existieren.
--delete-excluded Entfernt auch Dateien, die durch Ausschlussregeln (excludes) gefiltert wurden.
Testlauf --dry-run -n Simuliert den Transfer, ohne Änderungen vorzunehmen.
Remote Shell --rsh=BEFEHL -e Legt eine Remote-Shell für die Verbindung fest.
Größenkontrolle --max-size=GRÖSSE Überträgt keine Dateien, die größer als die angegebene Größe sind.
--min-size=GRÖSSE Ignoriert Dateien, die kleiner als die angegebene Größe sind.
Teilübertragungen --partial Behält unvollständige Übertragungen bei, um sie später fortzusetzen.
Dateifilterung --exclude=MUSTER Schließt Dateien aus, die dem angegebenen Muster entsprechen.
--include=MUSTER Sorgt dafür, dass bestimmte Dateien trotz vorheriger Filterregeln einbezogen werden.
Ausgabeformat --progress Zeigt den Fortschritt der Übertragung an.
-P Entspricht einer Kombination aus --partial und --progress.
--human-readable -h Formatiert die Ausgabe in einer leicht verständlichen Weise.
Kompression --compress -z Komprimiert die Dateiübertragung.
IP-Version --ipv4 -4 Verwendet ausschließlich IPv4.
--ipv6 -6 Verwendet ausschließlich IPv6.

Lokale Dateien mit Rsync übertragen

Die folgenden Schritte zeigen, wie Sie Dateien mit Rsync zwischen Verzeichnissen verschieben können.

Um die Dateien file1, file2 und file3 in ein Verzeichnis namens dest zu kopieren, verwenden Sie den Rsync-Befehl. Das letzte Argument in Rsync gibt immer das Ziel an, daher sollte der Befehl sorgfältig verwendet werden, um unbeabsichtigte Überschreibungen zu vermeiden.

rsync file1 file2 file3 dest

  • file1 file2 file3: Dateien, die kopiert werden.
  • dest: Zielverzeichnis, in dem die Dateien gespeichert werden.

Überprüfen Sie die Dateiübertragung mit folgendem Befehl:

Erwartete Ausgabe:

./dest/file1
./dest/file2
./dest/file3

Lokale Verzeichnisse kopieren

Standardmäßig kopiert Rsync nicht automatisch alle Inhalte eines Verzeichnisses. Um Verzeichnisse rekursiv zu kopieren und dabei Attribute wie Zeitstempel, Berechtigungen und symbolische Links zu erhalten, verwenden Sie die Option -a (Archivmodus).

Kopieren Sie das zuvor erstellte dest-Verzeichnis:

  • -a: Aktiviert den Archivmodus, um die Dateiattribute zu erhalten.
  • dest/: Quellverzeichnis (Ein abschließender / bedeutet, dass nur der Inhalt kopiert wird, nicht das Verzeichnis selbst).
  • dest-copy: Zielverzeichnis.

Überprüfen Sie das kopierte Verzeichnis mit:

Erwartete Ausgabe:

./dest-copy/file1
./dest-copy/file2
./dest-copy/file3

Dateien oder Verzeichnisse in Rsync ausschließen

Mit der Option --exclude in Rsync können bestimmte Dateien oder Verzeichnisse von der Synchronisation ausgeschlossen werden.

Das folgende Beispiel kopiert alle Inhalte des aktuellen Verzeichnisses, jedoch ohne file2 sowie alle Verzeichnisse, die mit dest beginnen:

rsync -a --exclude 'file2' --exclude 'dest*' . output

  • -a: Aktiviert den Archivmodus.
  • –exclude ‘file2’: Schließt Dateien mit dem Namen file2 aus.
  • –exclude ‘dest*’: Ignoriert alle Dateien oder Verzeichnisse, die mit dest beginnen.
  • .: Gibt das aktuelle Verzeichnis als Quelle an.
  • output: Zielverzeichnis.

Dateien mit Rsync auf einen Remote-Server übertragen

Folgen Sie diesen Schritten, um Dateien und Verzeichnisse über SSH mit einem entfernten System zu synchronisieren.

Dateien auf eine Remote-Maschine übertragen

Nutzen Sie den folgenden Rsync-Befehl, um Dateien und Verzeichnisse auf einen entfernten Server zu kopieren:

rsync -hazvP --delete --stats . user@192.0.2.1:synced_from_local

  • -h: Gibt Dateigrößen in einem lesbaren Format aus.
  • -a: Aktiviert den Archivmodus, um Dateiattribute beizubehalten.
  • -z: Komprimiert die Dateien während der Übertragung, um die Geschwindigkeit zu erhöhen.
  • -v: Aktiviert den ausführlichen Modus für detaillierte Ausgaben.
  • -P: Zeigt Fortschrittsanzeigen an und setzt unterbrochene Übertragungen fort.
  • –delete: Entfernt Dateien im Zielverzeichnis, die nicht mehr in der Quelle existieren.
  • –stats: Zeigt eine detaillierte Statistik zur Übertragung an.
  • .: Gibt das aktuelle Verzeichnis als Quelle an.
  • user@192.0.2.1:synced_from_local: Definiert die Zielmaschine für die Synchronisation:
    • user: Benutzername für den Zugriff auf die Remote-Maschine.
    • 192.0.2.1: IP-Adresse der Remote-Maschine.
    • synced_from_local: Zielverzeichnis auf dem Remote-Server.

Verbindung zur Remote-Maschine

Nach der Synchronisation können Sie sich per SSH mit der Remote-Maschine verbinden, um die übertragenen Dateien zu überprüfen:

Überprüfung der synchronisierten Dateien

Führen Sie auf der Remote-Maschine den folgenden Befehl aus, um zu überprüfen, ob alle Dateien erfolgreich übertragen wurden:

Erwartete Verzeichnisstruktur nach der Synchronisation:

synced_from_local/dest-copy/file1
synced_from_local/dest-copy/file2
synced_from_local/dest-copy/file3
synced_from_local/dest/file1
synced_from_local/dest/file2
synced_from_local/dest/file3
synced_from_local/file1
synced_from_local/file2
synced_from_local/file3
synced_from_local/output/file1
synced_from_local/output/file3

Vorsicht beim Einsatz von --delete

Seien Sie vorsichtig bei der Verwendung des --delete-Flags, da es Dateien am Zielort unwiderruflich entfernt, wenn sie in der Quelle nicht mehr vorhanden sind. Um unbeabsichtigten Datenverlust zu vermeiden, sollte stets ein Testlauf durchgeführt werden:

rsync -a --delete --dry-run SRC DEST

Fazit

In diesem Leitfaden haben Sie Rsync installiert, gelernt, wie man Dateien sowohl lokal als auch auf eine Remote-Maschine synchronisiert, und wichtige Optionen wie --exclude und den Archivmodus verwendet. Überprüfen Sie Ihre Rsync-Befehle sorgfältig, insbesondere bei Verwendung von --delete. Weitere Informationen finden Sie in der Rsync-Dokumentation:

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: