curl或wget - 在网络错误和会话结束时恢复下载

时间:2015-02-03 07:12:03

标签: wget

我想知道无论服务器端发生什么,都有可能转储HTTP流。 如果我使用curl --retry 999wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0,则在网络错误的情况下会恢复连接和下载,但如果服务器终止会话,则不会重试。连接正在结束,就是这样。我甚至需要在FIN上进行永久性重试。

wget或curl有一些特殊的参数来存档吗? 是否有一个非wget或curl的工具可以存档?由于输出是通过管道传输的,因此可以欣赏单个命令。

1 个答案:

答案 0 :(得分:0)

为避免本地故障,您可以将其放入while循环,bash脚本

while [ 1 ]; do
wget -t 0 --timeout=15 --waitretry=1 --read-timeout=20 --retry-connrefused --continue
if [ $? = 0 ]; then break; fi; # check return value, break if successful
sleep 1s;
done;

您可以尝试其他解决方案

FILENAME=$1
DOWNURL=$2
wget -O "`echo $FILENAME`" "`echo $DOWNURL`"
FILESIZE=$(stat -c%s "$FILENAME")
while [ $FILESIZE \< 1000 ]; do
    sleep 3
    wget -O "`echo $FILENAME`" "`echo $DOWNURL`"
    FILESIZE=$(stat -c%s "$FILENAME")
done

您可以使用限制1000.如果文件较小,则while循环将再次尝试。