如何使rsync保留未更改文件的时间戳

8
我使用静态网站生成器,每次运行都会生成网站中的所有文件。生成文件后,我使用rsync将内容复制到指定位置。
为了更好地缓存,我希望rsync不修改目标文件中未更改的文件的时间戳。这可能吗?
编辑:为明确起见,所有源文件的时间戳始终比目标文件的时间戳更新。
2个回答

15

-c选项似乎能够满足我的需求。在我这种情况下,性能惩罚不是问题。


在你的情况下,使用“-t”会更好。 - Pungs
我不这么认为,因为源文件的时间戳总是比目标文件的时间戳更新,即使文件内容没有改变。 - Petri Lehtinen
2
-c选项有效。但需要注意的是:如果您不想更改修改时间,请确保不要使用-a选项,因为它会悄悄地调用-t选项,这意味着“保留修改时间”,即“用本地文件的修改时间覆盖远程文件的修改时间”。 - ishmael
@ishmael,或者你可以使用-a(--archive)和--no-times结合使用。 - knowname

0
你尝试过使用-t和-E标志吗?
编辑:嗯...或者,即使文件没有更改,每次重新生成网站时源文件的时间戳也会更改吗?

是的,源文件时间戳总是更改为“现在”。 - Petri Lehtinen
在这种情况下,尝试使用--size-only选项,以便跳过新文件(假设它们具有相同的大小)...虽然有点危险,但可能会产生意想不到的后果。与-c选项一起使用会更好一些,但速度较慢。 - MarcB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接