
ファイルをダウンロードしたいですcurl
。問題は、接続が非常に遅く、不明な手段によって約180 KB後にデータの受信が中断されることです。
より良い修正方法がない場合は、接続を解除した後(ファイルが完全にダウンロードされていない場合)、実行されるシェルスクリプトを作成したいと思います。
そのようなスクリプトはどのように見えるべきですか?シェルスクリプトでこれを達成できますか?
答え1
curl
次のコマンドを使用して再試行できます。--retry
オプション:
curl --retry 10 ...
指定されたURLをダウンロードするために最大10回再試行します。
--retry-...
さまざまな関連オプションに関する文書を確認することをお勧めします。エラーが予想される場合、デフォルトのバックオフアルゴリズムは理想的ではない可能性があるため、この方法は--retry-delay
便利です。言ったように桂里、タイムアウトオプションも便利です(--...-timeout
および--max-time
)。
curl
一時的であると考えられないエラーが発生して失敗した場合は、ループを使用できます。
result=56
while [[ ${result} == 56 ]]; do
curl -C - ...
result=$?
done
ループ数を制限するためにカウンタを追加することもできます。