为什么这个 rsync 命令正确地更改了用户,而不是组?

Why does this rsync command change the user correctly, but not the group?

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

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

之前

/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 中,user:group 为 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:rootroot是root用户组我在rsync命令中指定了(root@remote:[...]).

根据手册页,--chown=J:L 等同于 --usermap=*:J --groupmap=*:L,正如我们所见,usermap 工作正常,但 groupmap 不是。

我做错了什么吗?任何不正确的假设? 我的理智清单应该包括什么?

*rsync 选项解释:

rsync 手册页有答案。

我知道第一部分:

For the --usermap option to have any effect, the -o (--owner) option must be used (or implied), and the receiver will need to be running as a super-user (see also the --fake-super option).

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

For the --groupmap option to have any effect, the -g (--groups) option must be used (or implied), and the receiver will need to have permissions to set that group.