Rsync 正在重新发送所有文件,因为文件具有不同的时间戳(相差 1 秒?)

Rsync 正在重新发送所有文件,因为文件具有不同的时间戳(相差 1 秒?)

我正在使用 rsync 将文件从 Mac 笔记本电脑备份到 Windows 笔记本电脑上的 USB 驱动器 (exFAT)。该 USB 驱动器在我的家庭网络中共享,并安装在我的 Mac 上。

我注意到一个奇怪的问题,当 rsync 重新发送所有文件时,尽管我没有对它们进行任何修改。

当我打开时,--itemize-changes我可以看到t每个文件的输出中都有该信息,表明文件时间戳是重新发送的原因。

>f..t.... netstat.txt

ls -lT(macOS)表示秒格式的时间戳,显示文件与源文件之间有一秒的差异,且源文件较新。

$ ls -lT source/file.txt 
-rwxr-----  1 user  group  1176 Sep 19 22:32:59 2014 file.txt
$ ls -lT destination/file.txt 
-rwx------  1 user  group  1176 Sep 19 22:32:58 2014 file.txt

向 rsync添加-c选项会忽略时间戳差异,并跳过不必要的传输。但是,我想知道为什么我的源文件和目标文件的时间戳相差 1 秒(据我检查)。

答案1

我知道文件系统处理时间的方式不同,所以这可能是造成差异的原因。您可以使用 调整 mod-time 比较的阈值--modify-window

# Ignore up to a 5 second difference. Tighten up as desired.
rsync --modify-window=5 do whatever...

更多详情请参阅Rsync 的手册页

--修改窗口

比较两个时间戳时,如果它们的差值不超过修改窗口值,rsync 会将这两个时间戳视为相等。该值通常为 0(表示精确匹配),但在某些情况下,将其设置为较大的值会很有用。特别是,在传输到 MS Windows FAT 文件系统或从 MS Windows FAT 文件系统传输时(以 2 秒为精度表示时间),--修改窗口=1很有用(允许时间相差最多1秒)。

相关内容