一个月前,我用“wget --镜像“创建我们公共网站的镜像,以便在即将到来的预定维护时段内临时使用。我们的主要网站运行 HTML、PHP 和 MySQL,但镜像只需要是 HTML,不需要动态内容、PHP 或数据库。
以下命令将创建我们网站的简单在线镜像:
wget --mirror http://www.example.org/
请注意Wget 手册说--mirror
“目前等同于-r -N -l inf --no-remove-listing
”(人类可读的等同于`--recursive --timestamping --level=inf --no-remove-listing。
现在一个月过去了,网站内容已经发生了很大变化。我想让 wget 检查所有页面,并下载任何已更改的页面。但是,这不起作用。
我的问题:
除了删除目录并重新运行镜像之外,我还需要做什么来刷新网站镜像?
顶层文件位于http://www.example.org/index.html没有改变,但还有许多其他文件有已改变。
我以为我需要做的就是重新运行wget --mirror
,因为--mirror
暗示了标志--recursive
“指定递归下载”和--timestamping
“除非比本地文件更新,否则不要重新检索文件”。我认为这会检查所有页面,并且只检索比我的本地副本更新的文件。我错了吗?
但是,wget 不会在第二次尝试时递归该站点。'wget --mirror' 将检查http://www.example.org/index.html,注意到这个页面没有变化,然后停止。
--2010-06-29 10:14:07-- http://www.example.org/
Resolving www.example.org (www.example.org)... 10.10.6.100
Connecting to www.example.org (www.example.org)|10.10.6.100|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Server file no newer than local file "www.example.org/index.html" -- not retrieving.
Loading robots.txt; please ignore errors.
--2010-06-29 10:14:08-- http://www.example.org/robots.txt
Connecting to www.example.org (www.example.org)|10.10.6.100|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 136 [text/plain]
Saving to: “www.example.org/robots.txt”
0K 100% 6.48M=0s
2010-06-29 10:14:08 (6.48 MB/s) - "www.example.org/robots.txt" saved [136/136]
--2010-06-29 10:14:08-- http://www.example.org/news/gallery/image-01.gif
Reusing existing connection to www.example.org:80.
HTTP request sent, awaiting response... 200 OK
Length: 40741 (40K) [image/gif]
Server file no newer than local file "www.example.org/news/gallery/image-01.gif" -- not retrieving.
FINISHED --2010-06-29 10:14:08--
Downloaded: 1 files, 136 in 0s (6.48 MB/s)
答案1
以下解决方法目前似乎有效。它强制删除 /index.html ,从而迫使 wget 再次检查所有子链接。但是,wget 不应该自动检查所有子链接吗?
rm www.example.org/index.html && wget --mirror http://www.example.org/
答案2
wget –mirror –w 3 –p –P c:\wget_files\example2 ftp://username:[email protected]
这是我在基于 Windows 的机器上执行的操作 http://www.devarticles.com/c/a/Web-Services/Website-Mirroring-With-wget/1/
您可以更改目录结构的路径,尝试通过 FTP 下载所有内容,看看是否有帮助。
我也在 Windows 上使用另一个实用程序“AllwaySync”,效果非常好。
答案3
我使用 --mirror 开关来执行您所要求的操作,这确实会导致 wget 仅以递归方式下载较新的文件。具体来说,我的命令行(已清理)是:
/usr/bin/wget -v --mirror ftp://user:password@site/ -o /var/log/webmirror -P /var/WebSites
答案4
您可以尝试使用:
wget -r -l inf -N http://www.example.org/