10 Nützliche Beispiele für den Linux-rsync-Befehl


Linux-Laptop mit einer Bash-Eingabeaufforderung
fatmawati achmad zaenuri/Shutterstock.com

Das Linux rsync command ist ein leistungsstarkes Tool zum Kopieren von Dateien und zum Synchronisieren von Ordnern. Hier sind zehn gängige Anwendungsfälle, die Sie auf Ihren eigenen Systemen sinnvoll einsetzen können.

Das rsync Tool kopiert Dateien und Verzeichnisse zwischen zwei Computern. Es verwendet a ausgefeilter Algorithmus das Verzeichnisbäume durchsucht, um Dateien auf dem Quellcomputer zu finden, die auf dem Zielcomputer nicht vorhanden sind. Diese Dateien werden an den Zielrechner übertragen. Was macht rync So schlau ist es, welche Stücke herauszufinden vorhandenen Dateien geändert wurden, und es sendet nur die veränderte Portionen.

Sie können verwenden rsync um Dateien an einen anderen Speicherort auf Ihrer Festplatte, auf eine andere Festplatte im selben Computer, auf ein extern angeschlossenes USB-Laufwerk oder an einen anderen über das Netzwerk zugänglichen Speicherort zu kopieren.

Obendrein, rsync kann optional symbolische Links, feste Links und Dateimetadaten wie Dateibesitz, Berechtigungen und Zugriffszeiten beibehalten. Um all diese Funktionen zu unterstützen, rsync hat viele Optionen und es braucht Zeit, sie alle herauszufinden. Wir haben diese 10 Beispiele zusammengestellt, um Ihnen den Einstieg zu erleichtern. Wir haben bereits über das Erstellen von Backups mit geschrieben rsync also konzentrieren wir uns hier auf andere Verwendungen.

Bei all seinen vielen Optionen ist die Struktur einer rsync Befehl ist einfach. Wir müssen die Quelle, das Ziel und die Optionen angeben, die wir verwenden möchten. Das wirst du wahrscheinlich finden rsync ist bereits auf Ihrem Linux-Computer installiert – das war es auf allen unseren Testmaschinen –, aber wenn nicht, befindet es sich definitiv in den Repositories Ihrer Distribution.

1. Dateien in ein anderes Verzeichnis kopieren

Hier ist ein einfaches Beispiel, um uns zum Laufen zu bringen. Wir werden die Dateien aus dem Verzeichnis „project-files“ in das Verzeichnis „Documents“ kopieren. Wir verwenden zwei Optionen, die -a (Archiv) Option und die -v (ausführliche) Option. Die ausführliche Option sagt rsync um zu erklären, was es tut, während es es tut. Das archive Die Option behält den Dateibesitz und einige andere Elemente, die wir uns gleich ansehen werden.

Das Format des Befehls ist options source-location destination-location.

rsync -av /home/dave/project-files/ /home/dave/Documents/

Kopieren von Dateien in ein anderes Verzeichnis auf demselben Computer mit rsync

Verwenden ls im Ordner „Dokumente“ zeigt, dass die Dateien kopiert wurden.

Auflisten der Dateien im Dokumentenverzeichnis

Während rsync funktioniert, werden die Dateien beim Kopieren aufgelistet. Wurde gesagt:

  • Die Anzahl der gesendeten Bytes.
  • Die Anzahl der empfangenen Bytes. Bevor die Dateiübertragung stattfindet, rsync muss herausfinden, welche Dateien übertragen werden müssen. Dazu müssen einige Informationen über die Dateien auf dem Ziel abgerufen werden rsync . Diese Informationen sind in den empfangenen Bytes enthalten.
  • Die Geschwindigkeit der Übertragung.
  • Die Gesamtgröße der kopierten Dateien.
  • Die „Beschleunigung“. Dies ist das Verhältnis der Gesamtgröße dividiert durch die Summe der gesendeten und empfangenen Bytes. Je höher diese Zahl, desto effizienter die Übertragung.

Wir haben die Textdatei im Quellverzeichnis geändert und die rsync Befehl.

rsync -av /home/dave/project-files/ /home/dave/Documents/

Kopieren von Dateien in ein anderes Verzeichnis auf demselben Computer mit rsync

Diesmal ist die einzige Datei, die aktualisiert werden muss, die von uns geänderte Textdatei. Die Beschleunigungszahl beträgt jetzt 30.850. So viel effizienter ist es, den geänderten Teil dieser einzelnen Datei zu kopieren, als alle Dateien zu kopieren.

Das -a Die Option (Archiv) stellt eigentlich eine Sammlung anderer Optionen dar. Es ist dasselbe wie die Verwendung all dieser Optionen:

  • r: Verzeichnisbäume im Quellverzeichnis rekursiv abarbeiten und in das Zielverzeichnis kopieren, anlegen, falls dort noch nicht vorhanden.
  • l: Symlinks als Symlinks kopieren.
  • p: Dateiberechtigungen beibehalten.
  • t: Dateiänderungszeiten beibehalten.
  • g: Gruppenberechtigungen beibehalten.
  • Ö: Dateieigentum beibehalten.
  • D: Spezialdateien und Gerätedateien kopieren. Spezielle Dateien können kommunikationszentrierte Elemente sein, die wie Dateien behandelt werden, wie z. B. Sockets und First-In-First-Out-Pipes (Fifos). Gerätedateien sind spezielle Dateien, die den Zugriff auf Geräte und Pseudogeräte ermöglichen.

Dies ist eine so häufig verwendete Kombination, dass rsync bietet die -a (archivieren) als Kurzform, um sie alle aufzurufen.

2. Kopieren Sie ein Verzeichnis in ein anderes Verzeichnis

Wenn Sie sich das vorherige ansehen rsync Befehl sehen Sie einen nachgestellten Schrägstrich „/“ im Dateipfad des Quellverzeichnisses. Dies ist signifikant. Es sagt rsync die zu kopieren Inhalt des Verzeichnisses. Wenn Sie den abschließenden Schrägstrich nicht angeben, rsync kopiert das Verzeichnis und seinen Inhalt.

rsync -av /home/dave/project-files /home/dave/Documents/

Kopieren des Verzeichnisses und seines Inhalts in ein anderes Verzeichnis auf demselben Computer mit rsync

Diesmal wird der Verzeichnisname dem Dateinamen hinzugefügt, wie sie aufgelistet sind. Wenn wir in das Zielverzeichnis schauen, sehen wir, dass der Quellordner mit den darin enthaltenen Dateien hinüberkopiert wurde.

ls Documents/
ls Documents/project-files/

Auflisten der kopierten Dateien im übertragenen Verzeichnis

3. Kopieren Sie ein Verzeichnis auf ein anderes Laufwerk

Das Kopieren von Dateien an einen anderen Ort auf derselben Festplatte bietet keinen Schutz vor einem Laufwerksausfall. Wenn dieses Laufwerk den Geist aufgibt, haben Sie die Quell- und Zielkopien dieser Dateien verloren. Das Kopieren auf eine andere Festplatte ist eine viel robustere Methode zum Schutz Ihrer Daten. Wir müssen lediglich den richtigen Pfad zum Ziellaufwerk angeben.

rsync -av /home/dave/project-files /run/mount/drive2

Kopieren von Dateien auf eine andere Festplatte im selben Computer

Ein Blick auf die andere Festplatte zeigt uns, dass das Verzeichnis und die Dateien dorthin kopiert wurden.

ls run/mount/drive2/project-files/

Auflisten der Dateien, die auf eine andere Festplatte desselben Computers kopiert wurden

VERBUNDEN: Was tun, wenn Ihre Festplatte ausfällt

4. Machen Sie zuerst einen Trockenlauf

Bevor wir uns ansehen, wie rsync Dateien für uns sinnvollerweise löschen können, schauen wir uns an, wie wir das machen können rsync einen Trockenlauf durchführen.

In einem Trockenlauf, rsync geht die Bewegungen durch, um die Aktionen auszuführen, um die wir gebeten haben, aber tut sie nicht wirklich. Es berichtet, was passiert wäre, wenn der Befehl ausgeführt worden wäre. Auf diese Weise können wir sicherstellen, dass der Befehl genau das tut, was wir erwarten.

Um einen Trockenlauf zu erzwingen, verwenden wir die --dry-run Möglichkeit.

rsync -av --dry-run /home/dave/geocoder /run/mount/drive2

Durchführen eines Probelaufs eines rsync-Befehls

Die Dateien, die kopiert worden wären, werden uns aufgelistet, und wir erhalten die übliche Statistik, gefolgt von der Meldung (DRY RUN) damit wir wissen, dass tatsächlich nichts passiert ist.

5. Löschen von Dateien im Zielverzeichnis

Das --delete Option sagt rsync um Dateien und Verzeichnisse in der zu löschen Ziel Verzeichnisse, die sich nicht im Quellverzeichnis befinden. Das bedeutet, dass das Zielverzeichnis eine exakte Kopie des Quellverzeichnisses ist. Wir werden vorsichtig sein und die verwenden --dry-run Option zuerst.

rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2

Durchführen eines Probelaufs eines rsync-Befehls, der Dateien löschen könnte

Uns wurde mitgeteilt, dass zwei Dateien gelöscht werden. Wenn wir sicher sind, dass es uns egal ist, dass sie gelöscht werden, können wir die entfernen --dry-run Option und führen Sie den Befehl wirklich aus.

rsync -av --delete /home/dave/geocoder /run/mount/drive2

Kopieren von Dateien und Entfernen von Dateien aus dem Zielverzeichnis, die sich nicht im Quellverzeichnis befinden

Diesmal werden die Inhalte der Verzeichnisse synchronisiert und die beiden überzähligen Dateien gelöscht.

6. Löschen der Quelldateien

Sie können die Quelldateien nach a löschen erfolgreiche Übertragungmachen rsync wirken eher wie ein Umzug als wie eine Kopie. Wenn die Übertragung nicht erfolgreich war, werden die Quelldateien nicht gelöscht. Die Option, die wir verwenden müssen, ist --remove-source-files .

rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2

Erzwingen, dass rsync die Quelldateien nach einer erfolgreichen Übertragung löscht

Beachten Sie, dass die Dateien auch dann gelöscht werden können, wenn keine Dateien übertragen werden. Das liegt daran, wenn rsync überprüft, und alle Dateien sind bereits im Zielverzeichnis und es gibt nichts für rsync machen, rsync hält dies für einen gelungenen Transfer.

Ebenfalls, rsync löscht nur die Dateien aus dem Quellverzeichnis. Es löscht weder das Quellverzeichnis noch Unterverzeichnisse, sondern nur die darin enthaltenen Dateien. Wir können dies sehen, indem wir die verwenden -R (rekursive) Option mit lsim Quellverzeichnis.

ls -R geocoder

Ein leerer Verzeichnisbaum, nachdem rsync die Quelldateien gelöscht hat

7. Dateien auf einen Remote-Computer kopieren

Um Ordner mit einem Remote-Computer zu synchronisieren, rsync muss auf beiden Rechnern installiert sein. Richten Sie die SSH-Kommunikation zwischen den beiden Computern ein, bevor Sie versuchen, sie zu verwenden rsync zum entfernten Computer.

Sie müssen sich aus der Ferne als normaler Benutzer auf dem Remote-Computer anmelden können rsync arbeiten. Es spielt keine Rolle, ob Sie sich mit einer ID und einem Passwort anmelden oder ob Sie SSH-Schlüssel für einen sicheren passwortlosen Zugriff eingerichtet haben, sich aber nicht als Benutzer anmelden können, dann rsync wird auch nicht funktionieren.

Wenn Sie sich mit einem Passwort anmelden, rsync wird Sie nach dem Passwort fragen. Wenn Sie SSH-Schlüssel zum Anmelden verwenden, ist der Vorgang nahtlos.

Das einzige, was Sie zusätzlich tun müssen, ist, den Namen des Benutzerkontos und die IP-Adresse des Remote-Computers am Anfang des Zieldateipfads hinzuzufügen. Verwenden Sie ein at-Zeichen „@“, um den Benutzernamen vom Computernamen oder der IP-Adresse zu trennen, und einen Doppelpunkt „:“, um den Computernamen oder die IP-Adresse vom Verzeichnispfad zu trennen.

In unserem Testnetzwerk sind diese beiden Befehle gleichwertig.

rsync -av /home/dave/geocoder [email protected]:/home/dave/Downloads
rsync -av /home/dave/geocoder [email protected]:/home/dave/Downloads

Kopieren von Dateien auf einen Remote-Computer über SSH mit rsync

Uns werden dieselben Informationen gemeldet wie beim lokalen Kopieren von Dateien.

8. Dateien oder Verzeichnisse einschließen oder ausschließen

Möglicherweise befinden sich im Quellverzeichnis Dateien und Verzeichnisse, die Sie nicht auf den Zielcomputer kopieren möchten. Sie können sie mit ausschließen --exclude Möglichkeit. Auf ähnliche Weise können Sie festlegen, dass bestimmte Dateien und Verzeichnisse in die eingeschlossen werden --include Möglichkeit.

Die Eigenart ist, dass, wenn Sie die verwenden --include Option allein werden alle Dateien wie gewohnt kopiert – einschließlich Ihrer speziell eingeschlossenen Dateien. Um nur Ihre enthaltenen Dateien zu kopieren, müssen Sie --exclude alles andere.

Sie können beliebig viele verwenden --include und --exclude Optionen in Ihrem Befehl, wie Sie möchten, aber stellen Sie sicher, dass Sie Ihre setzen --include Optionen vor Ihren --exclude Optionen. Stellen Sie außerdem sicher, dass Ihr Quelldateipfad einen nachgestellten Schrägstrich enthält.

Dieser Befehl kopiert nur C-Quellcodedateien und CSV-Datendateien auf den Zielcomputer.

rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder

Verwenden von rsync zum Kopieren ausgewählter Dateien auf eine andere Festplatte auf demselben Computer

Es werden nur die Dateien kopiert, die wir ausdrücklich eingeschlossen haben.

9. Dateien in der Übertragung komprimieren

Das -z (komprimieren) Option verursacht rsync um die übertragenen Dateien zu komprimieren. Sie werden jedoch nicht als komprimierte Dateien auf dem Zielcomputer gespeichert, sondern nur während der Übertragung selbst komprimiert. Dies kann langwierige Übertragungen beschleunigen.

rsync -avz /home/dave/geocoder /run/mount/drive2

Komprimieren von Dateien während der Übertragung mit der Option -z rsync

10. Überwachung des Fortschritts

Apropos langwierige Übertragungen, wir können einige Statistiken hinzufügen, damit wir den Fortschritt der Übertragung sehen können.

Das -P (teilweise, Fortschritt) Option fügt tatsächlich zwei Optionen hinzu, --partial und --progress . Das --partial Option sagt rsync um teilweise übertragene Dateien beizubehalten, wenn eine Übertragung fehlschlägt. Dies spart Zeit, wenn die Übertragung neu gestartet wird.

Das --progress Option druckt für jede Datei die übertragenen Daten in Bytes und als Prozentsatz, die Geschwindigkeit der Übertragung, die benötigte Zeit, die Nummer der übertragenen Datei und die Anzahl der verbleibenden Dateien.

rsync -aP /home/dave/geocoder /run/mount/drive2

Verwenden der Option -P, um Statistiken für die Übertragung jeder Datei bereitzustellen

Die Ausgabe scrollt ziemlich schnell vorbei und ist schwer zu lesen. Sie können die Dinge leicht verbessern, indem Sie die entfernen -v (verbose) Option aus dem Befehl. Selbst dann ist es immer noch schwer zu lesen, da es vorbeisaust.

Übertragungsstatistik für jede übertragene Datei

Oft ist es sinnvoller, den Fortschritt der gesamten Übertragung zu überwachen. Sie können dies mit der Option –info tun und ihr „progress2“ als Parameter übergeben.

sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2

Statistik für die gesamte rsync-Übertragung

Dies ergibt einen Fortschrittsbericht, der tatsächlich nützlich ist.

Wie cp auf Steroiden

Das rsync command ist schnell, flexibel und es lohnt sich, sich damit vertraut zu machen. Die Grundform einer rsync Befehl mit dem -av Optionen, Quellverzeichnis und Zielverzeichnis ist überhaupt nicht schwer zu merken.

Für viele Anwendungsfälle ist das alles, was Sie brauchen. Machen Sie sich damit vertraut und der Rest wird von selbst kommen.

VERBUNDEN: Der Leitfaden für Nicht-Anfänger zum Synchronisieren von Daten mit Rsync



source-107

Leave a Reply