.を使用していくつかのファイルをダウンロードしようとしていますが、wget
1時間後にダウンロード速度が低下します。ダウンロードをキャンセルして再開すると、ダウンロード速度が1時間ずつ速くなります。
wget
速度がそのしきい値を下回ると、再起動または再開するようにダウンロード速度の下限を設定できますかwget
?
答え1
代わりに、基本的な問題を解決する必要があります。そのため、接続速度が遅くなる理由を分析し、原因を取り除いてください。
省電力機能の場合は、ほぼ確実にその機能をオフにするか、ネットワークに影響を与えないように設定できます。
答え2
しばらくすると、ダウンロードしているWebサイトまたはISPが帯域幅を制限する可能性があります。転送速度を制限するのに役立ちます--limit-rate
。
wgetに終了を指示するいくつかのオプションがあります。--tries
()を使用して-t
再試行回数を制御します。再試行速度を少し調整すると、より良い--wait
結果が得られます--wait-random
。サーバーがこれをサポートしている場合、Wgetは停止した場所から自動的に再開されます。転送速度が非常に低い数値に制限され、--read-timeout
非常に小さいパラメータ(たとえば、0.1
10分の1秒)を使用して速度が0.1秒ごとに1パケット未満に低下すると、接続が再開されます。ネットワーク障害が原因でこの間にパケットが受信されなかった場合、接続も再開されます。
制限されるまでの残り時間を事前に知っている場合は、wgetプロセスを終了して-c
ダウンロードを再開するオプションを使用して再起動するシェルフラグメントを作成してください。警告、テストされていません。シェルでバックグラウンドサブプロセスを使用することは少し以上であるため、深刻な操作にはPerlまたはPythonを使用することをお勧めします。
while wget -q -c http://example.com/wibble & wget_pid=$!
{ sleep 300; kill $wget_pid; } & kill_pid=$!
wait $wget_pid
kill $kill_pid
wait
do sleep 10; done
答え3
read-timeout
私のバージョンのwgetは、以下のようにダウンロードタイムアウトなしで再試行をサポートします。
$ wget -c --read-timeout=5 http://thefile.com/getme.txt
36% [+++++++++++++++++++++++++++++++++++++++++++======> ] 280,061,984 --.-K/s in 6m 16s
2012-05-09 16:04:23 (105 KB/s) - Read error at byte 280061984/761323675 (Operation timed out). Retrying.
より低い制限を設定する方法はないようですが、進行中のダウンロードにはたくさん役立ちます。他の人がこの質問を検索したいと思います。