Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Verwendung des rsync-Befehls zum Synchronisieren von Dateien und Verzeichnissen [11 Beispiele]

Rysnc-Leitfaden
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

rsync ist ein kostenloses Befehlszeilentool, mit dem Sie Dateien lokal und remote synchronisieren können. Damit können Sie Dateien und Verzeichnisse übertragen.

Dies macht es sehr nützlich für die Migration von Daten, die Durchführung von Sicherungen und die Spiegelung, 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?

rsync ist ein Befehlszeilendienstprogramm zur Fernsynchronisierung für Unix-ähnliche Systeme. Es gibt dem Benutzer die Möglichkeit, Dateien nahtlos zwischen Computern oder zwei Hosts zu übertragen/synchronisieren.

Unter der Haube verwendet rsync den Delta-Transfer-Algorithmus. Dieser Algorithmus beinhaltet das Kopieren von Unterschieden zwischen den beiden Dateien über zwei Hosts (Quelle und Ziel). Quelle und Ziel können lokal oder remote sein. Der Befehl rsync kann Aufgaben zum Kopieren/Synchronisieren von Daten auf zwei Arten ausführen. Diese sind:

  • Nutzen Sie den ssch, rsch zum Kopieren/Synchronisieren zwischen zwei Hosts.
  • Nutzen Sie den TCP-rsync-Daemon zum Kopieren/Synchronisieren.

Da es für den Betrieb in Unix-ähnlichen Systemen entwickelt wurde, funktioniert es auch in Linux

Der schrittweise Prozess, den rsync wie folgt verwendet:

  • Rsync verwendet SSH, um sich mit dem Remote-Host zu verbinden, und fragt nach einem Passwort.
  • Sobald die Verbindung hergestellt ist, kommuniziert der rsync des Remote-Hosts mit der Quelle.
  • Diese Programme bestimmen dann die Dateien und Verzeichnisse, die synchronisiert werden müssen. Es verwendet einen Delta-Übertragungsalgorithmus, um den Unterschied zwischen den Dateien zu überprüfen.
Bild-159

Wenn der Befehl rsync eine Datei auf der Fernbedienung, aber nicht auf dem Host findet, kopiert und überträgt er sie auf das Hostsystem. In ähnlicher Weise wird für bereits vorhandene Dateien (sowohl auf dem Host als auch auf der Ferne) der Unterschied zwischen ihnen kopiert (dh geänderte Teile). Schließlich werden vorhandene Dateien auf beiden Systemen ohne Änderungen ignoriert.

Der Befehl rsync erzielt inkrementelle Aktualisierungen, indem er die Differenz in einer temporären Datei speichert, bevor er sie an das Ziel verschiebt.

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-Befehlen
  • Sie benötigen auch zwei Maschinen, um rsync zu erstellen. 

Für das Tutorial werden wir verwenden Linux Mint 21.1 Version. Sie können der Anleitung problemlos mit jeder anderen Linux-Distribution folgen.

Warum rsync über SCP verwenden?

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

Die Frage bleibt jedoch, warum rsync über scp verwenden?

Nun, die Verwendung von rsync bietet mehrere Vorteile. Zu diesen Vorteilen gehören:

  • Schnellere Ausführung: rsync ist schneller als scp, da es ein Remote-Update-Protokoll verwendet. Dadurch können nur Unterschiede und nicht die gesamte Datei übertragen werden. Wenn Sie also im Laufe der Zeit eine regelmäßige Synchronisierung einrichten, müssen Sie beim ersten Mal nur eine vollständige Kopie erstellen. Ab dem nächsten Mal kopiert es nur noch die aktualisierten Teile mit Hilfe des Delta-Transfer-Algorithmus.
  • Weniger Bandbreitenverbrauch: Da rsync nicht die gesamte Datei erneut kopieren muss, führt dies zu weniger Bandbreitenverbrauch. Darüber hinaus werden Komprimierungs-/Dekomprimierungsalgorithmen verwendet, um die Dateigröße während der Übertragung zu minimieren.
  • Weitere Befehlszeilenoptionen: rsync schlägt scp auch in der Anzahl der Befehlszeilenoptionen. Dies bedeutet, dass Sie rsync mehr feinabstimmen können als scp.

Zusammenfassend ist rsync ein hervorragendes inkrementelles Synchronisierungstool. Das scp-Tool ist auch hilfreich, um Dateien sicher zu übertragen/synchronisieren. In einem realen Szenario eignet sich scp für alltägliche Aufgaben, wenn Sie nach einem einfacheren Ansatz suchen. Verwenden Sie jedoch für wiederkehrende Aufgaben rsync.

rsync-Befehlssyntax

Der rsync-Befehl lautet wie folgt:

  • Lokal zu Lokal: rsync-Option SOURCE DEST
  • 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 – Dies 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. Beispielsweise können Sie Daten rekursiv mit dem synchronisieren -r-Option. Jedoch die -r-Option synchronisiert nicht die Eigentümerschaft für Gruppen und Benutzer, Zeitstempel, Berechtigungen oder symbolische Links. Stattdessen können Sie die verwenden -eine Option, der den Befehl im Archivmodus ausführt und sicherstellt, dass alle Eigentumsrechte, Berechtigungen und symbolischen Links der Datei beim Kopieren beibehalten werden.

Andere rsync-Optionen umfassen:

  • -Mit: Daten komprimieren, um Speicherplatz zu sparen
  • -H: bietet eine menschenlesbare Formatausgabe
  • -B: führt eine Sicherung während des Datensynchronisierungsprozesses durch
  • -und: Verwenden Sie das SSH-Protokoll für die Datenübertragung per Fernzugriff
  • -Fortschritt: zeigt den Fortschritt der Datensynchronisierung an
  • -in: rsync bitten, eine ausführliche Ausgabe anzuzeigen
  • -n: Führen Sie einen Probelauf durch, um die Einstellungen und die Einrichtung für die Datensynchronisierung zu testen
  • -Q: Ausgabe und Optionen des rsync-Befehls unterdrücken

rsync installieren

Auf den meisten Unix- und Linux-Systemen ist rsync bereits installiert. Wenn Ihr System nicht über rsync verfügt, 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 Mint haben, war rsync vorinstalliert. Sie können also den Befehl rsync im Terminal ausführen, um zu sehen, ob es installiert ist. Es erklärt seine Fähigkeiten, Optionen und andere wichtige Informationen, falls 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 rsync in Aktion mit verschiedenen Anwendungsfällen an.

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 Dateien generieren, damit rsync funktioniert. Lassen Sie uns also einige Testdateien mit dem folgenden Befehl erstellen.

touch source-directory/file{1..100}

Dadurch werden 100 leere Dateien im Quellverzeichnis erstellt. 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.

Copy Directories Locally Recursively

Obwohl rsync hauptsächlich darauf abzielt, Dateien zwischen einem lokalen und einem entfernten Server zu kopieren, ist es ebenso hilfreich, um Dateien lokal zu kopieren. 

In diesem Fall verwenden wir die folgende rsync-Syntax.

rsync-Option SOURCE DESTINATION

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.

Copy Single-File Locally

Nachdem wir nun gelernt haben, wie man zwei Verzeichnisse synchronisiert, lernen wir, wie man eine einzelne Datei kopiert.

Dazu editieren wir die leere Datei file1 der Quellverzeichnis und synchronisieren Sie es dann mit derselben 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.
aktualisierung-datei1-mit-text
Hinzufügen von Inhalt zu einer Datei

Schließen und speichern Sie nun die Datei.

Lassen Sie uns nun die Datei mit rsync kopieren.

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. Dadurch werden die vorhandenen Dateien aktualisiert. Wenn Sie den Befehl ohne ausführen -vorhandenen, wird es nicht aktualisiert, 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

Copying Multiple Files

Wenn Sie beabsichtigen, mehrere Dateien zu kopieren, müssen Sie die Quellpfade beider Dateien angeben, gefolgt vom Zielverzeichnis.

Zu diesem Zweck erstellen wir zwei neue Dateien: neueDatei2 funktioniert neueDatei3In der Quellverzeichnis. Führen Sie dazu den folgenden Befehl aus.

touch source-directory/newfile{2..3}

Verwenden Sie nun den folgenden Befehl, um mehrere Dateien zu synchronisieren.

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
$ 

Copy File or Directory From Local to Remote

Die rsync-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

Remote Transfer-Specific Protocols

Mit rsync können Sie bestimmte Dateiübertragungsprotokolle angeben. 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 sch zum rsync-Befehl.

rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Copying a File or Directory From Remote to Local

Die rsync-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 nach remote zu kopieren, müssen Sie den Pfad innerhalb der geschweiften Klammern (durch Kommas getrennt) nach der Server-IP-Adresse angeben.

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.

Show Live Progress During Transfer

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 den Befehl rsync an, 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

Delete Source Files Once the Transfer Is Complete

Sie können die Verwendung -Entfernen-Quelldateien Flag, um Quelldateien nach der vollständigen Übertragung zu entfernen. Dies kann Ihnen in vielen Szenarien helfen, insbesondere wenn es darum geht, Ihre Dateien spurlos zu sichern oder sie einfach zu verwenden, um Speicherplatz freizugeben.

rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

rsync dry run

Mit Rysnc können Sie auch bewerten, bevor Sie einen tatsächlichen Lauf durchführen. Der Probelauf lässt Sie sehen, ob Sie das Richtige tun. Schließlich möchten Sie Dateien nicht versehentlich aktualisieren oder gar 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.

Set Minimum and Maximum File Size

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 ignoriert rsync Dateien über der Größe von 450 KB.

Set Bandwidth Limit

Wenn Sie andere bandbreitenintensive Aufgaben erledigen, können Sie rysnc so einstellen, dass es das Bandbreitenlimit für die Übertragung festlegt. 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 stellen wir die Bandbreite auf ein 100 Kb/s während der Überweisung.

Zusammenfassung

Dies führt uns zum Ende unseres rsync-Befehlsleitfadens. Wir haben gelernt, wie man rysnc verwendet, 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 manpage, wo jeder Aspekt von rsync behandelt wird.

Als nächstes auschecken Befehlszeilen-Spickzettel für Windows, Linux und macOS.

Danke an unsere Sponsoren
Weitere großartige Lektüre zu Linux
Treiben Sie Ihr Geschäft an
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder