复制详细信息:
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