logo

rsync-Befehl unter Linux mit Beispielen

rsync oder Remote-Synchronisierung ist ein Software-Dienstprogramm für Unix-ähnliche Systeme, das Dateien und Verzeichnisse zwischen zwei Hosts oder Maschinen effizient synchronisiert. Einer ist die Quelle oder der lokale Host, von dem aus die Dateien synchronisiert werden, der andere ist der Remote-Host, auf dem die Synchronisierung stattfindet. Grundsätzlich gibt es zwei Möglichkeiten rsync kann Daten kopieren/synchronisieren:

  • Kopieren/Synchronisieren zu/von einem anderen Host über eine beliebige Remote-Shell ssh , rsh .
  • Kopieren/Synchronisieren über den Rsync-Daemon mit TCP.

Rsync ist berühmt dafür Delta-Transfer-Algorithmus , wobei nur die Unterschiede zwischen den auf dem lokalen Host vorhandenen Quelldateien und den vorhandenen Dateien auf dem Ziel- oder Remote-Host kopiert werden.



Beispiel:

rsync local-file user@remote-host:remote-file>

Was geschieht hier:

neue Zeile in Python

Rsync verwendet zunächst SSH, um eine Verbindung herzustellenuser>zum Remote-Host und wird danach fragenuser's>Passwort. Sobald die Verbindung hergestellt ist, ruft es den Rsync des Remote-Hosts auf, und dann ermitteln die beiden Programme, welche Teile der lokalen Datei kopiert werden müssen, damit die Remote-Datei mit der lokalen Datei übereinstimmt. Bitte beachten Sie das folgende Verhalten von rsync:



  • Dateien, die auf dem Remote-Host nicht vorhanden sind, werden kopiert.
  • Aktualisierte Dateien werden synchronisiert, rsync kopiert nur die geänderten Teile der Dateien auf den Remote-Host.
  • Exakt identische Dateien werden nicht auf den Remote-Host kopiert.

Syntax des Befehls „rsync“ unter Linux

rsync [options] source [destination]>

Möglichkeit verfügbar im Befehl „rsync“ unter Linux

Optionen

Beschreibung

a, –Archiv



Dies entspricht der Verwendung -rlptgoD . Der Archivmodus umfasst alle notwendigen Optionen wie das rekursive Kopieren von Dateien, wobei fast alles erhalten bleibt (wie symbolische Links, Dateiberechtigungen, Benutzer- und Gruppeneigentum und Zeitstempel).

-v, –ausführlich

Standardmäßig arbeitet rsync im Hintergrund. Die Verwendung einer einzelnen Option -v liefert Informationen zu übertragenen Dateien und am Ende eine Zusammenfassung. Durch das Hinzufügen von zwei -v-Optionen erhalten Sie Statusaktualisierungen zur Delta-Übertragung und zu übersprungenen Dateien sowie weitere Informationen am Ende. Zum Debuggen von rsync werden normalerweise mehrere -v-Optionen verwendet.

-h, – für Menschen lesbares Format

Gibt in einem für Menschen lesbaren Format aus.

-z, –komprimieren

Dateidaten während der Übertragung komprimieren

Beispiele

Verwendung von „rsync“ als Listenbefehl

Wenn nur der Quellpfad angegeben wird, werden die Inhalte der Quelle in einem Ausgabeformat ähnlich wie aufgeführtls -l>.

rsync foo/>

Der obige Befehl listet die im Verzeichnis vorhandenen Dateien und Verzeichnisse auf foo .

Java-Druck

Ausgabe:

Dateien und Verzeichnis lokal kopieren/synchronisieren

Wenn weder im Quell- noch im Zielpfad ein Remote-Host angegeben ist, verhalten sich die rsync-Befehle wie ein Kopierbefehl.

rsync -avh foo/ bar/>

Der obige Befehl kopiert/synchronisiert alle im Verzeichnis vorhandenen Dateien und Verzeichnissefoo>zum Verzeichnis Bar . Wenn das Zielverzeichnis nicht vorhanden ist (hierbar>), erstellt rsync automatisch einen und kopiert alle darin enthaltenen Daten.

Ausgabe:

Rsync mit ssh

Es gibt zwei verschiedene Möglichkeiten für rsync, ein Remote-System zu kontaktieren:

  • Verwenden eines Remote-Shell-Programms als Transportmittel (z. Bssh>(Secure Shell) oderrsh>(Remote-Shell)).
  • Direkte Kontaktaufnahme mit einem Rsync-Daemon über TCP.

Hier werden wir Rsync über SSH diskutieren.

rsync -avhze ssh /foo user@remote-host:/tmp/>

Um den Typ des zu verwendenden Protokolls anzugeben,-e>Option verwendet wird.

Ausgabe:

Postorder-Traversierung des Binärbaums

Rsync mit bestimmten Dateiberechtigungen

Wenn wir Dateien mit den Berechtigungen der zu ändernden Dateien mit dem lokalen oder Remote-Host synchronisieren möchten. Der folgende Befehl muss verwendet werden.

rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>

Der obige Befehl synchronisiert alle im Verzeichnis vorhandenen Dateien /foo mit den im Verzeichnis vorhandenen Dateien /tmp imremote-host>mit allen Dateien im Besitz von USER mit der Gruppe GROUP.

Ausgabe:

Notiz: Deruser>Undgroup>muss bereits im Remote-Host erstellt sein.

Rsync mit --ignore-existing-files>

Wir können auch die bereits vorhandenen Dateien am Ziel überspringen. Dies kann im Allgemeinen verwendet werden, wenn wir Sicherungen mit dem durchführen –Link-Ziel Option, während ein Backup-Lauf fortgesetzt wird, der unterbrochen wurde.

rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>

Daher werden alle Dateien, die am Ziel nicht vorhanden sind, kopiert. Hier habe ich das gelöschtgeeksforgeeks>Ordner aus dem Verzeichnisfoo>, also sollte es nur kopierengeeksforgeeks>Verzeichnis.

Notiz: Dabei werden vorhandene Verzeichnisse nicht ignoriert, sonst wird nichts unternommen. Selbst wenn es einige Änderungen an einer Datei auf dem lokalen Host gibt, wird sie dennoch nicht synchronisiert, wenn sie auf dem Remote-Host vorhanden ist.

Ausgabe:

q2 Monate

Fortschritt während der Übertragung anzeigen

Um den Fortschritt beim Übertragen der Daten vom lokalen Host zum Remote-Host anzuzeigen, können wir verwenden-–progress>Möglichkeit.

rsync -avhe ssh --progress /foo user@remote-host:/tmp/>

Wenn die Übertragung für eine bestimmte Datei abgeschlossen ist, gibt rsync eine Zusammenfassungszeile aus, wie unten gezeigt.

Ausgabe:

Im obigen Bild sehen wir uns die Datei an/foo/file2>, das sagt es uns

  • Die Datei war insgesamt 44 Byte lang.
  • Die durchschnittliche Übertragungsrate für die gesamte Datei betrug 42,97 Kilobyte pro Sekunde über die Dauer von 0:00:00 Sekunden.
  • Es war der zweite Transfer in dieser Saison rsync Sitzung.
  • Von den insgesamt 13 Dateien in der Dateiliste sind noch 10 weitere Dateien übrig, die der Remote-Host überprüfen muss (um festzustellen, ob sie aktuell sind oder nicht).
  • Aktualisieren Sie die Remote-Version nur, wenn sich eine neuere Version im lokalen Dateisystem befindet:
    Wenn wir Dateien über den Remote-Host kopieren möchten, die kürzlich im lokalen Dateisystem aktualisiert wurden. Es ist erledigt -aktualisieren Flagge. Das Verhalten ist nun so:
    • Dateien, die auf dem Remote-Host nicht vorhanden sind, werden kopiert.
    • Dateien, die sowohl lokal als auch remote vorhanden sind, aber auf dem lokalen Host einen neueren Zeitstempel haben, werden auf den Remote-Host kopiert. (Umgekehrt werden Dateien mit einem älteren Zeitstempel nicht kopiert).

    Hier habe ich einige Änderungen vorgenommen Datei1 Und Datei2 , aber die Änderungen in Datei2 wurden vor kurzem gemacht. Also nur Datei2 wird synchronisiert.

    rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>

    Ausgabe: rsync-Update

    Dateien nach erfolgreicher Übertragung automatisch vom lokalen Host löschen

    Angenommen, wir haben einen Webserver und einen Backup-Server und haben ein tägliches Backup erstellt und es mit unserem Backup-Server synchronisiert. Dann möchten wir die lokale Kopie des Backups nicht auf unserem Webserver behalten. Anstatt es also nach erfolgreicher Übertragung manuell zu löschen, können wir das verwenden--remove-source-files>Flag, um die Dateien automatisch vom Webserver zu löschen.

    Finden Sie in der Karte c++
    rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>

    Ausgabe:

    Notiz: Dadurch werden nur die Dateien und nicht die Verzeichnisse gelöscht.

    Löschen Sie die Dateien, die auf dem lokalen Host gelöscht wurden

    Wenn einige Dateien auf dem lokalen Host gelöscht werden und wir möchten, dass diese auch auf dem Remote-Host aktualisiert werden, müssen wir die verwenden--delete>Möglichkeit.

    rsync -avhe ssh /foo --delete user@remote-host:/tmp/>

    Ausgabe:

    Also, hier Datei1 , Datei2 , Datei3 wurden auf dem lokalen Host gelöscht und werden, wie zu sehen ist, auch auf dem Remote-Host aktualisiert.

    Hinweis: ` rsync` löscht die Dateien nicht automatisch, um die auf beiden Seiten vorhandenen Verzeichnisse zu synchronisieren.

    Durchführen eines Probelaufs mit „rsync“.

    Bei einem Trockenlauf führt „rsync“ einen Probelauf durch, der keine Änderungen vornimmt und fast die gleiche Ausgabe anzeigt wie ein echter Lauf. Es wird im Allgemeinen mit den Optionen -v, –verbose und/oder -i, –itemize-changes verwendet, um zu sehen, was ein „rsync“-Befehl tun würde, bevor man ihn tatsächlich ausführt.

    rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>

    Ausgabe:

    Abschluss

    In diesem Artikel haben wir den Befehl rsync unter Linux besprochen, der ein vielseitiges und leistungsstarkes Tool zum Synchronisieren von Dateien und Verzeichnissen zwischen Hosts oder Maschinen ist. Mit seinem Delta-Transfer-Algorithmus und verschiedenen Optionen bietet es effiziente Datensynchronisation, Backup-Funktionen und Dateitransfer-Management. Durch die Beherrschung des Befehls rsync können Linux-Benutzer die Dateikonsistenz sicherstellen, die Datenübertragung optimieren und ihre Datenverwaltungsabläufe rationalisieren.