Wie man den rsync-Befehl in Linux meistert

Wie der Name schon sagt, ist rsync ein Synchronisationstool. Beim ersten Mal, wenn Sie es verwenden, kopiert es einfach Dateien und Verzeichnisse von einem Ort an einen anderen. Bei nachfolgenden Verwendungen synchronisiert es jedoch nur die Unterschiede zwischen diesen Standorten. Wenn Sie also eine Datei zum Quellverzeichnis hinzufügen, kopiert rsync nur die neue Datei zum Ziel. Dies spart viel Zeit und Bandbreite, insbesondere beim Kopieren an einen entfernten Ort.

Stellen Sie sich vor, Sie haben 50 GB Daten, die Sie mit einem Remote-Server synchronisieren müssen. Sie können rsync so planen, dass es täglich ausgeführt wird. Statt die gesamten 50 GB immer wieder zu kopieren, sendet das Dienstprogramm nur die Unterschiede. Das könnte bedeuten, dass es jeden Tag nur ein paar Megabyte Daten hochladen muss, anstatt Gigabytes.

Im obigen Bild können Sie sehen, dass beim ersten Mal 104 MB übertragen wurden, während beim zweiten Mal nur 31 KB benötigt wurden.

Siehe auch: Verwenden von Rclone, um mit mehreren Cloud-Speicherdiensten in Linux zu synchronisieren

So installieren Sie rsync auf verschiedenen Linux-Distributionen

Auf Debian und debianbasierten Distributionen, wie Ubuntu, können Sie rsync mit folgendem Befehl installieren:

sudo apt install rsync

rsync-install

Auf Fedora installieren Sie mit:

dnf install rsync

Und auf Distributionen, die von RedHat abgeleitet sind (z.B. CentOS):

yum install rsync

Um rsync auf Arch Linux zu installieren, verwenden Sie den Befehl:

pacman -S rsync

Unter openSUSE verwenden Sie:

zypper install rsync

Wenn es nicht in Ihren Standard-Repositories enthalten ist, konsultieren Sie die Installationsseite für rsync auf openSUSE.

So verwenden Sie rsync, um lokale Dateien oder Verzeichnisse zu synchronisieren

Die allgemeine Syntax von rsync lautet: rsync [Optionen] /pfad/zur/quelle /pfad/zum/ziel.

[Optionen] steht für die Befehlszeilenoptionen, die Sie im Handbuch finden können:

man rsync

rsync-command-line-options

Drücken Sie q, um das Handbuch zu beenden.

Um eine Datei zu kopieren:

rsync /bin/ls .

Der obige Befehl ist äquivalent zu rsync /bin/ls /home/your_username. Dies kopiert den Befehl „ls“ in das Verzeichnis, in dem Sie sich gerade befinden. Standardmäßig sollte dies /home/your_username sein. Der Punkt . steht für das aktuelle Verzeichnis. Pfadangaben können absolut (/home/your_username/Downloads/chrome.zip) oder relativ zu Ihrem aktuellen Verzeichnis (Downloads/chrome.zip) sein.

Wenn Sie es mit sehr großen Dateien zu tun haben, können Sie diesen Befehl verwenden:

rsync -P /pfad/zur/datei /pfad/zum/ziel

Dies zeigt den Fortschritt an und ermöglicht es Ihnen, einen unterbrochenen Transfer fortzusetzen. Falls Sie fortfahren müssen, verwenden Sie:

rsync -P --append /pfad/zur/datei /pfad/zum/ziel

Ohne --append würde der Transfer von neuem beginnen.

Um Verzeichnisse zu synchronisieren:

rsync -av /pfad/zur/quelle /pfad/zum/ziel

Beispielbefehl:

rsync -av /bin .

Effekt des abschließenden Schrägstrichs in rsync (wichtig)

Beachten Sie im vorherigen Befehl, dass der Pfad zum Quellverzeichnis keinen abschließenden Schrägstrich / enthält (/bin vs /bin/). Ohne einen abschließenden Schrägstrich kopiert rsync das Verzeichnis selbst. Also ergibt rsync -av /bin . das, was im folgenden Bild dargestellt ist.

rsync-without-trailing-slash

Wenn ein abschließender Schrägstrich verwendet wird, kopiert rsync den Inhalt des Verzeichnisses. In diesem Fall würden sich alle Dateien in /bin im Zielverzeichnis verteilen. Daher würde rsync -av /bin/ . das Ergebnis des folgenden Bildes haben.

rsync-with-trailing-slash

Es ist sehr wichtig, sich diesen Unterschied zu merken, da die automatische Vervollständigung von Verzeichnisnamen mit TAB automatisch einen abschließenden Schrägstrich hinzufügt. Achten Sie darauf, um ein Durcheinander im Zielverzeichnis zu vermeiden.

So verwenden Sie rsync zur Synchronisierung mit Remote-Standorten (z.B. Server)

Das, was im vorherigen Abschnitt beschrieben wurde, gilt auch für die Arbeit mit Remote-Standorten. Der einzige Unterschied ist, dass Sie den Benutzernamen und die Adresse des Remote-Standorts voranstellen müssen. Um Ihr /bin-Verzeichnis zu einem Remote-Computer zu senden, verwenden Sie:

rsync -av /bin [email protected]:/home/your_username

rsync verbindet sich über OpenSSH. Das bedeutet, dass Sie den OpenSSH-Server und die Anmeldeinformationen zuvor am Remote-Ziel einrichten müssen. Beachten Sie, dass your_username den Benutzernamen bezeichnet, der auf dem Server erstellt wurde. Dies kann sich von dem Benutzernamen unterscheiden, den Sie auf Ihrem lokalen Computer haben.

Wenn Sie einen Domainnamen besitzen und ihn auf die IP Ihres Servers verweisen, können Sie die Domain im Befehl verwenden:

rsync -av /bin [email protected]:/home/your_username

Bei großen Übertragungen ist es auch nützlich, die Daten vor dem Versenden durch Hinzufügen des Parameters -z zu komprimieren:

rsync -avz /bin [email protected]:/home/your_username

Sie können den Komprimierungsparameter weglassen, wenn Sie Dateien senden, die bereits komprimiert sind (z.B. Audio-Dateien wie MP3, Videos, JPEG-Bilder). Diese können nicht weiter komprimiert werden, sodass Sie tatsächlich Zeit verschwenden würden, wenn Sie -z dafür verwenden.

Um Dateien vom Remote-Ziel auf Ihren lokalen Computer zu kopieren, kehren Sie einfach die Standorte um:

rsync -avz [email protected]:/bin /home/your_username

Fazit

Dies deckt die wichtigsten rsync-Befehle ab, die Sie kennen müssen. Wenn Sie jemals mehr Kontrolle darüber benötigen, wie Verzeichnisse synchronisiert werden, konsultieren Sie das Online-rsync-Handbuch und scrollen Sie ein paar Seiten nach unten, bis Sie die „Options Summary“ finden.