Ich versuche, eine große Datei zwischen zwei Remote-Hosts (beide in unterschiedlichen Subnetzen) zu übertragen. Dieser Befehl hat beim ersten Mal funktioniert:
scp -3 root@foo:/path/to/largefile user@bar:/path/to/where/it/should/go/
Der Befehl hat beim ersten Mal funktioniert. Wenn ich ihn jetzt erneut ausführe, um die anderen Dateien zu übertragen, wird er nie übertragen. Stattdessen werde ich zur Eingabe eines Passworts aufgefordert und dann wird er mit dem Exit-Code 1 beendet. Beim Ausführen -v
erhalte ich:
debug1: Sending command: scp -v -f /run/sr-mount/3e3a905f-28ad-01b4-d50a-1ffe151ed28a/debian-8.8.0-amd64-CD-1.iso
Sending file modes: C0644 660602880 debian-8.8.0-amd64-CD-1.iso
Sink: C0644 660602880 debian-8.8.0-amd64-CD-1.iso
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 2480, received 2372 bytes, in 0.1 seconds
Bytes per second: sent 32882.6, received 31450.6
debug1: Exit status 1
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 2904, received 2964 bytes, in 3.3 seconds
Bytes per second: sent 893.5, received 912.0
debug1: Exit status 1
Kann mir jemand sagen, warum dieser Befehl plötzlich nicht mehr funktioniert? Ich habe nachgeschaut /var/log/syslog
und konnte nichts finden.
Antwort1
Sie können -vvv
weitere Informationen aus dem Protokoll abrufen. Das Problem dabei -3
ist jedoch, dass Sie von den Remote-Seiten keine sinnvollen Debug-Informationen über die Fehler erhalten können (Upstream-Fehler mit Patch). Die Fehlermeldungen werden von einer Remote-Seite zur anderen gesendet und es gibt keinen Ort, um sie anzuzeigen (ohne eine gewisse Komplexität einzuführen).
Um eine Vorstellung davon zu bekommen, was schief gehen könnte, ist es wahrscheinlich am einfachsten, sicherzustellen, dass die Quelldatei richtig lesbar ist (und der Name keine Tippfehler enthält), der Zielordner beschreibbar ist, genügend Speicherplatz vorhanden ist usw.:
ssh root@foo stat /path/to/largefile
ssh user@bar stat /path/to/where/it/should/go/
Eine andere Möglichkeit besteht darin, OpenSSH aus dem Quellcode zu erstellen und den oben verlinkten Patch anzuwenden. Dadurch sollten die Fehler im Client ausgegeben werden (es sollte ausreichen, dies nur auf Ihrem Computer zu tun).
Oder verwenden Sie einfach rsync
, das hinsichtlich Leistung, Durchsatz und Benutzerfreundlichkeit besser geeignet ist.