Einführung
Rsync ist eine großartige Möglichkeit, Dateien zwischen Servern zu synchronisieren oder Dateien einfach zwischen Servern zu verschieben, ohne dass FTP erforderlich ist. Es verbindet zwei Server über das SSH-Protokoll und ermöglicht so die Datenübertragung zwischen ihnen. Der rsync-Daemon, der später in diesem Artikel behandelt wird, verwendet sein eigenes Protokoll und läuft auf einem bestimmten Port. Im Folgenden gehen wir auf die Grundlagen ein; zwischen Servern kopieren, zu/von rsync-Daemons kopieren und Dateien auf verschiedenen Servern synchron halten.
Voraussetzungen
– 2 Linux-Server, auf denen beide rsync installiert haben.
– Der Server, der die Übertragung initiiert, muss in der Lage sein, auf den SSH-Port des empfangenden Servers zuzugreifen (oder rsync-Port, wenn eine Verbindung zu einem rsync-Daemon hergestellt wird).
– Der Benutzer muss über Berechtigungen zur Verwendung von rsync verfügen (die folgenden Beispiele werden als Root-Benutzer ausgeführt).
Grundlagen von Rsync
Rsync kann Dateien auf einen anderen Server verschieben oder Dateien von einem anderen Server abrufen. Der Unterschied zwischen den beiden liegt in der Syntax. Wenn Sie zuerst Ihre lokale Datei angeben, wird ein Push initiiert. Wenn Sie zuerst Ihren Remote-Host angeben, wird dieser einen Pull initiieren. Sehen wir uns unten die genaue Art der Syntax an.
rsync [-options] SOURCE [email protected]:DESTINATION
Ziehen:
rsync [-options] [email protected]:SOURCE DESTINATION
Die [-options]
sind all die verschiedenen Optionen, die verwendet werden können. Auf einige werde ich in Beispielen unten verweisen und sie erläutern. Eine vollständige Liste aller Optionen finden Sie auf der Handbuchseite.
SOURCE
steht für /directory/path/to/the/file/or/directory
die kopiert werden.
DESTINATION
steht für /directory/path/to/the/new/location
auf dem empfangenden Host.
Der [email protected]
ist der Benutzer auf dem entfernten Host, mit dem sich rsync verbinden soll.
x.x.x.x
steht für die IP-Adresse des Remote-Hosts. Es kann auch ein Hostname sein, wenn Sie DNS konfiguriert haben.
Angenommen, Sie müssen einen Port außerhalb des Standardports 22 angeben, mit dem rsync eine Verbindung herstellen kann. Sie würden dies mit der Option -e
tun . Siehe das Beispiel unten (ersetzen Sie PORT
mit der Portnummer, zu der Sie sich verbinden müssen).
Drücken:
rsync [-other options] -e 'ssh -p PORT' SOURCE [email protected]:DESTINATION
Ziehen:
rsync [-other options] -e 'ssh -p PORT' [email protected]:SOURCE DESTINATION
Beispiele für einfache Dateiübertragungen
Zuerst initiieren wir einen Push einer .txt-Datei von einem Server auf einen anderen.
rsync /home/simple.txt [email protected]:/home
Dieser Befehl kopiert die Datei simple.txt
von unserem lokalen Server zum /home
unseres Remote-Servers Verzeichnis.
Rsync Übertragung zwischen zwei Servern.
Rechts haben wir ein ls
gemacht vor dem rsync und dann noch einmal nachdem es ausgeführt wurde, damit wir sehen können, dass die Datei kopiert wurde.
Hier ist ein Beispiel für einen Pull:
rsync [email protected]:/home/pullme.txt /home
Die Datei pullme.txt
befindet sich auf dem Remote-Server (x.x.x.x) im Verzeichnis /home
Verzeichnis. Dieser Befehl kopiert die Datei in das Verzeichnis /home
des lokalen Servers Verzeichnis.
Mit dieser Methode können Sie jede einzelne Datei, die Sie angeben, per Push/Pull übertragen. Kommen wir nun zu den Verzeichnissen.
Verzeichnisdateiübertragung
Das Verschieben eines Verzeichnisses ist einfach. Fügen Sie das -d
hinzu Option, und es wird nur das Verzeichnis verschoben. Wenn Sie das Verzeichnis und seinen Inhalt verschieben möchten, verwenden Sie -r
stattdessen alle Dateien und Unterordner rekursiv zu kopieren. Wenn wir schon dabei sind, heften wir das -t
an Möglichkeit. Diese Option kopiert Datum und Uhrzeit der letzten Änderung der Datei. Mit -t
eignet sich gut, um genaue Aufzeichnungen darüber zu führen, wann eine Datei zuletzt bearbeitet wurde. Diese Optionen funktionieren mit Drücken oder Ziehen.
Im folgenden Beispiel habe ich die pullme.txt
verschoben Datei in ein /transfer_me
Verzeichnis. Ich habe auch das Verzeichnis /simple
erstellt (enthält die Datei simple.txt
) in /transfer_me
. Ich habe dann /transfer_me
gepusht Verzeichnis auf den Remote-Server.
rsync -rt /home/transfer_me [email protected]:/home
Rsync-Verzeichnis
Wie Sie sehen können, enthält der Ordner auf dem entfernten (empfangenden) Server alle Unterverzeichnisse und Dateien, die der lokale Ordner auf dem initiierenden Server hatte.
Verbindung zu einem Rsync-Daemon herstellen
Dieser Abschnitt erfordert einen Server, auf dem ein rsync-Daemon läuft. Um diese Anweisungen auszuprobieren, lesen Sie unseren Artikel zum Einrichten eines rsync-Daemons.
Nachdem wir nun die grundlegende Datei-/Verzeichnisübertragung mit rsync besprochen haben, können wir uns mit der Verbindung zu einem rsync-Daemon befassen. Ein rsync-Daemon wird ständig auf einem Server ausgeführt, sodass Sie jederzeit in das zugewiesene rsync-Daemon-Verzeichnis dieses Servers pushen und/oder daraus ziehen können. Es gibt zwei Formate zum Pullen und Pushen zu einem rsync-Daemon.
Ziehen:
rsync [-options] rsync://[email protected][:PORT]SOURCE DESTINATION
Pull (beachten Sie die doppelten Doppelpunkte nach der IP-Adresse/dem Hostnamen):
rsync [-options] [email protected]::SOURCE DESTINATION
Drücken:
rsync [-options] SOURCE rsync://[email protected][:PORT]DESTINATION
Push (beachten Sie die doppelten Doppelpunkte nach der IP-Adresse/dem Hostnamen):
rsync [-options] SOURCE [email protected]::DESTINATION
Sehen Sie unten, wie ich aus dem rsync-Daemon gezogen habe (die Verwendung von Portnummer 873 unten ist redundant, da dies der standardmäßige rsync-Daemon-Verbindungsport ist – ich füge ihn hinzu, um zu demonstrieren, wie Sie den Befehl formatieren würden, wenn Sie einen nicht standardmäßigen Port eingerichtet hätten auf Ihrem rsync-Daemon):
rsync -rt rsync://[email protected]:873/files/ /home/pulledfromdaemon
Rsync-Daemon-Pull
Hier files
ist der Modulname. Da wir alles aus diesem Verzeichnis ziehen (pullme.txt
und simple.txt
) belassen wir es einfach beim Modulnamen für die Quelle.
Dateien mit Rsync synchronisieren
Jetzt werden wir besprechen, wie Dateien synchronisiert werden. Mit den richtigen Optionen können Sie eine Synchronisierung mit einem einzigen rsync-Befehl durchführen. Sie können diesen Befehl in ein Skript oder einen Cron-Job einfügen, um ihn bei Bedarf oder automatisch auszuführen. Der Befehl variiert, wenn Sie pushen oder pullen oder den Daemon verwenden, aber die Optionen bleiben gleich.
rsync -rtu --delete SOURCE [email protected]:/DESTINATION
Achten Sie in diesem Beispiel auf -rtu --delete
Optionen. Wir haben bereits das -r
besprochen und -t
Optionen – Rekursives Kopieren und Kopieren mit Zeitstempel. Das -u
Option weist rsync an, nur andere/geänderte/hinzugefügte Dateien aus SOURCE
zu aktualisieren zum DESTINATION
. Die Option --delete
entfernt alle Dateien aus DESTINATION
dass die SOURCE
darf nicht mehr haben. Mit dieser (und anderen Optionen, wie -l
für symbolische Links) können Sie Verzeichnisse an mehreren Orten mit der Quelle auf dem neuesten Stand halten.
Sie können jetzt Dateien zwischen Servern und Daemons rsyncen und Dateien problemlos miteinander synchronisieren. Vielen Dank, dass Sie dieser Anleitung gefolgt sind! Bitte schauen Sie hier für weitere Updates vorbei oder werfen Sie einen Blick auf die vielen Dienste, die wir anbieten, einschließlich VPS-Hosting.
Erfahren Sie mehr über unsere VPS-Hosting-Services und Virtual Private Server.