為什麼 wget 不從伺服器下載新新增的檔案?

為什麼 wget 不從伺服器下載新新增的檔案?

我正在運行兩個虛擬機器 - 例如 VM1 和 VM2。兩者都運行 Ubuntu 16.04,VM2 安裝了 apache2 Web 伺服器。現在在VM2伺服器中,我複製了一個小網站的程式碼。

問題:

從 VM1,我希望能夠使用下載網站內容wget以設定的時間間隔一次又一次。現在它確實最初完美地下載了所有網站內容,但是當我將一個新文件(一個.jpg文件,到包含先前圖像文件的網站資料夾中)添加到一個資料夾(在VM2 機器上的網站中),然後我在上運行wget 命令時VM1 機器,新檔案確實不是得到下載。

我的 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。

您只能檢查生成內容中的更改,而不能檢查原始檔案中的更改。正如其他人所指出的,產生的內容通常會發生不感興趣的變更 - 例如時間戳記、處理時間等。

相關內容