rsync 在不同的文件系统之间复制未修改的文件

Joó*_*dám 4 filesystems ext4 ext3 synchronization rsync

我尝试使用 rsync 在两台机器之间同步文件,但无论文件修改时间如何,它似乎都会复制所有文件。连续两次调用该命令产生相同的结果,所以它显然是坏的。

有问题的命令是:

rsync -r local/path user@host:/remote/path -v
Run Code Online (Sandbox Code Playgroud)

本地文件系统是 ext4,而远程文件系统是 ext3。我怀疑问题出在这里,因为当我尝试在同一个 ext3 系统和 NTFS 驱动器之间同步文件时,我遇到了类似的问题。将后者转换为 ext3 解决了这个问题。

这次我不能求助于转换。有谁知道问题的确切来源和任何可能的解决方案?

chu*_*utz 6

默认情况下,rsync 不会根据文件的修改时间和大小来复制文件。

如果您不在-t命令行中使用,rsync 将不会保留修改时间,大小 + 时间检查当然会失败。

不同文件系统的时间戳精度也很有可能导致问题 -ext4支持微秒,但ext3仅限于秒。

尝试--modify-window=1在命令行中添加一个,以告诉 rsync 以一秒的精度处理时间戳。

或者,您可以给它 a-c来强制对文件进行校验和,但这当然比 mtime + size 检查慢得多,即使它确实为您节省了带宽。