我有一个从ftp服务器下载一些文件的bash脚本。问题是有时curl会随机返回错误6(无法解析主机)!我可以通过网络浏览器打开ftp,没有任何问题。我还注意到,第一次下载时出现的错误最多。任何想法?
此外,我想知道如何在发生这些错误时使curl重试下载
我使用的代码:
curl -m 60 --retry 10 --retry-delay 10 --ftp-method multicwd -C - ftp://some_address/some_file --output ./some_file
注意:我还尝试了没有--ftp-method multicwd的代码
操作系统:CentOS 6.5 64位
答案 0 :(得分:1)
while [ "$ret" != "0" ]; do curl [your options]; ret=$?; sleep 5; done
答案 1 :(得分:1)
假设这些是服务器和/或DNS的过渡问题,循环可能会有所帮助。对于很少使用的(?)until
循环来说,这是一个特别好的情况:
until curl [your options]; do sleep 5; done
此外,如果使用curl不是强制性的,那么wget
可能更适合“不可靠”的网络连接。来自 man :
GNU Wget是一个免费的实用程序,用于非交互式下载文件 网络。它支持HTTP,HTTPS和FTP协议,以及 通过HTTP代理检索。
[...]
Wget设计用于缓慢或不稳定的网络连接的稳健性;如果由于下载失败 一个网络问题,它将继续重试,直到检索到整个文件。如果服务器支持 重新启动,它将指示服务器从中断处继续下载。