In Linux Letztes Updateated:
Teilen:
Cloudways bietet verwaltetes Cloud-Hosting für Unternehmen jeder Größe zum Hosten einer Website oder komplexer Webanwendungen.

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.

Teilen:
  • Nitish Singh
    Autor
    Ich bin C1 Advanced (CEFR) zertifiziert writer mit einem Master-Abschluss in Informatik (B-Level von NIELIT, Indien) und sieben Jahren Erfahrung als Autor. Meine Erfahrung umfasst das Schreiben für das Web und die Behandlung verschiedener Themen, darunter Web3,…

Danke an unsere Sponsoren

Weitere großartige Lektüre zu Linux

Treiben Sie Ihr Geschäft an

Einige der Tools und Services, die Ihrem Unternehmen helfen grow.