我想使用 rsync 将远程计算机上某个目录中的一组特定文件同步到本地目录。我运行类似的东西:
rsync -i -a --delete -f 'merge ~/files_list' x.x.x.x:/source/dir/ /target/dir/
该文件~/files_list
包含要同步的文件名模式(带通配符)的特定列表,因为远程目录中有更多文件,而我只想复制特定子集。该--delete
参数也很重要,因为我想从本地计算机删除远程计算机上不再存在的文件。
这按预期工作,除了一件事:它将 的所有者和权限更改为 的所有者和权限/target/dir
,/source/dir
这在我的情况下是不可接受的。
如何摆脱这种行为?我不敢相信 rsync 没有参数只是简单地说“不要修改顶级目录属性”,因为它似乎是经常需要的东西......
*
在我的情况下,放置after的明显解决方案/source/dir/
不起作用,因为它有效地禁用--delete
,并且目标上存在但源上不存在的文件不会被删除。
有什么办法解决这个问题吗?
编辑:因为我收到很多答案告诉我不要使用-a
或明确说明--no-perms
:我真的知道是什么-a
意思,它就在那里故意。我确实想要具有一切同步(包括权限和所有权)目录内容。我只想跳过目录本身。
我希望有一个开关rsync
告诉“不要在最上面的目录”。确实应该如此。
答案1
添加 --no-perms --no-owner --no-group