rsync Befehlsverwendung an Sync Dateien und Verzeichnisse [11 Beispiele]

rsync ist ein kostenloses Befehlszeilentool, mit dem Sie sync Dateien locally und aus der Ferne. Damit können Sie Dateien und Verzeichnisse übertragen.
Dies macht es sehr nützlich für die Migration von Daten, die Durchführung von Backups usw mirroRing, was es ideal für Webmaster und Administratoren für wiederkehrende Datenübertragungsaufgaben macht.
In diesem Artikel lernen wir, wie Rysnc funktioniert, und geben einige hilfreiche Beispiele.
Wie funktioniert rsync Arbeit?
rsync ist eine Fernbedienung syncHronization-Befehlszeilendienstprogramm für Unix-ähnliche Systeme. Es gibt dem Benutzer die Möglichkeit zur Übertragung/sync Dateien nahtlos zwischen Maschinen oder zwei Hosts übertragen.
Unter der Haube, rsync verwendet das delta-Übertragungsalgorithmus. Bei diesem Algorithmus werden Unterschiede zwischen den beiden Dateien auf zwei Hosts (Quelle und Ziel) kopiert. Quelle und Ziel können lokal oder remote sein. Der rsync Befehl kann Kopieren/sync Datenaufgaben auf zwei Arten. Diese sind:
- Verwenden Sie die ssch, rsch Kopieren/sync zwischen zwei Gastgebern.
- Verwenden Sie die TCP rsync Daemon zum Kopieren/syncing.
Da es für den Betrieb in Unix-ähnlichen Systemen entwickelt wurde, funktioniert es auch in Linux.
Die Schritt für Schritt process rsync verwendet wie folgt:
- Rsync stellt über SSH eine Verbindung zum Remote-Host her und fragt nach einem Passwort.
- Sobald die Verbindung hergestellt ist, wird der r des Remote-Hosts angezeigtsync kommunizierenates mit der Quelle.
- Diese Programme ermitteln dann die benötigten Dateien und Verzeichnisse sync. Es verwendet a delta-Übertragungsalgorithmus zur Überprüfung der Unterschiede zwischen den Dateien.

Wenn der rsync Wenn der Befehl keine Datei auf der Fernbedienung, aber nicht auf dem Host findet, wird sie kopiert und auf das Hostsystem übertragen. Ebenso wird bei bereits vorhandenen Dateien (sowohl auf dem Host als auch auf der Fernbedienung) der Unterschied zwischen ihnen kopiert (dh geänderte Teile). Schließlich werden vorhandene Dateien auf beiden Systemen ohne Änderungen ignoriert.
Die rsync Der Befehl führt eine inkrementelle Aktualisierung durchates durch Speichern der Differenz in einer temporären Datei, bevor sie an das Ziel verschoben wird.
Bevor du anfängst:
- Sie müssen Root- oder Sudo-Rechte haben
- Zugriff auf das Terminal/die Befehlszeile haben
- SSH-Zugriff zum sicheren Ausführen von rsync Befehle
- Sie benötigen außerdem zwei Maschinen, um r herzustellensync.
Für das Tutorial werden wir verwenden Linux Mint 21.1 Vera. Sie können der Anleitung problemlos mit jeder anderen Linux-Distribution folgen.
Warum r verwenden?sync Über Scp?
Scp (Secure Copy) ist ein beliebtes Befehlszeilenprotokoll, mit dem Benutzer Dateien kopieren können. Es folgt einem linearen Kopieransatz. Das bedeutet, dass die Dateien einfach von der Quelle zum Ziel kopiert werden. Um dies sicher zu tun, verwendet es SSH.
Die scp-Befehlssyntax lautet wie folgt:
scp option SOURCE DESTINATION
Es bleibt jedoch die Frage, warum r verwendet wirdsync über scp?
Nun, die Verwendung von r bietet mehrere Vorteilesync. Zu diesen Vorteilen gehören:
- Schnellere Ausführung: rsync ist schneller als scp, da es ein Remote-Update verwendetate Protokoll. Dadurch können nur Unterschiede und nicht die gesamte Datei übertragen werden. Also, wenn Sie einen regulären einrichten sync Mit der Zeit müssen Sie nur beim ersten Mal eine vollständige Kopie erstellen. Ab dem nächsten Mal wird nur noch das Update kopiertated Teile mit Hilfe der delta-Übertragungsalgorithmus.
- Weniger Bandwidth Verbrauch: Wie rsync Es ist nicht erforderlich, die gesamte Datei erneut zu kopieren, da dies zu weniger Kosten führt bandwidth Verbrauch. Darüber hinaus werden Komprimierungs-/Dekomprimierungsalgorithmen verwendet, um die Dateigröße während der Übertragung zu minimieren.
- Weitere Befehlszeilenoptionen: rsync übertrifft scp auch in der Anzahl der Befehlszeilenoptionen. Dies bedeutet, dass Sie r feinabstimmen könnensync mehr als scp.
Abschließend, rsync ist ein hervorragendes Inkrement sync Werkzeug. Das scp-Tool ist auch hilfreich für die sichere Übertragung/syncing-Dateien. In einem realen Szenario eignet sich scp für alltägliche Aufgaben, wenn Sie einen einfacheren Ansatz suchen. Für wiederkehrende Aufgaben verwenden Sie jedoch rsync.
rsync Befehlssyntax
Die rsync Der Befehl lautet wie folgt:
- Lokal zu Lokal: rsync Option QUELLZIEL
- Lokal zu Remote: rsync Option SOURCE USER@HOST:DEST
- Remote zu Lokal: rsync Option USER@HOST:SRC DEST
Hier werden die Begriffe wie folgt definiert:
- zur Auswahl – Das sind die rsync Optionen
- SOURCE – Quellverzeichnis
- ZIEL - Zielverzeichnis
- USER – Remote-Benutzername
- HOST – Remote-Hostname oder IP-Adresse
Die Optionen sind Parameter, die dem Befehl zusätzliche Funktionalität bieten. Das können Sie zum Beispiel sync Daten rekursiv mit dem -r-Option. Jedoch die -r-Option nicht sync Eigentum für Gruppen und Benutzer, Zeitstempel, Berechtigungen oder symbolische Links. Stattdessen können Sie die verwenden -eine Option, wodurch der Befehl in arc ausgeführt wirdhive Modus, der sicherstellt, dass beim Kopieren alle Eigentumsrechte, Berechtigungen und symbolischen Links der Datei erhalten bleiben.
Andere rsync Zu den Optionen gehören:
- -Mit: Daten komprimieren, um Speicherplatz zu sparen
- -H: bietet eine menschenlesbare Formatausgabe
- -B: führt während der Datensicherung eine Datensicherung durch syncHronisierung process
- -und: Verwenden Sie das SSH-Protokoll für die Datenübertragung per Fernzugriff
- -Fortschritt: die Daten anzeigen syncFortschritt der Thronisierung
- -in: frag rsync um eine ausführliche Ausgabe anzuzeigen
- -n: Führen Sie einen Probelauf durch, um die Einstellungen und die Einrichtung der Daten zu testen syncHronisierung
- -Q: unterdrücken rsync Befehlsausgabe und Optionen
Installieren von rsync
Die meisten Unix- und Linux-Systeme werden mit r geliefertsync Eingerichtet. Wenn Ihr System nicht über r verfügtsync, können Sie es mit den folgenden Befehlen installieren.
Für Debian/Ubuntu und Mint
sudo apt-get install rsync
Für Arch Linux
pacman -S rsync
Auf Gentoo
emerge sys-apps/rsync
Auf CentOS/Fedora/REHL
sudo yum install rsync
Auf openSUSE
sudo zypper install rsync
Da wir Linux haben Mint, Rsync kam vorinstalliert. So können Sie das r ausführensync Befehl im Terminal, um zu sehen, ob es installiert ist. Es werden seine Fähigkeiten, Optionen und andere wichtige Informationen erläutert, sofern vorhanden.
nitt ~
$ rsync
rsync version 3.2.3 protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
symtimes, prealloc, stop-at, no crtimes
Optimizations:
SIMD, no asm, openssl-crypto
Checksum list:
xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
zstd lz4 zlibx zlib none
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.
Sehen wir uns nun r ansync im Einsatz mit unterschiedlichen Anwendungsfällen.
Für das Tutorial werden wir zwei Verzeichnisse erstellen.
- Quellverzeichnis
- dest-Verzeichnis
Dazu müssen Sie die folgenden Befehle eingeben.
mkdir source-directory
mkdir dest-directory
Außerdem müssen wir generierenate Dateien zum Erstellen von rsync arbeiten. Also lasst uns Create einige Testdateien mit dem folgenden Befehl.
touch source-directory/file{1..100}
Diese Creates 100 leere Dateien im Quellverzeichnis. Sie können dies bestätigen, indem Sie den folgenden Befehl eingeben.
ls source-directory
Output:
nitt rsync-tutorial
$ ls
dest-directory source-directory
nitt rsync-tutorial
$ touch source-directory/file{1..100}
nitt rsync-tutorial
$ ls source-directory
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Hinweis: Wir haben das dest-Verzeichnis leer gelassen.
Verzeichnisse kopieren Locally Rekursiv
Auch wenn rsync zielt in erster Linie darauf ab, Dateien zwischen einem lokalen und einem Remote-Server zu kopierenally hilfreich zum Kopieren von Dateien locally.
In diesem Fall verwenden wir das folgende rsync Syntax.
rsync Option QUELLE ZIEL
Kopieren Sie die Dateien in unsere Quellverzeichnis zu den dest-Verzeichnis durch Ausführen des folgenden Befehls.
rsync -r source-directory/ dest-directory
Hier kopiert der Befehl „rekursiv“ die Dateien aus der Quellverzeichnis zu den dest-Verzeichnis.
nitt rsync-tutorial
$ ls
dest-directory source-directory
nitt rsync-tutorial
$ ls dest-directory
nitt rsync-tutorial
$ ls source-directory
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
nitt rsync-tutorial
$ rsync -r source-directory/ dest-directory
nitt rsync-tutorial
$ ls dest-directory
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Dies kopiert jede einzelne Datei in der Quellverzeichnis zu den dest-Verzeichnis.
Einzelnen Dateiort kopierenally
Jetzt haben wir gelernt, wie es geht sync Wenn Sie zwei Verzeichnisse erstellen, erfahren Sie, wie Sie eine einzelne Datei kopieren.
Dazu editieren wir die leere Datei file1 der Quellverzeichnis und dann sync es mit der gleichen Datei, die in der vorhanden ist dest-Verzeichnis.
Um eine Datei zu bearbeiten, geben Sie den folgenden Befehl ein.
nano source-directory/file1
Kopieren Sie nun den folgenden Text und fügen Sie ihn in den Nano-Editor ein.
We're updating file1 in the source-directory.
Once we update, we'll push the new update to the dest-directory.
rsync doesn't need to re-copy the file using the delta-transfer algorithm.
This algorithm checks the differences and then updates destination files
accordingly.
So, once you save file1 in the source-directory, open file1 in
the dest-directory. It'll be empty.
However, if we check it after running rsync, you'll see that file1 in dest-directory
is updated.

Schließen und speichern Sie nun die Datei.
Kopieren wir nun die Datei mit rsync.
sudo rsync -v --existing source-directory/file1 /dest-directory
#Output
nitt rsync-tutorial
$ sudo rsync -v --existing source-directory/file1 dest-directory
file1
sent 557 bytes received 35 bytes 1,184.00 bytes/sec
total size is 474 speedup is 0.80
nitt rsync-tutorial
$
Wie Sie vielleicht bemerkt haben, haben wir verwendet -vorhandenen Möglichkeit. Dieses Updateates die vorhandenen Dateien. Wenn Sie den Befehl ohne ausführen -vorhandenen, es wird nicht aktualisiertate, obwohl es erfolgreich ausgeführt wird.
Wenn die einzelne Datei, die Sie kopieren, nicht im Zielordner vorhanden ist, müssen Sie den folgenden Befehl ausführen.
rsync -v source-directory/newfile dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile dest-directory
newfile
sent 82 bytes received 35 bytes 234.00 bytes/sec
total size is 0 speedup is 0.00
Mehrere Dateien kopieren
Wenn Sie beabsichtigen, mehrere Dateien zu kopieren, müssen Sie die Quellpfade beider Dateien angeben, gefolgt vom Zielverzeichnis.
Zu diesem Zweck erstellen wirate zwei neue Dateien: neueDatei2 und neueDatei3In der Quellverzeichnis. Führen Sie dazu den folgenden Befehl aus.
touch source-directory/newfile{2..3}
Verwenden Sie nun den folgenden Befehl, um sync mehrere Dateien.
rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
newfile2
newfile3
sent 135 bytes received 54 bytes 378.00 bytes/sec
total size is 0 speedup is 0.00
nitt rsync-tutorial
$
Kopieren Sie eine Datei oder ein Verzeichnis von lokal nach remote
Die rsync Die Syntax für die Übertragung von lokal zu remote lautet wie folgt.
rsync option SOURCE USER@HOST:DEST
Wie Sie sehen können, müssen Sie die kennen IP-Adresse des Remote-Rechners, damit dies funktioniert. Außerdem müssen Sie die IP-Adresse nach der Quelldatei hinzufügen.
rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Vor Beginn der Übertragung wird nach dem Passwort gefragt. Geben Sie es ein, um fortzufahren. Wenn der Benutzer auf dem Remote-Computer anders ist, müssen Sie ihn vor der IP-Adresse gefolgt von erwähnen @.
rsync -av /Projects/rsync-tutorial/source-directory nithya@192.168.192.200: /Projects/rsync-tutorial/dest-directory
Wenn Sie beabsichtigen, mehrere Dateien oder Verzeichnisse zu kopieren, müssen Sie die Datei- oder Verzeichnispfade auflisten. Die Syntax dafür ist unten.
rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Fernübertragungsspezifische Protokolle
rsync ermöglicht Ihnen die Angabe spezifischer Dateiübertragungsprotokolle. Dazu müssen Sie die verwenden -e-Option, gefolgt vom Protokoll.
Wenn Sie beispielsweise das ssh-Protokoll verwenden möchten, müssen Sie anhängen -e ssh nach rsync Befehl.
rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Kopieren einer Datei oder eines Verzeichnisses von remote nach lokal
Die rsync Die Syntax für die Übertragung von lokal zu remote lautet wie folgt.
sync option USER@HOST:SRC DEST
Dies fungiert als Pull-Request. Um also die erforderlichen Dateien/Verzeichnisse von einem Remote-Server auf Ihren lokalen Computer zu bekommen, müssen Sie den folgenden Befehl ausführen.
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Der Befehl ruft die Dateien auf dem Remote-Computer ab dest-Verzeichnis zu den lokalen Rechnern Quellverzeichnis.
Ebenso können Sie eine bestimmte Datei ziehen, indem Sie sie durch ihren vollständigen Pfad erwähnen.
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory
Um mehrere Dateien oder Verzeichnisse von lokal auf remote zu kopieren, müssen Sie den Pfad in geschweiften Klammern angeben (separated durch Kommas) nach der Server-IP-Adresse.
rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory
Ebenso können Sie auch Dateien erwähnen.
Live-Fortschritt während der Übertragung anzeigen
Es ist eine gute Idee, Live-Fortschritte für größere zu sehen Datensicherungen. Dazu müssen Sie die verwenden -Fortschritt Flagge. Hängen Sie es an das r ansync Befehl, und Sie können die Übertragungsgeschwindigkeit, die verbleibende Zeit und die übertragene Datenmenge sehen.
rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Löschen Sie die Quelldateien, sobald die Übertragung abgeschlossen ist
Sie können die Verwendung -Entfernen-Quelldateien Flag, um Quelldateien nach der vollständigen Übertragung zu entfernen. Dies kann Ihnen in vielen Szenarien helfen, insbesondereally wenn es darum geht, Ihre Dateien spurlos zu sichern oder sie einfach zum Freigeben von Speicherplatz zu nutzen.
rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
rsync Probelauf
Mit Rysnc können Sie auch evaluierenate bevor Sie einen tatsächlichen Lauf durchführen. Beim Probelauf können Sie sehen, ob Sie das Richtige tun. Schließlich möchten Sie nicht aktualisierenate versehentlich Dateien löschen oder sogar löschen.
Sie müssen das verwenden -Probelauf Möglichkeit, einen Trockenlauf zu machen. Fügen Sie es dem Befehl hinzu, gefolgt von der Quelle und dem Ziel.
sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial
$ sudo rsync -v --dry-run source-directory/file1 dest-directory
file1
sent 43 bytes received 19 bytes 124.00 bytes/sec
total size is 474 speedup is 7.65 (DRY RUN)
nitt rsync-tutorial
Die Ausgabe ist ähnlich wie zuvor. Sie werden jedoch eine Erwähnung von bemerken (PROBELAUF) am Ende der Ausgabe.
Legen Sie die minimale und maximale Dateigröße fest
Mit Rysnc können Sie auch die minimale oder maximale Dateigröße während der Übertragung festlegen.
Wenn Sie also mit einer Mindestgröße von 15 KB übertragen möchten, müssen Sie verwenden –Mindestgröße=15K.
rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Der Befehl kopiert nur Dateien mit einer Mindestdateigröße von 15 KB. Wenn die Dateigröße darunter liegt, wird sie ignoriert.
Ähnlich können Sie das verwenden –Max-Size-Flag um die maximale Dateigröße festzulegen.
rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Hier, rsync ignoriert Dateien über einer Größe von 450 KB.
Festlegung von Bandwidth Begrenzen
Wenn Sie etwas anderes tun bandwidth-intensive Aufgaben können Sie rysnc so einstellen, dass es festgelegt wird bandwidth Limit für die Übertragung. Verwenden Sie dazu die –bwlimit=KB/s.
rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Hier setzen wir die bandwidth zu 100 Kb/s während der Überweisung.
Zusammenfassung
Dies führt uns zum Ende unseres rsync Befehlsanleitung. Wir haben den Umgang mit rysnc gelernt und viele Befehle effektiv behandelt.
Rysnc bietet jedoch weit mehr als das, was wir behandelt haben. Deshalb möchten Sie vielleicht auch durch die gehen rsync Man Seite, wo jeder Aspekt von rsync ist bedeckt.
Als nächstes auschecken Befehlszeilen-Spickzettel for Windows, Linux und macOS.