GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie Rsync zum Kopieren/Synchronisieren von Dateien zwischen Servern

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.


Linux
  1. So verwenden Sie rsyslog zum Erstellen eines Linux-Protokollaggregationsservers

  2. So übertragen Sie Dateien zwischen Servern in Linux mit SCP und FTP

  3. Wie man Verzeichnisse rekursiv mit rsync kopiert und dabei bestimmte Dateien ausschließt

  4. So kopieren Sie eine große Anzahl von Dateien schnell zwischen zwei Servern

  5. Wie teilt man Assets zwischen mehreren Webservern?

So verwenden Sie den Befehl rsync, um Daten lokal und über SSH zu kopieren

So synchronisieren Sie Dateien automatisch zwischen zwei Linux-Servern

So synchronisieren Sie zwei Webserver unter Linux automatisch

So verwenden Sie FTP zum Verschieben von Dateien zwischen Ihrem Computer und Ihrem Android-Gerät

So verwenden Sie Docker Cp zum Kopieren von Dateien zwischen Host und Containern

Verwenden Sie NTP, um die Zeit zu synchronisieren