Bash

如果斷開連接,我可以重新啟動 curl 或 wget 嗎?

  • December 1, 2016

我想通過以下方式下載文件curl- 問題是我的連接速度很慢,並且以未知的方式在大約 180 KB 後停止接收數據。

除非有更好的方法來修復它,否則如果文件未完全下載,我想編寫一個 shell 腳本,使其在斷開連接後執行。

這樣的腳本會/應該是什麼樣子?有沒有可能用shell腳本來實現?

您可以使用以下選項curl告訴重試:--retry

curl --retry 10 ...

將重試十次以下載給定的 URL。

值得檢查--retry-...文件中的各種相關選項;鑑於您預計會出現錯誤,預設的退避算法可能並不理想,因此--retry-delay會派上用場。正如Sato Katsura所提到的,超時選項也很有用(--...-timeout--max-time)。

如果失敗,因為curl遇到不認為是瞬態的錯誤,您可以使用循環:

result=56
while [[ ${result} == 56 ]]; do
   curl -C - ...
   result=$?
done

您可能希望在其中添加一個計數器以限制循環數。

引用自:https://unix.stackexchange.com/questions/327372