防止rsync更改ctime

我有以下情况:

我有一个文件在一个目录中有一个进程正在改变一些文件,并更新所有文件的ctime。 我想将所有文件rsync同步到目标目录,但是保留那些只更新了ctime的文件的ctime。

我试过以下(〜/ source / test.txt是我的源文件,〜/ target / test.txt是我的目标文件)。

chmod a+w source/test.txt (updates ctime but not mtime) rsync -a -v -c --copy-dirlinks --delete --partial --inplace source/test.txt target 

我的期望是那些在源目录中只更新了ctime的文件不会被rsync检测到,显然是这样的。 但目标目录中的相应文件仍然会更新其ctime更新,这正在导致我的备份过程出现问题。

有什么办法让rsync不更新文件的ctime没有被修改?

你可以尝试如果--checksum选项做你想要的:

 -c, --checksum 

这改变了rsync检查文件是否已经被更改并且需要传输的方式。 如果没有这个选项,rsync使用“快速检查”(默认情况下)检查每个文件的大小和最后一次修改的时间是否匹配发送者和接收者。 此选项将更改此设置,以比较具有匹配大小的每个文件的128位校验和。 生成校验和意味着双方将花费大量磁盘I / O读取传输文件中的所有数据(并且这是在传输已更改文件的任何读取之前),所以这可能会降低速度显著。

当做一个短暂的testing,这个工作,但不是当使用快捷方式-a选项时,也许是因为它包括-t ,这保留了mod时间。