带有时间戳的wget重复下载相同的文件

时间:2017-03-13 16:27:48

标签: command-line ftp wget mirroring

我正在连接到一个带有几个目录的FTP服务器,这几个级别很深。这些目录包含相同文件的各种版本:具有不同时间戳的相同唯一文件名可能位于多个目录中,并且不知道每个文件的最新版本将在何处结束。我无法控制这台服务器,并且很容易承认这是一个愚蠢的情况。

我一直在使用wget与--timestamping尝试获取每个文件的最新版本,并使用--no-directories选项将其全部压缩为一组最新文件。在我的脑海中,尽管在服务器上的所有目录上进行了递归,但这应该只是神奇地结束了在一个地方出现过一次的每个文件的最新版本。但是,我注意到很多时间文件正在重新加载,尽管手动验证本地时间戳与FTP服务器上的时间戳相同。

--no-directories是否会干扰wget的时间戳?

我发出的命令行是:

wget -q --show-progress --no-directories -r -N -l inf ftp://user:password@ftp.example.com/

如果我只针对这样一个目录,那么行为就像我期望的那样(对于该目录中的文件子集):

wget -q --show-progress --no-directories -r -N -l 1 ftp://user:password@ftp.example.com/subdir/

但是当我尝试从根部镜像时,时间戳似乎就会消失。

1 个答案:

答案 0 :(得分:1)

答案是wget的时间戳不仅关心时间。它实际上首先检查文件的大小,在这种情况下,它将任何差异视为值得重新下载。所以在我的情况下,使用同一文件的不同版本的多个目录,如果你有更新的文件,它将下载旧文件。然后当你有旧文件时,它会下载更新的文件。这意味着执行递归下载将导致同一文件被多次有效随机版本覆盖,并且您不太可能拥有任何特定文件的最新版本。

这似乎是对用户直觉的可怕背叛,即使它在wget文档(在某些地方而不是其他地方)中被技术性地提及,但是你去了。时间戳与时间戳没什么关系。