为什么 wget 没有从服务器下载新添加的文件?

为什么 wget 没有从服务器下载新添加的文件?

我正在运行两个虚拟机 - 即 VM1 和 VM2。两者都运行 Ubuntu 16.04,并且 VM2 安装了 apache2 Web 服务器。现在在 VM2 服务器中,我复制了一个小型网站的代码。

问题:

从 VM1,我希望能够使用以下方式下载网站内容wget按照设定的时间间隔反复执行。现在它确实可以完美地下载所有网站内容,但是当我将新文件(一个.jpg文件,包含先前图像文件的网站文件夹)添加到文件夹(在 VM2 机器上的网站中)时,然后在 VM1 机器上运行 wget 命令,新文件不是得到下载。

我的 WGET 命令:

wget --recursive --convert-links --no-check-certificate --no-cache --no-cookies http://192.168.1.44/

我尝试过:

所以我认为这是一个缓存问题。但我的 wget 命令中已经有了--no-cache,所以我搜索了互联网并在服务器端执行了以下命令来清除 apache2 缓存。但仍然没有运气。

答案1

如果您添加了 JPEG 图像文件但没有更新任何 HTML 文件以包含对它的引用(或动态索引页的链接),那么 Wget 将无法找到 JPEG。

在机器之间同步两组文件夹通常使用 rsync、robocopy 等工具来完成,这些工具不会出现这个问题,也不会复制未更改的文件,因此效率更高。


更新:

要查找您没有管理权限的服务器上的内容更改,您有时可以使用请求HTTP HEAD并检查Last-Modified标头(如果存在)

C:\> curl --head https://www.gnu.org/graphics/heckert_gnu.transp.small.png
HTTP/1.1 200 OK
Date: Thu, 28 Nov 2019 23:15:33 GMT
Server: Apache/2.4.7
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Last-Modified: Sat, 19 Nov 2016 18:01:39 GMT
ETag: "1dfd-541ab36d9a6c0"
Accept-Ranges: bytes
Content-Length: 7677
Cache-Control: max-age=2592000
Expires: Sat, 28 Dec 2019 23:15:33 GMT
Content-Type: image/png
Content-Language: non-html

Wget 有一些使用 HTTP HEAD 请求的选项。

对于完全静态的、没有 Javascript 的网站,您可能可以使用 Wget 等简单的方法。我相信这样的网站很少见。

动态生成的页面总是会出问题。您必须从网站下载并解析 HTML 来确定需要检查的 URL。您可能还需要执行 Javascript。

您只能检查生成内容中的更改,而不能检查源文件中的更改。正如其他人所指出的,生成内容通常会发生不感兴趣的更改 - 例如时间戳、处理时间等。

相关内容