我的本地计算机上有一个名为foo
的目录,其中包含一个名为document
的文件。 foo
和document
的用户和群组为A:B
。
我想使用rsync将这些文件移动到远程目录remote-dir
。 remote-dir
包含其他目录,但不包含/foo
,因此rsync将首次将/foo
和/foo/document
引入远程目录。 remote-dir
中的文件应该都有一个用户:J:L
组。这是看起来像:
BEFORE
/foo/ (A:B) /remote-dir/ (J:K)
`- document (A:B) `- other/ (J:L)
`- directories/ (J:L)
我使用以下rsync命令执行传输*:
rsync -rv --super --owner --chown=J:L ./foo/ root@remote:/remote-dir/foo
预期
/foo/ (A:B) /remote-dir/ (J:K)
`- document (A:B) `- other/ (J:L)
`- directories/ (J:L)
`- foo/ (J:L)
`- document (J:L)
我希望/foo
和/foo/document
在remote-dir
中与用户:J:L
组合展示。
实际
/foo/ (A:B) /remote-dir/ (J:K)
`- document (A:B) `- other/ (J:L)
`- directories/ (J:L)
`- foo/ (J:root)
`- document (J:root)
实际上,/foo
和/foo/document
出现在remote-dir
中,用户组为J:root
,root
是我指定的root用户组在rsync命令(root@remote:[...]
)中。
根据手册页,--chown=J:L
相当于--usermap=*:J --groupmap=*:L
,正如我们所看到的,用户地图工作正常,但组图不是。
我做错了吗?任何不正确的假设? 我的理智清单应该是什么?
* rsync选项解释:
-r
for recursive --super
因为“接收者尝试超级用户活动”(chown)--owner
因为chown在内部使用--usermap
和--groupmap
,这些选项需要--owner
才能运行(编辑:实际上,这是不正确的。--usermap
需要--owner
,但--groupmap
需要单独的选项--group
。)答案 0 :(得分:0)
rsync手册页有答案。
我知道第一部分:
要使--usermap选项产生任何效果,必须使用(或隐含)-o( - home)选项,并且接收器需要以超级用户身份运行(另请参阅 - 假超级选项)。
但我没有意识到我也需要-g( - groupmaps):
要使--groupmap选项产生任何效果,必须使用-g( - groupss)选项(或隐含),接收者需要有权设置该组。