无法使用--no-clobber(-c -F -B unhelpful)恢复“wget --mirror”

时间:2012-10-26 18:15:26

标签: wget

我用“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恢复这个镜像?

2 个答案:

答案 0 :(得分:9)

显然这有效:

  

已解决:Wget错误“无法时间戳,也不能破坏旧文件   同时。“发表于2012年2月4日,同时试图恢复   站点镜像操作我正在运行Wget,我遇到了错误   “无法同时为时间戳而不是破坏旧文件”。事实证明   运行Wget同时设置-N和-nc标志   不可能发生,所以如果你想恢复递归下载   noclobber你必须禁用-N。 -m属性(用于镜像)   本质上设置-N属性,因此您必须从-m切换   to -r也是为了使用noclobber。

来自:http://www.marathon-studios.com/blog/solved-wget-error-cant-timestamp-and-not-clobber-old-files-at-the-same-time/

答案 1 :(得分:4)

根据{{​​3}},

-m等同于这一系列更长的设置:-r -N -l inf --no-remove-listing。只需使用这些设置而不是-m,而不使用-N(时间戳)。

现在我不确定是否有办法让wget从现有的html文件下载网址。可能有一个解决方案,我知道它可以将html文件作为输入并刮掉其中的所有链接。也许您可以使用bash命令将所有html文件连接成一个大文件。

我通过删除所有的html文件解决了这个问题,因为我并不介意只重新加载它们。但这可能对每个人的用例都不起作用。