OS X 上的 rsync 将文件夹的组名称更改为 _lpoperator

Jus*_* He 2 rsync mac-osx

以下是如何演示该问题:

  1. 在 OSX 上抓取终端并运行

    cd ~ && mkdir abc && ls -l ~/
    
    Run Code Online (Sandbox Code Playgroud)

    以下是有关文件夹“abc”的输出:

    drwxr-xr-x   2 justin  staff    68 Jan  4 20:20 abc
    
    Run Code Online (Sandbox Code Playgroud)

    团体名称可以看作是“工作人员”。

  2. rsync 将文件或文件夹从远程服务器同步到文件夹“abc”:

    rsync -aP -v -z -h username@server:/mnt/foo/ ~/abc/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 再次检查文件夹“abc”的组名:

    $ ls -l ~/
    drwxr-xr-x   2 justin  _lpoperator    68B Jan  4 19:44 abc
    
    Run Code Online (Sandbox Code Playgroud)

    而“abc”中的所有文件,组名都是_lpoperator。尝试在“abc”中创建一个文件并检查其组名,

    $ touch def
    $ ls -l ~/abc
    -rw-r--r--  1 justin  _lpoperator  0 Jan  4 20:28 def
    
    Run Code Online (Sandbox Code Playgroud)

我知道当我使用 rsync 的 -a 选项时,它会尝试保留该远程文件的权限,但为什么创建 _lpoperator ?这真的很奇怪,有什么想法吗?

Phi*_*ack 5

发生这种情况是因为您正在使用-arsync 选项。“-a”打开的一项设置是“-g”,即保留组。您从远程计算机传输的文件夹或文件归组 ID (gid) 100 所有。在您的计算机上,gid 100 是“_lpoperator”。您可以通过运行来验证这一点grep _lpoperator /etc/group。这将显示实际的组 ID 100。

因此,当 rsync 进行传输时,它会保留远程文件的 gid。该 gid 映射到您计算机上的 _lpoperator 组,因此您会在运行“ls”时看到该组发生更改。