有没有可用的现有工具,可以通过错误的连接下载大文件?
我必须定期下载一个相对较小的文件:300 MB,但是慢速(80-120 KB /秒)的TCP连接会在10-120秒后随机中断。(这是一个大公司的网络。我们多次联系了他们的管理员(在印度工作),但他们不能或不想做任何事情。)问题可能出在他们的反向代理/负载平衡器上。
到目前为止,我使用的是pcurl的修改版本:https : //github.com/brunoborges/pcurl
我更改了这一行:
curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
对此:
curl -s --retry 9999 --retry-delay 3 --speed-limit 2048 --speed-time 10 \
--retry-max-time 0 -C - --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
我必须添加,--speed-limit 2048 --speed-time 10
因为连接失败时大部分时间只会挂起几分钟。
但是最近,即使这个脚本也无法完成。
一个问题是它似乎忽略了该-C -
零件,因此它在重试后不会“继续”该段。似乎会截断相关的临时文件,并在每次失败后从头开始。(我认为--range
和-C
选项不能一起使用。)
另一个问题是此脚本同时下载所有段。它不能有300个段,一次只能下载10个。
我当时正在考虑为此目的用C#编写下载工具,但是如果有现有工具,或者curl命令可以在不同的参数下正常工作,那么我可以节省一些时间。
更新1:附加信息:不应删除并行下载功能,因为每个连接具有带宽限制(80-120 KB /秒,主要是80),因此10个连接可以使速度提高10倍。我必须在1小时内完成文件下载,因为该文件每小时生成一次。
rsync
(它将让您重新开始传输)?lftp
还允许自动重启传输。