我想实现一个基于的全面备份脚本rsync
,所以我现在只是根据我的需求进行实验以确定正确的参数。基本上,我希望任何更改的文件都应从源复制到目标,而不管其修改时间如何(即,无论源文件是否比目标文件旧/新,如果内容不同,则应复制它)。但是,它不起作用:
../src/test.txt
../dst/test.txt
以上是文件夹结构。当我第一次运行以下命令时,它将test.txt
从 src 复制到 dst 文件夹。
rsync -avh --ignore-times src/ dst/
然后,我修改了 src/test.txt 的内容并再次运行上述命令,这次它也将更新的文件复制到 dst 文件夹。
但是,我随后修改了 dst 文件夹中的 test.txt,并运行了上述命令,但这次它不起作用,并没有将文件从 src/ 复制到 dst/ 文件夹。但考虑到这个答案,它应该可以工作,因为我已经添加了--ignore-times
参数。
这是 Ubuntu 的一个错误,还是我做错了什么?我应该添加什么参数,以便当内容不同时(即使目标文件较新)文件始终从源复制到目标?
答案1
--archive
等于 -rlp吨上帝啊-t方法
-t, --times
This tells rsync to transfer modification times along with the files and update them on the remote system
但是你可以将它与 --no-OPTION 结合起来,像这样
rsync -avh --no-t --ignore-times src/ dst/
它应该可以完美运行
编辑:实际上--ignore-times
是多余的,这就足够了
rsync -avh --no-t src/ dst/
答案2
由于某种原因,--archive
或a
模式似乎无法与--ignore-times
或--checksum
参数一起使用。但是,简单的递归复制模式(--recursive
或r
)可以。因此,就我而言,以下操作完美地完成了工作:
rsync -vcr src/ dst/