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

wget with timestamping repeatedly downloads same files

我正在连接到一个 FTP 服务器,它有几个目录,有几层深。这些目录包含相同文件的不同版本:具有不同时间戳的相同唯一文件名可能位于多个目录中,并且不知道每个文件的最新版本将在哪里结束。我不控制此服务器,并且会欣然承认这是一个愚蠢的情况。

我一直在使用带 --timestamping 的 wget 来尝试获取每个文件的最新版本,并使用 --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/

但是当我尝试从根镜像时,时间戳似乎超出了 window。

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

这似乎是对用户直觉的严重背叛,尽管它在技术上在 wget 文档中有所提及(在某些地方但在其他地方没有),但你去吧。时间戳与时间戳关系不大。