Einführung
Rsync oder Remote Sync ist ein kostenloses Befehlszeilentool, mit dem Sie Dateien und Verzeichnisse an lokale und entfernte Ziele übertragen können. Rsync wird zum Spiegeln, Durchführen von Sicherungen oder zum Migrieren von Daten auf andere Server verwendet.
Dieses Tool ist schnell und effizient, kopiert nur die Änderungen aus der Quelle und bietet Anpassungsoptionen.
Folgen Sie dieser Anleitung, um zu erfahren, wie Sie rsync mit verwenden 20 Befehlsbeispiele um die meisten Anwendungsfälle in Linux abzudecken.
Voraussetzungen
- Benutzer mit sudo oderroot Privilegien
- Zugriff auf ein Terminal/eine Befehlszeile
- SSH-Zugriff für entfernte rsync-Beispiele
Rsync-Befehlssyntax
Die Syntax für rsync
Befehl ändert sich je nach Verwendung des Tools. Wir werden alle Szenarien in den folgenden Beispielen behandeln. Die Rsync-Syntax sieht in ihrer einfachsten Form so aus:
rsync options SOURCE DESTINATION
Für Remote-Datenübertragungen müssen Sie die Adresse eines Hosts angeben, aber dazu später mehr.
Rsync-Optionen
Das rsync-Tool bietet viele Optionen. Sie können rsync
eingeben in Ihrem Terminal und erhalten Sie alle Details. Wir werden einige der gebräuchlichsten rsync-Optionen auflisten.
Dazu gehören:
-r | Ermöglicht die rekursive Synchronisierung von Daten, behält jedoch keine Eigentumsrechte für Benutzer und Gruppen, Berechtigungen, Zeitstempel oder symbolische Links. |
-a | Der Archivmodus verhält sich wie der rekursive Modus, behält aber alle Dateiberechtigungen, symbolischen Links, Dateibesitz usw. |
-z | Wird verwendet, um Daten während der Übertragung zu komprimieren, um Platz zu sparen. |
-b | Führt während der Datensynchronisierung eine Sicherung durch. |
-h | Zeigt die Zahlen in der Ausgabe in einem für Menschen lesbaren Format an. |
-n | Führt einen Trockenlauf durch. Wird zum Testen verwendet, bevor die eigentliche Synchronisierung stattfindet. |
-e | Weist rsync an, das SSH-Protokoll für Fernübertragungen zu verwenden. |
-progress | Zeigt den Übertragungsfortschritt während der Synchronisierung an. |
-v | Ausführliche Ausgabe. Zeigt die Details der Übertragung an. |
-q | Wird verwendet, um die Ausgabe für den rsync-Befehl und die Optionen zu unterdrücken. |
Rsync-Befehlsbeispiele
Rsync ist ein vielseitiges Synchronisierungstool, das Sie an Ihre spezifische Verwendung anpassen können. In diesem Leitfaden verwenden wir das Archiv (-a
) und ausführlich (-v
) Optionen bei Bedarf.
Sehen Sie sich die rsync-Beispiele unten an, um den Großteil der rsync-Nutzung abzudecken.
1. Einzelne Datei lokal kopieren
Um eine Datei in ein anderes Verzeichnis auf einem lokalen Rechner zu kopieren, geben Sie den vollständigen Pfad der Quelldatei gefolgt vom Zielort ein.
Zum Beispiel:
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/rsync/
Der Befehl überträgt die sample.txt Datei zum rsync Verzeichnis. Wenn das Zielverzeichnis nicht existiert, fügen Sie am Ende einen Schrägstrich hinzu, und rsync erstellt es, wie in unserem Beispiel.
Wenn Sie eine Datei aus dem aktuellen Arbeitsverzeichnis kopieren möchten, können Sie den Namen der Datei eingeben, nicht den vollständigen Pfad.
2. Mehrere Dateien lokal kopieren
Um mehrere Dateien mit rsync zu kopieren, fügen Sie die vollständigen Pfade der Quelldateien hinzu:
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/sample2rs.txt /home/test/Desktop/rsync
Sie sollten diese Methode für eine kleine Anzahl von Dateien verwenden. Wenn die Liste größer ist, können Sie auf --exclude
verweisen Option.
3. Ein Verzeichnis und alle Unterverzeichnisse lokal kopieren (Dateien und Verzeichnisse rekursiv kopieren)
Um ein Verzeichnis und seinen Inhalt an einen anderen Ort auf Ihrem Computer zu kopieren, verwenden Sie -a
oder -r
Möglichkeit. Wir haben das Archiv verwendet Option :
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync
Das obige Beispiel zeigt, wie die Linux kopiert wird in das rsync -Verzeichnis Verzeichnis. Beachten Sie, dass wir den abschließenden Schrägstrich nach Linux nicht verwendet haben . Daher hat das rsync-Tool das Linux erstellt Verzeichnis und dessen Inhalt innerhalb von rsync Verzeichnis.
4. Kopieren Sie eine Datei oder ein Verzeichnis von einem lokalen auf einen Remote-Computer
Um das Verzeichnis /home/test/Desktop/Linux zu kopieren nach /home/test/Desktop/rsync Auf einem Remote-Rechner müssen Sie die IP-Adresse des Ziels angeben.
Fügen Sie die IP-Adresse und das Ziel nach dem Quellverzeichnis hinzu. Denken Sie daran, einen Doppelpunkt (:
) nach der IP-Adresse des Remote-Hosts, ohne Leerzeichen vor dem Ziel.
Der Befehl sieht folgendermaßen aus:
rsync -av /home/test/Desktop/Linux 192.168.56.100:/home/test/Desktop/rsync
Geben Sie das Passwort für den aktuellen Benutzer ein, um fortzufahren. Wenn Sie ein anderes Konto für die Remote-Verbindung verwenden möchten, geben Sie es vor der IP-Adresse an:
rsync -a /home/test/Desktop/Linux [email protected]:/home/test/Desktop/rsync
Um eine einzelne Datei auf einen Remote-Host zu kopieren, geben Sie den vollständigen Pfad der Datei und das Ziel an.
Zum Beispiel:
rsync -av /home/test/Desktop/sample_file.txt 192.168.56.100:/home/test/Desktop/rsync
5. Kopieren Sie mehrere Dateien oder Verzeichnisse vom lokalen auf den Remote-Computer
Listen Sie ähnlich wie beim lokalen Kopieren von Daten mehrere Dateien oder mehrere Verzeichnispfade auf, die Sie auf einen Remote-Server kopieren möchten. Befolgen Sie dieselbe Syntax wie beim Kopieren einer einzelnen Datei oder eines einzelnen Verzeichnisses.
Zum Beispiel:
rsync -av /home/test/Desktop/Linux/ /home/test/Music 192.168.56.100:/home/test/Desktop/rsync
6. Geben Sie das rsync-Protokoll für Remote-Übertragungen an
Das rsync-Tool kann mit -e
angewiesen werden Möglichkeit um ein bestimmtes Protokoll für Dateiübertragungen zu verwenden. Um Rsync über SSH für die Remoteübertragung von Dateien zu verwenden, hängen Sie -e ssh
an zum rsync
Befehl.
Zum Beispiel, um sample.txt zu übertragen von Ihrem Desktop auf den Desktop eines entfernten Rechners:
rsync -e ssh /home/test/Desktop/sample.txt 192.168.56.100:/home/test/Desktop
7. Kopieren einer Datei oder eines Verzeichnisses von einem Remote- auf einen lokalen Computer
Rsync unterstützt die Übertragung von Dateien von einem Remote-Server auf Ihren lokalen Rechner.
Um ein Verzeichnis von einem Server abzurufen, geben Sie seine IP-Adresse vor der Quelle an.
Zum Beispiel:
rsync -av 192.168.56.100:/home/test/Desktop/DirM /home/test/Desktop
Dieser Befehl kopierte das DirM Verzeichnis von 192.168.56.100 bis /home/test/Desktop auf einem lokalen Server.
Um eine bestimmte Datei von einem Remote-Host zu kopieren, geben Sie den vollständigen Pfad der Quelldatei und das Ziel auf Ihrem lokalen Computer ein. Zum Beispiel:
rsync -v 192.168.56.100:/home/test/Desktop/testfile.txt /home/test/Desktop
8. Kopieren Sie mehrere Dateien oder Verzeichnisse vom lokalen auf den Remote-Computer
Um mehrere Dateien oder mehrere Verzeichnisse von einem Remote-Server zu übertragen, listen Sie die Pfade in geschweiften Klammern nach der IP-Adresse des Servers auf. Trennen Sie die Pfade mit einem Komma.
Zum Beispiel:
rsync -av 192.168.56.100:{/home/test/Desktop/DirM,/home/test/Desktop/Dir1} /home/test/rsync
Dasselbe gilt für die Dateien. Listen Sie so viele Dateien wie nötig in den geschweiften Klammern auf.
9. rsync-Fortschritt während der Datenübertragung anzeigen
Wenn Sie eine große Datensicherung durchführen, möchten Sie möglicherweise den Fortschritt der Übertragung anzeigen.
Fügen Sie --progress
hinzu -Flag zum rsync
Befehl, um die übertragene Datenmenge, die Übertragungsgeschwindigkeit und die verbleibende Zeit anzuzeigen.
Zum Beispiel, um Dir1 zu sichern zu einem entfernten Server zu übertragen und den Fortschritt anzuzeigen, geben Sie ein:
rsync -av --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
10. Löschen Sie eine nicht vorhandene Quelldatei oder ein nicht vorhandenes Verzeichnis vom Ziel
Verwenden Sie --delete
Option, um die Quelle und das Ziel synchron zu halten.
Diese Option weist rsync an, jede Datei oder jedes Verzeichnis am Ziel zu löschen, wenn die Quelle es nicht hat.
rsync -av --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
11. Quelldateien nach der Übertragung löschen
In einigen Szenarien möchten Sie die Quelldateien nach der Übertragung möglicherweise löschen. Beispielsweise können Sie ein wöchentliches Backup auf einen neuen Server verschieben. Sobald die Übertragung abgeschlossen ist, benötigen Sie die Quelldateien auf dem alten Server nicht mehr.
Verwenden Sie in diesem Fall --remove-source-files
Flag, um die angegebene Quelldatei zu löschen.
Dieser Befehl überträgt beispielsweise die Sicherungsdatei weekly.zip und löscht es dann aus der Quelle:
rsync -v --remove-source-files /home/test/backup/weekly.zip 192.168.56.100:/home/test/Desktop/rsync/
12. Rsync-Trockenlauf
Rsync ist ein leistungsstarkes Synchronisierungstool. Da Sie mit diesem Tool Daten kopieren und löschen können, empfehlen wir Ihnen, zunächst einen Probelauf durchzuführen, um zu testen, ob rsync das tut, was Sie beabsichtigt haben.
Die Probelaufoption ist besonders nützlich, wenn Sie Dateien löschen möchten. Um einen Probelauf durchzuführen, verwenden Sie --dry-run
Option und folgen Sie der regulären rsync-Syntax.
Zum Beispiel:
rsync -av --dry-run --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
Die Ausgabe sieht genauso aus wie beim tatsächlichen Synchronisieren von Dateien. Diesmal werden die Daten jedoch nicht synchronisiert. Um zu bestätigen, dass der Test stattgefunden hat und nicht die tatsächliche Übertragung, zeigt das Terminal unten (DRY RUN).
13. Legen Sie die maximale Dateigröße für die Übertragung fest
Um die maximale Dateigröße zu bestimmen, die rsync überträgt, verwenden Sie --max-size=add_size
.
Um beispielsweise Dateien zu übertragen, die nicht größer als 500 KB sind, verwenden Sie diesen Befehl:
rsync -av --max-size=500k /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
14. Legen Sie die minimale Dateigröße für die Übertragung fest
Verwenden Sie --min-size=add_size
mit rsync, wenn Sie keine Dateien übertragen möchten, die kleiner als die von Ihnen angegebene Größe sind. Diese Option ist zum Beispiel nützlich, wenn Sie kleine Log- oder Thumbnail-Dateien überspringen möchten.
Um eine Datei kleiner als 10 KB zu überspringen, führen Sie diesen Befehl aus:
rsync -av --min-size=10k /home/test/Desktop/ 192.168.56.100:/home/test/Desktop/rsync/
15. rsync-Bandbreitenlimit festlegen
Wenn Sie das Bandbreitenlimit während der Datenübertragung zwischen Computern bestimmen möchten, verwenden Sie --bwlimit=KB/s
.
Diese Option ist nützlich, wenn Sie Ihren Netzwerkdurchsatz nicht blockieren möchten.
Geben Sie Folgendes ein, um die maximale Übertragungsgeschwindigkeit auf 50 KB/s festzulegen:
rsync -av --bwlimit=50 --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
Wir haben auch den --progress
verwendet Option, um die Verwendung von --bwlimit
zu demonstrieren .
16. Bestimmten Dateityp kopieren
Sie können rsync verwenden, um nur einen bestimmten Dateityp zu kopieren. Verwenden Sie dazu das Sternchen (*
) anstelle des Dateinamens und fügen Sie die Erweiterung hinzu.
Um beispielsweise nur .txt-Dateien zu kopieren, geben Sie Folgendes ein:
rsync -v /home/test/Documents/*.txt /home/test/Desktop/rsync/
Dieses rsync
Befehl überträgt alle Textdateien aus den Dokumenten in das rsync -Verzeichnis Verzeichnis auf Ihrem Desktop.
17. Verzeichnisstruktur kopieren, aber Dateien überspringen
Mit Rsync können Sie nur die Verzeichnisstruktur übertragen, wenn Sie die Dateien nicht an einem anderen Ort benötigen.
Fügen Sie dazu -f"+ */" -f"- *"
hinzu vor dem Quellverzeichnis.
Zum Beispiel, um die Struktur von Linux zu kopieren Verzeichnis zu Dokumente , geben Sie ein:
rsync -av -f"+ */" -f"- *" /home/test/Desktop/Linux /home/test/Documents
18. Datumsstempel zum Verzeichnisnamen hinzufügen
Sie können einem Verzeichnisnamen ganz einfach ein Datum hinzufügen, wenn Sie Ihre Übertragungen mit einem Datumsstempel versehen möchten.
Hängen Sie $(date +%Y-%m-%d)
an zum Namen des Zielverzeichnisses, das Sie erstellen möchten. Diese Option ist nützlich, wenn Sie nachverfolgen möchten, wann Übertragungen stattfanden, ohne die Verzeichniseigenschaften zu öffnen.
Zum Beispiel:
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +%Y-%m-%d)
19. Quelldatei nicht kopieren, wenn dieselbe Zieldatei geändert wird
Wenn Sie zwei Verzeichnisse synchron halten, kopiert rsync keine Datei, wenn dieselbe am Ziel vorhanden ist.
Manchmal kann es vorkommen, dass Sie eine Datei am Ziel ändern und nicht möchten, dass rsync sie überschreibt.
Um das Überschreiben geänderter Zieldateien zu vermeiden, verwenden Sie -u
Option.
Zum Beispiel:
rsync -avu /home/test/Desktop/Linux/ /home/test/Desktop/rsync
20. Den Unterschied zwischen Quell- und Zieldatei zeigen
Wenn Sie mit der Datenübertragung beginnen, können Sie das -i
verwenden Flag mit rsync, um zu prüfen, ob es einen Unterschied zwischen Quelle und Ziel gibt.
Zum Beispiel:
rsync -avi /home/test/Desktop/Linux/ /home/test/Desktop/rsync
Das obige Beispiel zeigt die sample2rs.txt Datei fehlt am Ziel.
Mögliche Buchstaben in der Ausgabe sind:
f
– steht für Dateid
– zeigt an, dass die Zieldatei fraglich istt
– zeigt an, dass sich der Zeitstempel geändert hats
– zeigt an, dass sich die Größe geändert hat