web-dev-qa-db-ja.com

大きなファイルのコピー中にscpが停止しました

実験のニーズに応じて、 [〜#〜] mtu [〜#〜]8000。これを実行した後、scpを使用して大きなファイルをコピーすると、0.00%。私は試した scp -l または scp -Cおよびtcp_sack on/off、しかしそれでも動作しませんでした。また、実験結果の比較のためにMTUサイズを変更することはできません。他に役立つ方法はありますか?

34
flyhighzy

状況に応じていくつかの問題と制限が存在する可能性があるため、包括的なソリューションの試み。

rsync

私の優先オプション: rsyncを使用してもこの問題は発生せず、私の意見ではもう少し多目的です。どのファイルが既にそこにあるかを追跡しているので、接続が切れた場合は、中断したところから再開できます- --partialフラグも試してください - とりわけthings

の代わりに

scp local/path/some_file [email protected]:"/some/path/"

あなたはただできる

rsync -avz --progress local/path/some_file [email protected]:"/some/path/"

scpがあなたに与えたのと同じ問題を私に与えるいくつかの機会でこれをテストしました-そして今、私はデフォルトでrsyncを使うだけです。

制限速度

この状況ではMTUが修正されるため(おそらくここでは問題ではない)、OPの解決策ではありませんが、原因が2つのドライブ間の低速/信頼性の低い接続である場合、速度制限を設定するとTCP接続の停止-当然のことながら、転送速度が遅くなります。これは、次のように最大データレートをキロビットで指定しない限り、scpが取得できるすべての帯域幅を取得するためです。

scp -l 8192 local/path/some_file [email protected]:"/some/path/"

これは 常に機能するとは限りません です。

圧縮オプション

scpの-Cオプションは speed up 転送を行うことができ、転送が停止する可能性を減らします。

TCP SACKの無効化

OPで述べたように、 ここ

Sudo sysctl -w net.ipv4.tcp_sack=0

または同様

LANカードMTU

繰り返しますが、 MTU修正 であり、必ずしも転送の具体的なものではありません。

ifconfig eth0 mtu 1492

または 新しい(Linux)システム

ip link set dev eth0 mtu 1492

その他

他のすべてが失敗した場合、 this は、ここに含まれていない別の少数の潜在的なソリューションをリストします。

よりエキゾチックな hpnバグ にも問題がある可能性があります。

69
BrechtDeMan

Cisco ASAファイアウォールの背後にいる可能性はありますか?その場合、「シーケンス番号のランダム化」をオフにすると、多くの場合に役立ちます-オンの場合はTCP Offload(ethtool -K $ INTERFACE tso off gso off gro off)も無効にします)サーバーにBroadcom NICを搭載したCisco ASA。

0
dotwaffle