Ich benutze den Befehl scp shell, um einen riesigen Ordner mit Dateien zu kopieren.
Aber irgendwann musste ich den laufenden Befehl beenden (mit Strg + C oder töten).
Nach meinem Verständnis hat scp Dateien nacheinander kopiert, daher sollte es nur eine teilweise kopierte Datei geben.
Wie kann derselbe Befehl scp fortgesetzt werden, um erfolgreich kopierte Dateien nicht zu überschreiben und teilweise kopierte Dateien ordnungsgemäß zu behandeln?
PS Ich weiß, dass ich solche Sachen in rsync machen kann, aber scp ist aus irgendeinem Grund schneller für mich und ich benutze es stattdessen.
dd
mit einer richtigenskip
Variablen versuchen und zussh
:)Antworten:
Sie sollten
rsync
über verwendenssh
Die Schlüsseloption
-P
ist die gleiche wie--partial --progress
Andere Optionen, z. B.
-a
(für den Archivierungsmodus) und-z
(zum Aktivieren der Komprimierung), können ebenfalls verwendet werden.Das Handbuch: https://download.samba.org/pub/rsync/rsync.html
quelle
-r
. Quelle: lucasb.eyer.be/snips/rsync-skipping-directory.htmlrsync -P -rsh remoteuser@remotehost:/remote/path /local/path
Eine Alternative zu rsync:
Verwendung
sftp
mit der Option-r
(rekursiv kopiert ganze Verzeichnisse) und Option-a
vonsftp
‚sget
Befehl Teilübertragungen von vorhandenen Dateien fortzusetzen.Voraussetzung: Ihre
sftp
Implementierung hat bereits eineget
with--a
Option.Beispiel:
Kopieren Sie das Verzeichnis
/foo/bar
vom Remote-Server in Ihr lokales aktuelles Verzeichnis. Das Verzeichnisbar
wird in Ihrem lokalen aktuellen Verzeichnis erstellt.quelle
echo "put -a foo/bar" | sftp -r server:/foo
Seit OpenSSH 6.3 können Sie den
reget
Befehl in verwendensftp
.Es hat die gleiche Syntax wie das
get
, außer dass eine Übertragung vom Ende einer vorhandenen lokalen Datei gestartet wird.quelle
Eine andere Möglichkeit besteht darin, zu versuchen, den SCP zu retten, den Sie bereits gestartet haben, als er blockiert.
Strg + Z zum Hintergrund und stoppen Sie es, dann ssh zum empfangenden Server und melden Sie sich an, dann beenden Sie. Nun fg den scp-Prozess und beobachte, wie er von 'festgefahren' fortgesetzt wird!
quelle
Wenn rsync nach ein paar Sekunden ebenfalls blockiert, wenn es anfänglich einwandfrei läuft, habe ich die folgende Brute-Force-Lösung erhalten:
quelle
Sie können die
-rsh
und-P
Optionen von nutzenrsync
.-P
ist für den teilweisen Download und-rsh
zeigt an, dass die Übertragung über ssh procotol erfolgt.Der vollständige Befehl wäre:
rsync -P -rsh remoteuser@remotehost:/remote/path /local/path
quelle
Ich habe gestern das gleiche Problem bekommen, als ich einen riesigen SQL-Dump über scp übertragen habe, mit dem ich Glück hatte
wget --continue the_url
Dieser Blog-Beitrag erklärt es ganz gut http://www.cyberciti.biz/tips/wget-resume-broken-download.html
quelle