Command line 为什么此rsync命令可以正确地更改用户,但不能更改组?

Command line 为什么此rsync命令可以正确地更改用户,但不能更改组?,command-line,rsync,chown,Command Line,Rsync,Chown,我在本地机器上有一个名为foo的目录,其中包含一个名为document的文件。foo和document的用户和组是A:B 我想使用rsync将这些文件移动到远程目录remotedirremotedir包含其他目录,但不包含/foo,因此rsync将首次将/foo和/foo/document引入远程目录。remote dir中的文件都应该有一个user:group ofJ:L。下面是它的样子: 之前 /foo/ (A:B) /remote-dir/ (J:K

我在本地机器上有一个名为
foo
的目录,其中包含一个名为
document
的文件。
foo
document
的用户和组是
A:B

我想使用rsync将这些文件移动到远程目录
remotedir
remotedir
包含其他目录,但不包含
/foo
,因此rsync将首次将
/foo
/foo/document
引入远程目录。
remote dir
中的文件都应该有一个user:group of
J:L
。下面是它的样子:

之前

/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
与一组
J:L
用户一起出现在
remotedir

实际值

/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
是我在rsync命令中指定的根用户组(
root@remote:[…]

根据手册页,
--chown=J:L
相当于
--usermap=*:J--groupmap=*:L
,我们可以看到,usermap工作正常,但groupmap工作不正常

我做错什么了吗?有没有不正确的假设我的理智清单上应该有什么?

*rsync选项说明:

  • -r
    用于递归
  • --super
    因为“接收者尝试超级用户活动”(chown)
  • --owner
    因为chown在内部使用
    --usermap
    --groupmap
    ,这些选项需要
    --owner
    才能运行(编辑:实际上,这是不正确的。
    --usermap
    需要
    --owner
    ,但是
    --groupmap
    需要一个单独的选项
    --group

    • rsync手册页有答案

      我知道第一部分:

      要使--usermap选项产生任何效果,必须使用(或暗示)-o(--owner)选项,并且接收方需要作为超级用户运行(另请参见--false超级选项)

      但我没有意识到我还需要-g(--groupmaps):

      要使--groupmap选项产生任何效果,必须使用-g(--groups)选项(或隐含),并且接收者需要具有设置该组的权限


      rsync手册页提供了答案

      我知道第一部分:

      要使--usermap选项产生任何效果,必须使用(或暗示)-o(--owner)选项,并且接收方需要作为超级用户运行(另请参见--false超级选项)

      但我没有意识到我还需要-g(--groupmaps):

      要使--groupmap选项产生任何效果,必须使用-g(--groups)选项(或隐含),并且接收者需要具有设置该组的权限


      投票是为了关闭主题(属于ON),而+1是一个明确的问题,显示了研究的努力。哦,天哪,在我对这个问题困惑的困惑中,我忘了考虑我应该发布哪个SE社区。投票关闭作为话题(属于ON),但1是一个明确的问题,显示研究的努力。在我对这个问题困惑的困惑中,我忘了考虑我应该向哪个社区发表这个帖子。