如果源和目标的时间戳相同,rsync 中的更新标志是否会传输文件?文档不清楚

如果源和目标的时间戳相同,rsync 中的更新标志是否会传输文件?文档不清楚

我想rsync在 Ubuntu 14.04 上仅传输已更改和新的文件。我不想每次都传输所有内容。我并不担心检查文件内容是否真的已更改。存在类似的帖子,但我不确定,因为文档与这些帖子中所说的内容不一致。

文档中rsync说:

-u, --update

这会强制 rsync 跳过目标文件已存在且日期晚于源文件的任何文件。

http://ss64.com/bash/rsync_options.html

编辑:找到了另一个(可能更官方的)文档页面。它说:

-u, --update跳过接收器上较新的文件

https://download.samba.org/pub/rsync/rsync.html

我觉得这些措辞很差。首先,第一个说的是“日期”。我认为它实际上是指“时间戳”。其次,更重要的是,它似乎暗示源和目标中具有相同时间戳的文件将被重新传输。文档清楚地说,只有当目标文件的时间戳 ( T_d) 比源文件时间戳 ( ) 更新(即更晚T_s)时,它才会跳过文件,这意味着当目标文件早于或等于源文件时,它将进行传输:跳过传输T_d > T_s意味着它在 时进行传输T_d <= T_s

这对我来说是一个重要的问题,因为如果您想以尽可能少的工作(网络/ io / cpu /时间)将所有新的和更改的文件从源文件夹传输到目标文件夹,更新标志可能每次都会重新传输所有内容。

或者也许我遗漏了一些东西,或者误解了一些东西?

(由于主题偏离,该帖子被 stackoverflow.com 拒绝。将其和答案添加到此处,以便将来可能对人们有所帮助。)

答案1

man在扩展的标志中发现以下内容:

-u, --update

这会强制 rsync 跳过目标上存在的任何文件,且其修改时间比源文件更新。(如果现有目标文件的修改时间等于源文件的修改时间,则如果大小不同则会更新。)

https://download.samba.org/pub/rsync/rsync.html

因此,equal 情况会检查文件的大小,只有文件大小不同时才会传输。我对此很满意。

相关内容