rsync --ignore-times 参数在 Ubuntu 16.04 上不起作用

rsync --ignore-times 参数在 Ubuntu 16.04 上不起作用

我想实现一个基于的全面备份脚本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

由于某种原因,--archivea模式似乎无法与--ignore-times--checksum参数一起使用。但是,简单的递归复制模式(--recursiver)可以。因此,就我而言,以下操作完美地完成了工作:

rsync -vcr src/ dst/

相关内容