无论如何如何使wget使用现有的本地文件

How to make wget use existing local files no matter what

我正在使用 wget 镜像选项来镜像一个完整的网站

wget -mk https://test.com

当我停止 wget 并随后使用同一命令恢复它时,它会继续为所有已下载的文件发出 HEAD 命令。这是为了检查文件自上次下载以来是否发生了变化,如果服务器上的文件更新,则再次检索它们。我想关闭此功能,意思是: 如果本地文件已经存在,wget 应该始终使用本地文件,甚至不发出 HEAD 命令来验证修改时间或文件大小。 这可能吗?

不,你不能。在撰写本文时,Wget 中没有允许您跳过测试本地文件的开关。这是有充分理由的。如果 Wget 没有再次验证每个文件,将出现以下两个问题之一或同时出现:

  1. 下载的最后一个文件现在不完整且已损坏。但是您没有任何迹象表明这个文件或它是哪个文件。这也意味着 Wget 将无法解析和跟踪来自该文件的任何链接。所以您最终可能会得到一个部分镜像,但没有任何信息可以告诉您。

  2. 在您上次尝试和当前尝试之间,远程端的一些文件发生了变化。如果不再次验证修改时间,您得到的是一个不一致的镜像。由于镜子一半是旧的,一半是新的,这是新的,因此可能会产生各种有趣的问题。

无论如何,HEAD 请求非常快,因为它需要的带宽非常少。所以我不明白为什么这会成为任何管道中的瓶颈。