Was ist rsync und wie synchronisiert es Dateien?

Autor: Veröffentlicht

Kurz erklärt: rsync ist ein Befehlszeilenwerkzeug zum Kopieren und Synchronisieren von Dateien zwischen Verzeichnissen oder Computern. Bei weiteren Durchläufen überspringt es Dateien, die es als unverändert erkennt. Bei der Übertragung über ein Netzwerk kann es zudem nur die geänderten Datenblöcke übertragen. Es eignet sich zum Aktualisieren von Datenkopien und zum Übertragen von Dateien auf einen Server. Eine einfache Synchronisierung ersetzt jedoch keine Datensicherung mit Versionshistorie.

Wie funktioniert rsync und was unterscheidet es vom einfachen Kopieren?

rsync vergleicht die angegebene Quelle mit dem Ziel und ermittelt, welche Dateien übertragen werden müssen. Standardmäßig erkennt es Änderungen vor allem anhand der Dateigröße und des Änderungszeitpunkts. Es vergleicht also nicht bei jedem Durchlauf den gesamten Inhalt jeder Datei.

Bei Netzwerkübertragungen kann rsync einen Delta-Algorithmus verwenden: Dabei überträgt es fehlende oder geänderte Datenblöcke statt der gesamten bereits vorhandenen Datei. Beim ersten Kopieren in ein leeres Verzeichnis müssen allerdings alle ausgewählten Daten übertragen werden. Beim lokalen Kopieren überträgt rsync standardmäßig alle Dateien, die aktualisiert werden müssen, vollständig, da die Analyse einzelner Datenblöcke nicht immer einen Vorteil bietet.

Angenommen, du hast auf deinem Computer ein Verzeichnis mit Produktfotos und auf dem Server eine Kopie davon. Nachdem du fünf Fotos hinzugefügt hast, überträgt rsync beim nächsten Durchlauf die neuen Dateien, statt den gesamten Bestand erneut zu kopieren. Wenn du ein Foto aus der Quelle löschst, wird es jedoch nicht automatisch auch am Ziel gelöscht — dafür ist eine gesonderte Option nötig.

Wo lässt sich rsync nutzen?

rsync ist unter Linux weit verbreitet und auch für macOS verfügbar. Unter Windows kannst du es beispielsweise über WSL nutzen, eine Umgebung, in der sich Werkzeuge für Linux ausführen lassen. Ob das Programm verfügbar ist und welche Version installiert ist, prüfst du mit diesem Befehl:

rsync --version

Falls das Programm fehlt, installiere es mit dem Paketmanager deines Systems. Einzelheiten zur Installation und zu den verfügbaren Optionen findest du in der Dokumentation deiner Distribution oder der jeweiligen Programmversion.

Für die übliche Datenübertragung über SSH muss rsync auf beiden Computern installiert sein. SSH ermöglicht eine verschlüsselte Verbindung zu einem entfernten Computer. Du brauchst außerdem ein Konto mit Serverzugang sowie Leserechte für die Quelle und Schreibrechte am Ziel. Ein reiner SFTP-Zugang reicht nicht immer aus.

Die erste Synchronisierung Schritt für Schritt

Die grundlegende Syntax lautet rsync [optionen] quelle ziel. Angenommen, du möchtest den Inhalt des Verzeichnisses projekte in das bereits vorhandene Verzeichnis /mnt/backup/projekte/ kopieren. Führe zunächst einen Probelauf aus, ohne Änderungen zu speichern:

rsync -av --dry-run --itemize-changes ~/projekte/ /mnt/backup/projekte/

Die verwendeten Optionen bedeuten:

Prüfe, ob die Pfade und die Liste der Änderungen stimmen. Wenn du ein externes Laufwerk verwendest, vergewissere dich auch, dass es am richtigen Ort eingehängt ist. Starte anschließend den eigentlichen Kopiervorgang:

rsync -av --itemize-changes ~/projekte/ /mnt/backup/projekte/

Ein Schrägstrich am Ende des Quellpfads verändert die Bedeutung des Befehls. Die Quelle ~/projekte/ bedeutet, dass der Inhalt des Verzeichnisses kopiert wird. Die Quelle ~/projekte bedeutet, dass das Verzeichnis samt seinem Namen kopiert wird. In einem bereits vorhandenen Zielverzeichnis kann dadurch eine zusätzliche Verzeichnisebene projekte entstehen.

Der Modus -a erhält nicht automatisch alle möglichen Dateieigenschaften. Beispielsweise erfordern Zugriffskontrolllisten, erweiterte Attribute und die Verknüpfungen zwischen harten Links zusätzliche Optionen und Unterstützung auf beiden Seiten.

Wie überträgst du Dateien per SSH auf einen Server?

Um den Inhalt eines lokalen Verzeichnisses auf einen Server zu kopieren, kannst du das folgende Muster verwenden. Ersetze den Kontonamen, die Serveradresse und den Pfad durch deine eigenen Angaben:

rsync -av -e ssh --dry-run ./website/ benutzer (at) serwer.example:/var/www/website/

Die Option -e ssh legt die Verbindungsart fest. Nachdem du das Ergebnis geprüft hast, entferne --dry-run, um die Übertragung auszuführen. Prüfe bei der ersten Verbindung den Fingerabdruck des Serverschlüssels anhand der Angaben des Administrators, statt die Identität des Servers ungeprüft zu akzeptieren.

Um Dateien herunterzuladen, vertausche Quelle und Ziel: Der entfernte Pfad muss dann an erster Stelle stehen. rsync arbeitet in einer Richtung — es synchronisiert nicht automatisch in beide Richtungen und löst keine Konflikte zwischen zwei unabhängig voneinander bearbeiteten Kopien.

Dateien löschen und Grenzen der Datensicherung

Die Option --delete löscht aus dem synchronisierten Zielverzeichnis Dateien, die in der Quelle nicht vorhanden sind. Das ist beim Erstellen einer Spiegelkopie nützlich. Ein falscher Pfad oder eine leere Quelle können jedoch zum Verlust benötigter Daten führen. Führe vor der Verwendung dieser Option immer einen Probelauf mit --dry-run --itemize-changes aus und prüfe die geplanten Löschungen.

Auch ohne --delete kann rsync eine frühere Dateiversion überschreiben. Es erstellt außerdem nicht von sich aus eine konsistente Kopie einer laufenden Datenbank. Dafür ist in der Regel ein Datenbankexport oder ein Sicherungsmechanismus der Datenbank-Engine erforderlich.

Wenn die Daten zur Wiederherstellung nach einem Fehler oder Ausfall dienen sollen, plane die Aufbewahrung früherer Versionen und einer separaten Kopie ein. Teste rsync zunächst mit einem kleinen Testverzeichnis und prüfe anschließend, ob du eine ausgewählte Datei aus der Kopie wiederherstellen kannst.

Siehe auch: Was ist 2FA?

Lesen Sie auch

Wie PHP-FPM PHP-Anfragen verarbeitet, sich vom Webserver unterscheidet und wie du Prozesse an Last und Hosting-Ressourcen anpasst.
BIND ist offene DNS-Serversoftware. Erfahre, welche Aufgaben sie übernimmt und wann sich der Betrieb eines eigenen Servers lohnt.
Was Polens REGON-Register und seine Kennnummer bedeuten, wie sie sich von NIP und KRS unterscheiden und wie Sie Unternehmensdaten prüfen.