我正在使用 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秒)。