2 つのリモート ホスト (両方とも異なるサブネット上) 間で大きなファイルを転送しようとしています。 最初は次のコマンドが機能することがわかりました。
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 [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
突然このコマンドが機能しなくなった理由を誰か教えてもらえますか? 調べたのです/var/log/syslog
が、何も見つかりませんでした。
答え1
-vvv
ログからより多くの情報を取得するためにを使用することができます。しかし、 の問題-3
は、リモート側からのエラーに関するデバッグ情報を合理的に取得できないことです (アップストリームのバグとパッチ)。エラー メッセージはリモート側から他のリモート側へ送信されており、(複雑さを導入せずに) 表示する場所がありません。
何が問題になる可能性があるかを把握するには、ソース ファイルが正しく読み取り可能であること (名前にタイプミスがないこと)、ターゲット フォルダーが書き込み可能であること、十分なディスク領域があることなどを確認するのが最も簡単でしょう。
ssh root@foo stat /path/to/largefile
ssh user@bar stat /path/to/where/it/should/go/
他の可能性としては、OpenSSH をソースからビルドし、上記のリンクされたパッチを適用することです。クライアントにエラーが出力されるはずです (自分のマシンでのみ実行すれば十分なはずです)。
または、rsync
パフォーマンス、スループット、使いやすさの点でより適した を使用します。