Gibt es eine Möglichkeit, einen unterbrochenen SCP einer Datei fortzusetzen?

Gibt es eine Möglichkeit, einen unterbrochenen SCP einer Datei fortzusetzen?

Ich lade gelegentlich eine sehr große Datei über scp herunter und es besteht jedes Mal eine geringe Wahrscheinlichkeit, dass die Verbindung abbricht und die Übertragung mittendrin unterbrochen wird.

Gibt es eine Möglichkeit, es fortzusetzen?

Antwort1

Sie können den folgenden Ansatz versuchen: Anstattscpverwendenddum den heruntergeladenen Teil zu überspringen und den Rest an die Datei anzuhängen.

sofar=`ls -l ./destfile | awk '{print $5}'`
ssh user@host "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile

Mögliche Optimierung: Mit großen Blöcken arbeiten. Das lassen wir als Hausaufgabe.

Antwort2

Ohne scp.

Wenn es an beiden Enden vorhanden ist, können Sie es rsync -LvzP remoteserver:path/to/file localfilezum Übertragen einer einzelnen Datei verwenden.

Antwort3

Ja, es gibt Möglichkeiten, ab dem Unterbrechungspunkt fortzufahren, aber mit scp ist das nicht möglich. sftp reget filenametut, was Sie brauchen. Yarek und Grawity haben gültige Lösungen bereitgestellt, für die ich beide +1 gebe, aber für die Fortsetzung ab einem Unterbrechungspunkt bevorzuge ich rsync. Die bereitgestellten Beispielbefehle gehen beide davon aus, dass Sie eine Datei von einem Remote-Server auf Ihre lokale Arbeitsstation abrufen (herunterladen). Bitte beachten Sie, dass die letzten beiden Parameter in dieser Reihenfolge als Quelldatei und Zieldatei betrachtet werden sollten. Die Syntax des Dateinamens variiert je nachdem, ob die Quell- oder Zieldatei lokal oder remote ist. Wenn ich [Text-]Dateien senden (hochladen) würde, würde ich die bereitgestellten Beispiele wie folgt umschreiben:

#Vom Lokalen zum Remote-Arbeitsplatz
sofar=`ssh remote_system ls -l unterbrochene_Datei | awk '{print $5}'`;
dd if=Quelldatei bs=1 skip=$sofar | ssh remote_system "cat >> ./unterbrochene_Datei"

Und zur rsync-Lösung füge ich hinzu -e ssh: Sie sollten überlegen, ob Sie Ausführlichkeit, Komprimierung, Beibehaltung von Eigentumsrechten, Berechtigungen, Zeitstempel, rekursive Verzeichnisse usw. benötigen. Überprüfen Sie Manpages und Google bezüglich des Parameters -L. Möglicherweise möchten Sie, dass Symlinks als Links erhalten bleiben, anstatt auf sie zu verweisen.

rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file

Antwort4

Ja, wenn beide Enden SFTP unterstützen, scp remoteuser@remotehost:/absolute/filename .können Sie nach einem Fehler fortfahren, indem Sie sftp remoteuser@remotehostund dann reget /absolute/filenameden Download fortsetzen.

verwandte Informationen