rsync
ist ein schnelles und vielseitiges Befehlszeilendienstprogramm zum Synchronisieren von Dateien und Verzeichnissen zwischen zwei Standorten über eine entfernte Shell oder von/zu einem entfernten Rsync-Dämon. Es bietet eine schnelle inkrementelle Dateiübertragung, indem es nur die Unterschiede zwischen der Quelle und dem Ziel überträgt.
Rsync kann für die Spiegelung von Daten, inkrementelle Backups, das Kopieren von Dateien zwischen Systemen und als Ersatz für die Befehle scp
, sftp
und cp
verwendet werden.
Dieser Artikel erklärt die Verwendung von rsync
anhand praktischer Beispiele und detaillierter Erklärungen der gängigsten rsync
-Optionen.
Rsync installieren #
Das Dienstprogramm rsync
ist auf den meisten Linux-Distributionen und macOS vorinstalliert. Wenn Sie rsync
nicht auf Ihrem System installiert haben, können Sie es einfach über den Paketmanager Ihrer Distribution installieren.
Rsync auf Ubuntu und Debian installieren #
sudo apt install rsync
Rsync auf CentOS und Fedora installieren #
sudo yum install rsync
Rsync-Befehlssyntax #
Bevor wir auf die Verwendung des rsync
-Befehls eingehen, sollten wir uns zunächst die grundlegende Syntax ansehen.
Die Ausdrücke des Dienstprogramms rsync
haben die folgende Form:
Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC...
-
OPTION
– Die rsync-Optionen. -
SRC
– Quellverzeichnis. -
DEST
– Zielverzeichnis. -
USER
– Remote-Benutzername. -
HOST
– Remote-Hostname oder IP-Adresse.
rsync
bietet eine Reihe von Optionen, die das Verhalten des Befehls steuern. Die am häufigsten verwendeten Optionen sind:
-
-a
,--archive
, Archivmodus, entspricht-rlptgoD
. Diese Option weistrsync
an, Verzeichnisse rekursiv zu synchronisieren, Spezial- und Blockgeräte zu übertragen, symbolische Links, Änderungszeiten, Gruppen, Eigentümer und Berechtigungen zu erhalten. -
-z
,--compress
. Diese Option zwingtrsync
, die Daten zu komprimieren, wenn sie an den Zielcomputer gesendet werden. Verwenden Sie diese Option nur, wenn die Verbindung zum entfernten Rechner langsam ist. -
-P
, entspricht--partial --progress
. Wenn diese Option verwendet wird, zeigtrsync
einen Fortschrittsbalken während der Übertragung an und behält die teilweise übertragenen Dateien. Sie ist nützlich, wenn große Dateien über langsame oder instabile Netzwerkverbindungen übertragen werden. -
--delete
. Wenn diese Option verwendet wird, löschtrsync
nicht benötigte Dateien am Zielort. Sie ist nützlich für die Spiegelung. -
-q
,--quiet
. Verwenden Sie diese Option, wenn Sie Nicht-Fehlermeldungen unterdrücken möchten. -
-e
. Mit dieser Option können Sie eine andere Remote-Shell wählen. Standardmäßig istrsync
für die Verwendung von ssh konfiguriert.
Basic Rsync Usage #
Der einfachste Anwendungsfall von rsync
ist das Kopieren einer einzelnen Datei von einem zu einem anderen lokalen Speicherort. Hier ein Beispiel:
rsync -a /opt/filename.zip /tmp/
Der Benutzer, der den Befehl ausführt, muss Leseberechtigung für den Quellspeicherort und Schreibberechtigung für den Zielspeicherort haben.
Das Senden des Dateinamens vom Zielspeicherort kopiert die Datei mit dem aktuellen Namen. Wenn Sie die Datei unter einem anderen Namen speichern möchten, geben Sie den neuen Namen auf der Zielseite an:
rsync -a /opt/filename.zip /tmp/newfilename.zip
Die wahre Stärke von rsync
kommt beim Synchronisieren von Verzeichnissen zum Tragen. Das folgende Beispiel zeigt, wie man ein lokales Backup von Website-Dateien erstellt:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Wenn das Zielverzeichnis nicht existiert, erstellt rsync
es.
Es ist erwähnenswert, dass rsync
Quellverzeichnisse mit einem abschließenden Schrägstrich (/
) anders behandelt. Wenn das Quellverzeichnis einen abschließenden Schrägstrich enthält, kopiert der Befehl nur den Inhalt des Verzeichnisses in das Zielverzeichnis. Wenn der abschließende Schrägstrich weggelassen wird, kopiert rsync
das Quellverzeichnis innerhalb des Zielverzeichnisses.
Verwenden von rsync zum Synchronisieren von Daten von/zu einem entfernten Rechner #
Wenn Sie rsync
zum Übertragen von Daten aus der Ferne verwenden, muss es sowohl auf dem Quell- als auch auf dem Zielrechner installiert sein. Die neuen Versionen von rsync
sind so konfiguriert, dass sie SSH als Standard-Remote-Shell verwenden.
Im folgenden Beispiel wird ein Verzeichnis von einem lokalen auf einen entfernten Rechner übertragen:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Um Daten von einem entfernten zu einem lokalen Rechner zu übertragen, verwenden Sie den entfernten Standort als Quelle:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Wenn SSH auf dem entfernten Host an einem anderen Port als dem Standardport 22 lauscht, geben Sie den Port mit der Option -e
an:
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Bei der Übertragung großer Datenmengen empfiehlt es sich, den Befehl rsync
innerhalb einer Bildschirmsitzung auszuführen oder die Option -P
zu verwenden:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Dateien und Verzeichnisse ausschließen #
Es gibt zwei Möglichkeiten, Dateien und Verzeichnisse auszuschließen. Die erste Option besteht darin, das Argument --exclude
zu verwenden und die auszuschließenden Dateien und Verzeichnisse in der Befehlszeile anzugeben.
Wenn Sie Dateien oder Verzeichnisse ausschließen, müssen Sie deren relative Pfade zum Quellort verwenden.
Im folgenden Beispiel werden die Verzeichnisse node_modules
und tmp
ausgeschlossen:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
Die zweite Möglichkeit besteht darin, die Option --exclude-from
zu verwenden und die Dateien und Verzeichnisse, die ausgeschlossen werden sollen, in einer Datei anzugeben.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modulestmp
Abschluss #
Wir haben Ihnen gezeigt, wie Sie Rsync zum Kopieren und Synchronisieren von Dateien und Verzeichnissen verwenden können. Auf der Seite Rsync User’s Manual gibt es noch viel mehr über Rsync zu erfahren.