Verwendung von rsync mit Beispielen

Rsync ist ein beliebtes Tool für die Dateisynchronisierung, sowohl lokal als auch remote. Im Gegensatz zu anderen Synchronisierungstools verwendet rsync einen interessanten Algorithmus, der den Bandbreitenverbrauch minimiert. Es verschiebt einfach den Teil der Datei (en), die sich geändert haben.

Es ist ein leistungsfähiges Dienstprogramm, das in vielen Situationen dienen kann. In diesem Artikel werde ich anhand einer Demonstration zeigen, wie Sie mit rsync beginnen. Die Demonstration wird unter Ubuntu 18.04 durchgeführt.

Rsync

Rsync steht für den Begriff Remote Sync. Trotz des Namens kann es die Dateisynchronisierung remote und lokal verarbeiten. Der Begriff rsync bezieht sich auch auf das rsync-Protokoll, das rsync für die Synchronisierung verwendet. In diesem Artikel bezeichnet rsync immer das Tool, nicht das Protokoll.

Aufgrund seiner schieren Popularität ist rsync auf fast jedem einzelnen Linux- und UNIX-ähnlichen System verfügbar. Es besteht eine gute Chance, dass es vorinstalliert ist. Wenn nicht, recherchieren Sie ein wenig, wie Sie rsync in Ihrem System installieren.

Hier ist eine kurze Liste der Funktionen, die rsync bietet.

  • Verzeichniskopieren
  • Einfache Backup-Konfiguration
  • Kann über SSH arbeiten
  • Kann als Daemon / Server ausgeführt werden
  • Beibehaltung der Dateiberechtigung

Rsync-Verwendung

Bevor wir in rsync springen, benötigen wir einige Dummy-Dateien, mit denen wir arbeiten können. Lassen Sie uns zuerst ein Dummy-Verzeichnis erstellen.

$ mkdir -v primary

Nach der Erstellung ist es an der Zeit, eine Handvoll Dummy-Dateien zu erstellen. Um eine Datei zu erstellen, verwende ich den Touch-Befehl. Erfahren Sie mehr über den Touch-Befehl.

$ berühren Dummy{1..20}

Voila! Wir sind jetzt bereit, rsync zu verwenden, um Aktionen mit diesen Dummy-Dateien auszuführen.

Rsync-Befehlsstruktur

Rsync verwendet die folgende Befehlsstruktur.

$ rsync <Option><src><

Ziel>

Lokale Verzeichnisse synchronisieren

Jetzt ist es an der Zeit, rsync zum Synchronisieren von Dateien über mehrere Ziele hinweg zu verwenden. In diesem Beispiel synchronisieren wir den Inhalt von dir_primary mit dir_target .

$ mkdir -v target

Weisen Sie rsync an, den Inhalt beider Verzeichnisse zu synchronisieren.

$ rsync -v -r primary/ target

Hier haben wir zwei verschiedene Argumente verwendet.

-v: Weist rsync an, in den ausführlichen Modus zu wechseln
-r: Rekursiv, erforderlich für die Verzeichnissynchronisierung.

In diesem nächsten Beispiel verwenden wir ein anderes Flag.

$ rsync -v -a primary/ target

-a: Ein Kombinationsflag, das für „archive“ steht.

Mit diesem Flag synchronisiert rsync den Inhalt rekursiv und behält dabei alle symbolischen, speziellen / Gerätedateien, Änderungszeiten, Dateiberechtigungen, Gruppen, Eigentümer usw. bei. Es wird häufiger verwendet als das Flag „-r“. Für die Archivierung ist dies eine empfehlenswertere Methode.

Haben Sie bemerkt, dass wir in allen Befehlen, die wir bisher ausgeführt haben, im Fall von source immer das „/“ nach dem Namen des Verzeichnisses beibehalten? Dies soll rsync mitteilen, dass die Quelle der gesamte Inhalt des Quellverzeichnisses ist. Wenn das „/“ am Ende des Quellverzeichnisses nicht verwendet wird, erstellt rsync einfach eine Kopie des Quellverzeichnisses anstelle seines Inhalts.

Schauen wir uns das an einem Beispiel an.

$ rsync -v -a primäres Ziel

Überprüfen Sie das Ausgabeergebnis.

$ tree target/

Die meiste Zeit brauchen wir das nicht. Je nach Situation kann es jedoch nützlich sein.

Rsync-Testlauf

Bevor Sie einen rsync-Befehl ausführen, ist es immer wichtig zu überprüfen, ob der Befehl die Aktion wie erwartet ausführt. Wenn Sie die rsync-Aktion für einen bestimmten Befehl testen möchten, verwenden Sie das Flag „-n“ oder „-dry-run“.

$ rsync -avn Primär/ Ziel

$ rsync -avn Primär/ Ziel

Hier zeigt die Ausgabe, was rsync ausführen würde, wenn der Befehl tatsächlich ausgeführt würde. Vergessen Sie beim Testen nicht, das Flag „-v“ zu verwenden, um eine genaue Darstellung des Geschehens zu erhalten.

Rsync über eine Remote-Verbindung

Dies ist eine weitere interessante Funktion, die rsync unterstützt. Wenn sich Ihr Backup-Speicherort an einem entfernten Ort befindet, können Sie rsync einfach so konfigurieren, dass die Sicherung am Remote-Speicherort über SSH ausgeführt wird. Auf beiden Computern muss jedoch rsync installiert sein. Darüber hinaus müssen auf beiden Systemen SSH-Schlüssel festgelegt sein.

Bereit? Lass uns anfangen. Zuerst ist es die Archivsynchronisierung.

$ rsync -a <local_dir><Benutzername><remote_host><
destination_dir>

Hier wird dieser Vorgang als „Push“ bezeichnet, da ein Verzeichnis vom lokalen System auf ein Remote-System übertragen wird. Das Gegenteil wird als „Pull“ bezeichnet.

$ rsync -a <Benutzername><remote_host><source_dir><local_dir>

Rsync behandelt das erste Argument als Quelle, das zweite als Ziel.

Nützliche rsync-Optionen

Rsync unterstützt eine Menge Optionen. Alle dienen ihrem eigenen Zweck. Zum größten Teil werden jedoch nur eine Handvoll von ihnen die meiste Zeit verwendet. In diesem Abschnitt werfen wir einen Blick auf einige nützliche rsync-Optionen.

In den meisten Fällen werden die zu synchronisierenden Dateien nicht komprimiert. Durch die Komprimierung können Sie Zeit und Bandbreite auf Kosten einer zusätzlichen Rechenleistung sparen. Rsync bietet standardmäßig Komprimierung an. Verwenden Sie das Flag „-z“, um eine komprimierte Synchronisierung durchzuführen.

$ rsync -avz <Quelle><Ziel>

Dieses interessante Flag kombiniert die Funktion des Flags „-progress“ und „-partial“. Die erste besteht darin, einen Fortschrittsbalken der Übertragung anzuzeigen, und die zweite besteht darin, die Wiederaufnahme der unterbrochenen Übertragung zu ermöglichen. Beide Funktionen werden im Flag „-P“ kombiniert.

$ rsync -avzP <source><destination>

Now, let’s check out how rsync handles file syncing intelligently. Run the previous command again.

$ rsync -avzP <Quelle><Ziel>

Hier hat rsync nicht alle Dateien erneut hochgeladen. Stattdessen übersprang es diejenigen, die sich überhaupt nicht änderten. In diesem Beispiel wurden alle Dateien übersprungen, da sich alle im Zielverzeichnis befinden.

Was ist, wenn Sie eine Datei aus dem Quellverzeichnis gelöscht haben? Standardmäßig löscht rsync nichts aus dem Zielverzeichnis. Verwenden Sie das Flag „–delete“, um das Löschen von Dateien durch rsync zu erzwingen. Verwenden Sie jedoch den Trockenlauf, um zu testen, ob der Befehl wie gewünscht funktioniert.

$ rsync -avn –delete <Quelle><Ziel>

Standardmäßig synchronisiert rsync jede einzelne Datei/jedes einzelne Verzeichnis vom Quell- zum Zielverzeichnis. In bestimmten Situationen möchten Sie möglicherweise bestimmte Dateien von der Synchronisierung einschließen / ausschließen. Rsync bietet praktische Optionen wie „-exclude“ und „-include“ zum Ausschließen / Einschließen bestimmter Dateien. Übergeben Sie das Dateimuster als Wert für diese Argumente.

$ rsync -avn –exclude=<Muster> –include=<Muster>

Sie können auch die größte Dateigröße definieren, die rsync synchronisieren soll. Verwenden Sie dazu das Flag „–max-size“ gefolgt von der Dateigröße.

$ rsync -avn –max-size=’10k‘ <Quelle><Ziel>

Rsync hat ein weiteres interessantes Feature im Ärmel. Benötigen Sie die Quelldatei nach der Synchronisierung nicht mehr? Rsync kann das, kein Problem. Stellen Sie jedoch sicher, dass Sie rsync nicht mit dem Flag „-delete“ ausführen. Andernfalls löscht rsync die synchronisierten Dateien vom Ziel!

$ rsync -av –remove-source-files <Quelle><Ziel>

Abschließende Gedanken

Dies sind nur einige allgemeine und einfache Szenarien der Verwendung von rsync. Es bietet viel mehr als das. Es ist möglich, rsync-Vorgänge entweder mit dem rsync-Daemon oder anderen Skripten zu automatisieren. Hoffentlich war dieser Leitfaden hilfreich, um mit rsync zu beginnen.

Interessiert an mehr rsync? Nun, Sie können rsync als Dateikopierer verwenden. Es ist effizienter und intelligenter als cp. Ausführlichere Funktionen und Verwendung finden Sie in der rsync-Manpage.

$ man rsync

Viel Spaß!



Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.