Scp
scp -3 不再有效
我正在嘗試在兩個遠端主機(都在不同的子網上)之間傳輸一個大文件。我發現這個命令第一次起作用:
scp -3 root@foo:/path/to/largefile user@bar:/path/to/where/it/should/go/
該命令第一次工作,現在當我嘗試再次執行它來傳輸其他文件時,它永遠不會傳輸。相反,我收到輸入密碼的提示,然後它以退出程式碼 1 退出。執行
-v
給了我: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 eow@openssh.com 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
有人能告訴我為什麼突然這個命令不再起作用了嗎?我檢查
/var/log/syslog
並找不到任何東西..
您可以使用
-vvv
從日誌中獲取更多資訊。但問題-3
是您無法合理地從遠端端獲取有關錯誤的任何調試資訊(帶有更新檔的上游錯誤)。錯誤消息正在從刪除一側發送到另一側,並且沒有地方顯示它們(不會引入一些複雜性)。要了解可能出現的問題,最簡單的方法可能是確保源文件可以正確讀取(並且名稱中沒有拼寫錯誤)並且目標文件夾是可寫的,有足夠的磁碟空間等等:
ssh root@foo stat /path/to/largefile ssh user@bar stat /path/to/where/it/should/go/
其他可能性是從原始碼建構 OpenSSH 並應用上面連結的更新檔。它應該在客戶端列印錯誤(僅在您的機器上就足夠了)。
或者直接使用
rsync
,更適合性能、吞吐量和可用性。