首页 > 解决方案 > Wget 从它停止的地方恢复下载文件

问题描述

我是 Wget 的新手,我想知道是否有办法从我停止下载的地方继续下载文件?例如:我正在从具有以下文件的网站下载一堆文件:1.pdf 2.pdf 3.pdf 4.pdf

出于某种原因,当 wget 下载了 1,2 个文件时,我停止了下载,并且我将这些下载的文件移到了另一个我现在无法访问的存储中。那么我可以运行一个命令来排除我已经下载的前 2 个文件,然后从第 3 个文件重新开始,依此类推吗?

我已经在使用这个命令了:

wget -m -np -c -U "MyDir" -R "index.html*" "TheURL"

很抱歉我用愚蠢的方式来解释我的问题,并提前感谢您的回复。

标签: directorydownloadwgetresumemirror

解决方案


您已经在使用-R拒绝具有特定模式的文件名的选项(您说-R "index.html*"拒绝任何以 开头的文件名index.html),因此您可以简单地将更多文件名添加到该拒绝列表中,即-R "index.html*,1.pdf,2.pdf"如果您知道您已经拥有1.pdf2.pdf保存到另一台计算机和您不关心其他目录中具有相同名称的文件。(我不确定我是否理解您拒绝的原因index.html*,因为这可能会导致某些文件列表未被扫描。)

对于更复杂的情况(或者如果您只是不想编写很长的参数),在运行 wget 之前-R使用创建空文件并在之后删除空文件可能更容易。touch这是有效的,因为您正在使用 wget -m,它(至少在 2001 年以后的 wget 版本中)打开-N(时间戳检查)——只要服务器支持时间戳(大多数都支持), wget 就会告诉服务器它想要文件仅当它比现有文件的时间戳更新时,即“比现在更新”,如果您刚才放了一个空文件。空文件确实必须正确命名并位于正确的目录中。

您可能想做的另一个调整是替换-m-r -nc -l inf(因为通常-m意味着-r -N -l inf并且我建议替换-N-nc)。而-N检查时间戳,-nc避免下载任何已经存在的文件,无论时间戳如何(因此即使服务器不支持时间戳也可以工作),但更重要的是,-nc会导致您已经下载的文件被扫描链接,而-N不会。-w如果您需要缓慢地镜像大型服务器,这与( ) 一起使用很有用--wait,因为如果您必须在完成之前重新启动计算机或其他东西,您可以从停止的地方恢复镜像,然后wget仍然会考虑上次获取的文件中的任何链接。

另一方面-N,如果您之前的下载已完成并且您只需要检查更新,则更好 - 尽管镜像-N仍然依赖于从具有更新时间戳的页面链接的任何更新文件(并且如果页面是通过链接,而不是直接来自您提供的 URL,那么的至少一个链接页面必须有一个更新的时间戳,以便它的更新被注意到,等等)——目前似乎没有办法告诉 wget解析跳过的 HTML 页面,-N因为它可以解析跳过的 HTML 页面-nc


推荐阅读