我用“wget --mirror [sitename]”启动了一个wget镜像,它就是 工作正常,但不小心打断了这个过程。
我现在想要恢复镜像,但需要注意以下几点:
如果wget已下载文件,我不想下载它 它再次。我甚至不想让wget检查时间戳:我知道 我的版本是“最近的”。
我做希望wget读取已下载的文件 按照这些文件中的链接。
我可以使用“-nc”作为上面的第一点,但我似乎无法强迫 wget读取已经下载的文件。
我尝试过的事情:
明显的“wget -c -m”不起作用,因为它需要 比较时间戳,这需要至少发出一个HEAD请求 到远程服务器。
“wget -nc -m”不起作用,因为-m表示-N,而-nc是 与-N不相容。
“wget -F -nc -r -l inf”是我能想到的最好的,但它 仍然失败。我希望“-F”会强迫你去读当地语, 已下载的文件为HTML,因此遵循链接,但这样 似乎没有发生。
我尝试了其他一些选项(例如“-c”和“-B [sitename]”),但是 什么都行不通
如何让wget恢复这个镜像?
答案 0 :(得分:9)
显然这有效:
已解决:Wget错误“无法时间戳,也不能破坏旧文件 同时。“发表于2012年2月4日,同时试图恢复 站点镜像操作我正在运行Wget,我遇到了错误 “无法同时为时间戳而不是破坏旧文件”。事实证明 运行Wget同时设置-N和-nc标志 不可能发生,所以如果你想恢复递归下载 noclobber你必须禁用-N。 -m属性(用于镜像) 本质上设置-N属性,因此您必须从-m切换 to -r也是为了使用noclobber。
答案 1 :(得分:4)
-m
等同于这一系列更长的设置:-r -N -l inf --no-remove-listing
。只需使用这些设置而不是-m
,而不使用-N
(时间戳)。
现在我不确定是否有办法让wget从现有的html文件下载网址。可能有一个解决方案,我知道它可以将html文件作为输入并刮掉其中的所有链接。也许您可以使用bash命令将所有html文件连接成一个大文件。
我通过删除所有的html文件解决了这个问题,因为我并不介意只重新加载它们。但这可能对每个人的用例都不起作用。