如何使用 wget 记录成功完成的下载

如何使用 wget 记录成功完成的下载

我正在使用 xargs 并行下载大量文件。我遇到的问题是某些下载在一段时间后失败,因此一旦我运行完列表,并非所有下载都已成功完成,我必须重新运行命令。

cat links.txt | xargs -n 2 -P 16 wget -c -q -O

有没有办法将成功下载的文件名输出到文件中?我能找到的唯一解决方案是解析 wget 日志文件。

答案1

使用 GNU Parallel 代替xargs

cat links.txt | parallel --joblog my.log -n 2 -P 16 wget -c -q -O

现在看看Exitval中的列my.log

如果您要使用退出值重试,则 GNU Parallel 有重试作业的选项:--retries、 和--retry-failed

答案2

解析 wget 的输出或其日志是有效的。例如,

$ wget -O fixedgear.html https://www.sheldonbrown.com/fixedgear.html 2>&1 | \
    awk '/saved/ { print $6 }' | \
    sed -e 's/^.//' -e 's/.$//'
README.md

管道中的第一步尝试下载文件,第二步查找 wget 来声明文件已成功保存,如果是则输出它,最后一步只是删除文件名中的引号。

--tries调整 wget 中和的值--waitretry也可能有助于您的初始并行下载首次成功。

相关内容