我们说我们有以下文件:
~/Homepage $ ls -l harp_output/BingSiteAuth.xml harp_netlify/BingSiteAuth.xml
-rw-r--r-- 1 david david 81 14. Mai 07:58 harp_netlify/BingSiteAuth.xml
-rw-r--r-- 1 david david 81 14. Mai 08:10 harp_output/BingSiteAuth.xml
两个文件的内容相同:
~/Homepage $ cmp harp_output/BingSiteAuth.xml harp_netlify/BingSiteAuth.xml; echo $?
0
因此,我希望harp_netlify/BingSiteAuth.xml
不会因内容相同而被更改。但是,使用以下命令,目标端文件的时间戳会更新:
~/Homepage $ rsync -cav --delete harp_output/ harp_netlify/
结果如下:
~/Homepage $ ls -l harp_output/BingSiteAuth.xml harp_netlify/BingSiteAuth.xml
-rw-r--r-- 1 david david 81 14. Mai 08:10 harp_netlify/BingSiteAuth.xml
-rw-r--r-- 1 david david 81 14. Mai 08:10 harp_output/BingSiteAuth.xml
但是,我想要这个:
~/Homepage $ ls -l harp_output/BingSiteAuth.xml harp_netlify/BingSiteAuth.xml
-rw-r--r-- 1 david david 81 14. Mai 07:58 harp_netlify/BingSiteAuth.xml
-rw-r--r-- 1 david david 81 14. Mai 08:10 harp_output/BingSiteAuth.xml
但是,如果校验和不同,则rsync必须更新时间戳。
答案 0 :(得分:1)
您传递给rsync
的参数是-cav
;你遇到的问题是" a"如man page中所述,它会扩展为-rlptgoD
,并为您提供传递给rsync的最终-crlptgoDv
参数列表。
其中棘手的部分是p
,t
,g
和o
,它们保留了权限(p),修改时间(t)(其中)是导致当前示例中的同步更改的原因),组(g)和所有者(o)。如果我理解你的问题,你想要的是:
rsync -crlDv --delete harp_output/ harp_netlify/
在此我们保留了" c"和" v"从您当前的命令,并使用" r" (对于递归同步")," l"保留符号链接,以及" D"保留设备和特殊文件。如果您想要的是基于校验和递归同步,并且您不关心链接或特殊文件,那么" r"足够;即:
rsync -crv --delete harp_output/ harp_netlify/