我想基于 实现一个全面的备份脚本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 的错误,还是我做错了什么?我应该添加什么参数,以便在内容不同时(即使目标文件较新)始终将文件从源复制到目标?
编辑
我什至尝试添加--checksum
仅基于校验和进行复制的参数,并完全忽略时间戳(如手册页所述)。但即便如此也不起作用。
答案1
由于某种原因,--archive
ora
模式似乎不适用于--ignore-times
or--checksum
参数。然而,简单的递归复制模式(--recursive
或r
)。因此,就我而言,以下内容完美地完成了工作:
rsync -vcr src/ dst/