GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Setzen Sie teilweise übertragene Dateien über SSH mit Rsync fort

Stellen Sie sich dieses Szenario vor. Sie kopieren einige große Dateien von einem System auf ein anderes über SSH mit scp Befehl. Plötzlich ist der Strom weg, also wird die Netzwerkverbindung getrennt und der Kopiervorgang wird mittendrin abgebrochen. Was würdest du tun? Einfach den Kopiervorgang neu starten, sobald der Strom wieder online ist? Ja, es funktioniert. Allerdings ist die Datei scp Der Befehl hat keine Resume-Option, also beginnt er einfach mit dem Kopieren der Dateien von Anfang an und überschreibt die vorhandenen Dateien. Dies ist etwas lästig und zeitaufwändig. Hier ist Rsync Dienstprogramm kommt in Hilfe! Mit Rsync können wir teilweise übertragene Dateien über SSH problemlos fortsetzen. Es hilft Ihnen, den unterbrochenen Kopier- oder Download-Vorgang dort fortzusetzen, wo Sie ihn unterbrochen haben.

Was ist Rsync?

Für diejenigen, die sich fragen, Rsync ist ein schnelles, vielseitiges Dienstprogramm zum Kopieren von Dateien, das zum Kopieren und Übertragen von Dateien oder Ordnern zu und von entfernten und lokalen Systemen verwendet werden kann. Es bietet eine große Anzahl von Optionen, die jeden Aspekt seines Verhaltens steuern und eine sehr flexible Spezifikation des zu kopierenden Dateisatzes ermöglichen. Es ist berühmt für seinen Delta-Transfer-Algorithmus , wodurch die über das Netzwerk gesendete Datenmenge reduziert wird, indem nur die Unterschiede zwischen den Quelldateien und den vorhandenen Dateien am Ziel gesendet werden. Rsync wird häufig für Sicherungen und Spiegelungen sowie als verbesserter Kopierbefehl für den täglichen Gebrauch verwendet.

Genauso wie scp , rsync kann auch Dateien über SSH kopieren. Falls Sie große Dateien und Ordner über SSH herunterladen oder übertragen möchten, empfehle ich Ihnen, das Dienstprogramm rsync wie unten beschrieben zu verwenden.

Rsync unter Linux installieren

Bitte beachten Sie, dass das rsync-Dienstprogramm auf beiden Seiten installiert sein sollte (d. h. entfernte und lokale Systeme), um teilweise übertragene Dateien fortzusetzen. Rsync ist in den offiziellen Repositories der meisten Linux-Distributionen verfügbar, sodass Sie es mit dem Standard-Paketmanager der Distribution installieren können.

Unter Alpine Linux , können wir Rsync wie folgt installieren:

$ sudo apk add rsync

Auf Arch Linux und seine Varianten, installieren Sie Rsync mit dem Befehl:

$ sudo pacman -S rsync

Auf Debian , Ubuntu , Linux Mint :

$ sudo apt-get install rsync

Auf Fedora , RHEL , CentOS , AlmaLinux und Rocky Linux :

$ sudo dnf install rsync

Auf SUSE/openSUSE :

$ sudo zypper install rsync

Teilweise übertragene Dateien mit Rsync fortsetzen

Sehen wir uns nun ein Beispiel an. Ich werde die Ubuntu-ISO-Datei mit dem folgenden Befehl von meinem lokalen System auf ein Remote-System kopieren:

$ scp ubuntu.iso [email protected]:/home/sk/

Hier,

  • sk ist der Benutzername meines Remote-Systems
  • 192.168.225.22 ist die IP-Adresse des Remote-Rechners.
  • /home/sk/ ist das entfernte Ziel.

Nun habe ich den Kopiervorgang zwangsweise durch Drücken von CTRL+C beendet .

Beispielausgabe:

[email protected]'s password: 
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c

Wie Sie in der obigen Ausgabe sehen, habe ich den Kopiervorgang beendet, als er 33 % erreichte.

Wenn ich den obigen Befehl erneut ausführe, wird die vorhandene Datei einfach überschrieben. Mit anderen Worten, der Kopiervorgang wird nicht dort fortgesetzt, wo ich ihn unterbrochen habe.

Um den Kopiervorgang zum Kopieren der teilweise übertragenen ISO-Datei fortzusetzen, verwenden Sie rsync Befehl wie unten gezeigt.

$ rsync -P -rsh=ssh ubuntu.iso [email protected]:/home/sk/

Beispielausgabe:

[email protected]'s password: 
sending incremental file list
ubuntu.iso
834.00M 100% 14.81MB/s 0:00:56 (xfr#1, to-chk=0/1)

Sehen? Jetzt wird der Kopiervorgang dort fortgesetzt, wo wir ihn zuvor unterbrochen haben.

Sie können auch "--partial verwenden " statt Parameter "-P " wie unten.

$ rsync --partial -rsh=ssh ubuntu.iso [email protected]:/home/sk/

Hier werden die Parameter "--partial " oder "-P " weist den rsync-Befehl an, die teilweise heruntergeladene Datei beizubehalten und den Vorgang fortzusetzen.

Überprüfen Sie mit dem Befehl:

, ob die Datei wirklich auf das Remote-System kopiert wurde oder nicht
$ ssh [email protected] ls -lh
[email protected]'s password: 
total 835M
-rw-rw-r-- 1 sk sk 834M Jul 26 2019 ubuntu.iso

Wie Sie in der obigen Ausgabe sehen, wird die Datei Ubuntu.iso auf das Remote-System kopiert und hat eine Größe von 835 MB.

Alternativ können wir auch die folgenden Befehle verwenden, um teilweise übertragene Dateien über SSH fortzusetzen.

$ rsync -avP ubuntu.iso [email protected]:/home/sk/

Oder,

$ rsync -av --partial ubuntu.iso [email protected]:/home/sk/

Das ist es. Sie wissen jetzt, wie Sie abgebrochene, unterbrochene und teilweise heruntergeladene Dateien mit dem Befehl rsync fortsetzen. Wie Sie sehen können, ist es nicht so schwierig. Wenn rsync auf beiden Systemen installiert ist, können wir den Dateikopiervorgang wie oben beschrieben einfach über SSH fortsetzen.

Empfohlene Lektüre:

  • Linux Rsync-Befehlsbeispiele für Anfänger
  • So setzen Sie eine teilweise heruntergeladene Datei mit Wget fort
  • Befehle auf Remote-Linux-Systemen über SSH ausführen

Linux
  1. Ansible Guide:Verwalten Sie Dateien mit Ansible

  2. Verwenden von rsync zum Synchronisieren von Dateien

  3. Wie man Verzeichnisse rekursiv mit rsync kopiert und dabei bestimmte Dateien ausschließt

  4. rsync kopiert nur bestimmte Dateitypen mit der Option include

  5. Verwenden Sie ein Gerät über SSH?

So übertragen Sie Dateien mit Rsync über SSH

So übertragen Sie Dateien mit Rsync über SSH

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

So verwenden Sie den Befehl rsync, um Daten lokal und über SSH zu kopieren

So kopieren Sie Dateien aus der Ferne über SSH, ohne ein Passwort einzugeben

Rsync über SSH erhält kein tty vorhanden