rsync不覆盖较新的文件

rsync不覆盖较新的文件

复制详细信息:

mkdir test && cd test
mkdir folder && cd folder

echo "#line1" > file
rsync -a -I . ..
echo "#line2" >> ../file
rsync -a -I . ..

输出:

的内容../file是意外的,因为它应该已被上述 rsync 命令覆盖。它应该只显示#line1

more ../file
#line1
#line2

more file  # <-- expected because we haven't edited this file
#line1

问题:

我希望文件始终被覆盖,上面我做错了什么吗?

系统信息:

尝试过的 Rsync 版本:

rsync version 3.0.4 protocol version 30

rsync version 2.6.9 protocol version 29

操作系统尝试过:
SUSE Enterprise
Linux 3.0.101-71.1.10543.0.PTF.974263.72.1.csc-default x86_64
KDE 4.3.5

Mac OS X El Capitan (10.11)

答案1

事实证明,这是一个非常愚蠢的问题,其中已经设置了带有标志的别名-u

我只需要跑来\rsync -a . ..逃避别名。

答案2

使用 rsync 版本 3.0.9 协议版本 30 运行 CentOS 7,我按照步骤操作并得到了正确的结果。

这些步骤没有任何问题,因为它们对我有用。不过,可以尝试在没有该选项的情况下再次运行它们-I

➜ /tmp$  mkdir test && cd test
➜ test$  mkdir folder && cd folder
➜ folder$  echo "#line1" > file
➜ folder$  cat file 
#line1
➜ folder$  rsync -a -I . ..
➜ folder$  ls ..
file  folder
➜ folder$  cat ../file 
#line1
➜ folder$  echo "#line2" >> ../file
➜ folder$  cat ../file             
#line1
#line2
➜ folder$  rsync -a -I . ..        
➜ folder$  cat ../file     
#line1
➜ folder$  rsync --version
rsync  version 3.0.9  protocol version 30

答案3

它似乎在 3.0.6 版本上按预期工作,我会在您的存储库中检查更新的 rsync。

[user@server ~]$ mkdir test && cd test
[user@server test]$ mkdir folder && cd folder
[user@server folder]$ 
[user@server folder]$ echo "#line1" > file
[user@server folder]$ rsync -a -I . ..
[user@server folder]$ echo "#line2" >> ../file
[user@server folder]$ rsync -a -I . ..
[user@server folder]$ cat ../file 
#line1
[user@server folder]$ cat file 
#line1

同步信息

[user@server folder]$ rsync --version
rsync  version 3.0.6  protocol version 30

系统信息

CentOS 6.7 final
Linux server 2.6.32-573.12.1.el6.x86_64 #1 SMP Tue Dec 15 21:19:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

相关内容