Wget-尝试一系列备份链接

Wget-尝试一系列备份链接

如果某个网站瘫痪(或下载过程中超时) ,我该如何wget(可能借助 bash 脚本)尝试一系列镜像?例如,首先尝试下载https://www.example.com/file.gz,如果失败,再尝试https://mirror1.example.com/file.gz,然后https://another.example.com/file.gz

答案1

尝试这个:

#!/bin/sh
for site in www.example.com mirror1.example.com another.mirror.com
do
    wget --timeout=60 --continue $site/file.gz  &&  break
done

--continue开关可让您从上一个站点停止的地方继续下载。

--dns-timeout请注意,--connect-timeout如果--read-timeout需要,您可以单独设置。

答案2

Ken Jackson 的回答非常准确,说明了如何执行此操作。但是,我在此假设您已将所有链接放在一个单独的文件中。在这种情况下,您实际上不需要任何 bash 脚本来完成此工作。您只需运行:

$ wget --timeout=60 --tries=1 --continue --input-file <inputfile>

为了获得美观的输出,我还使用了-q --show-progress强制 Wget 仅显示进度条而不显示其他内容的功能。

上述命令的作用是尝试下载您提供的文件中的每个链接。但是,在下载整个文件后,它将简单地查询每个服务器,意识到文件已经存在,然后继续。这浪费了非常微小额外的带宽,但输入起来更容易,并且不需要多次调用二进制文件。

相关内容