
私は 2 つの仮想マシン (VM1 と VM2) を実行しています。どちらも Ubuntu 16.04 を実行しており、VM2 には apache2 Web サーバーがインストールされています。現在、VM2 サーバーに、小さな Web サイトのコードをコピーしました。
問題:
VM1から、ウェブサイトのコンテンツをダウンロードできるようにしたい。wget
設定された間隔で何度も繰り返します。最初はすべてのウェブサイトのコンテンツが完璧にダウンロードされますが、新しいファイル(.jpg
以前の画像ファイルを含むウェブサイトのフォルダへのファイル)をフォルダ(VM2マシンのウェブサイト内)に追加し、VM1マシンでwgetコマンドを実行すると、新しいファイルはないダウンロードされます。
私のWGETコマンド:
wget --recursive --convert-links --no-check-certificate --no-cache --no-cookies http://192.168.1.44/
私が試したこと:
だから私はそれがキャッシング問題。しかし、--no-cache
wget コマンドですでにこの問題が起こっていたので、インターネットで検索し、サーバー側で次のコマンドを実行して apache2 キャッシュをクリアしました。しかし、まだ運がありません。
答え1
JPEG 画像ファイルを追加したが、そのファイルへの参照 (または動的インデックス ページへのリンク) を含むように HTML ファイルを更新しなかった場合、Wget は JPEG を見つけることができません。
マシン間で 2 セットのフォルダーを同期する場合は通常、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 のない完全に静的な Web サイトの場合は、Wget などを使用した簡単な方法を使用できる可能性があります。そのようなサイトはまれだと思います。
動的に生成されたページでは常に問題が発生します。確認する必要がある URL を決定するには、サイトから HTML をダウンロードして解析する必要があります。また、Javascript を実行する必要がある場合もあります。
変更を確認できるのは生成されたコンテンツのみであり、ソース ファイルの変更は確認できません。他の人が指摘しているように、生成されたコンテンツには、タイムスタンプや処理時間など、重要でない変更が含まれることがよくあります。