如果断开连接,我可以重新启动curl 或wget 吗?

如果断开连接,我可以重新启动curl 或wget 吗?

我想通过下载一个文件curl- 问题是我的连接速度非常慢,并且通过未知的方式,在大约 180 KB 后停止接收数据。

除非有更好的方法来修复它,否则我想编写一个 shell 脚本,使其在断开连接后运行(如果文件未完全下载)。

这样的脚本应该是什么样子?是否可以通过shell脚本来实现?

答案1

您可以curl使用以下命令重试--retry选项

curl --retry 10 ...

将重试最多十次来下载给定的 URL。

值得检查--retry-...文档中的各种相关选项;考虑到您预计会出现错误,默认的退避算法可能并不理想,因此--retry-delay会派上用场。正如所提到的佐藤桂,超时选项也很有用(--...-timeout--max-time)。

如果失败,因为curl遇到一个它认为不是暂时性的错误,您可以使用循环:

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

您可能想在其中添加一个计数器来限制循环次数。

相关内容