directory - 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"
很抱歉我用愚蠢的方式来解释我的问题,并提前感谢您的回复。
解决方案
您已经在使用-R
拒绝具有特定模式的文件名的选项(您说-R "index.html*"
拒绝任何以 开头的文件名index.html
),因此您可以简单地将更多文件名添加到该拒绝列表中,即-R "index.html*,1.pdf,2.pdf"
如果您知道您已经拥有1.pdf
并2.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
。
推荐阅读
- visual-studio-code - VS Code 智能感知方式
- python-3.x - 键入提示 PyCharm 自身内部使用的类
- docker - 为什么我不能使用moviepy从Docker内部访问google-storage url?
- sql - 当第二个字段中的值在给定期间(第三个字段)具有特定值时,如何在查询计数中包含空字段值
- javascript - CKEDITOR disallowedContent 没有做任何事情
- mocha.js - Mocha Chai 检查 Json 响应是否包含特定属性
- r - 我无法将多个标题居中,同时也在目录中找到它们
- database - 我想使用 codeigniter 模型在控制器中显示数据
- javascript - 设置 SocketIO 和 Flask 我收到此错误:“UnboundLocalError: local variable 'ssl_socket' referenced before assignment”
- php - 教义/symfony 4 - 持久化子实体时避免重复输入