Como obtenho o NFS no Linux para exportar uma pasta para o OS X com os IDs de usuário do OS X para que eu possa cp -a do Linux para o OS X?

1

Tenho o Ubuntu GNOME 15.10 em um computador e o OS X 10.11.2 em outro. Eu quero migrar arquivos da instalação do Ubuntu para a instalação do OS X, mas preservando as permissões.

Atualmente, a estratégia que estou tentando é exportar meu diretório pessoal pelo NFS, montá-lo a partir do Mac e cp -a dos arquivos da montagem. Eu sei que no OS X UIDs e GIDs são atribuídos de maneira diferente do que no Linux. No Linux, meu UID / GID é 1000/1000 e, no OS X, meu UID / GID é 501/20.

Pelo que eu sei, ter isso no meu /etc/exports deve ser suficiente para mostrar meus arquivos do Linux como 501/20 no Mac:

/home/pietro/   <Mac's IP>(rw,sync,all_squash,no_subtree_check,insecure,anonuid=501,anongid=20)

e montagem no Mac com

mkdir /tmp/q
sudo mount -t nfs <Linux's IP>:/home/pietro /tmp/q

No entanto, quando eu monto dessa maneira, ls -l no Mac me diz que as permissões de arquivo ainda são 1000/1000.

Eu também tentei:

  • no_root_squash
  • anonuid=1000,anongid=1000
  • removendo no_subtree_check
  • removendo sync
  • echo N | sudo tee /sys/module/nfs/parameters/nfs4_disable_idmapping seguido por sudo nfsidmap -c
  • NEED_IDMAPD=yes em /etc/default/nfs-common
  • -o resvport no Mac

tudo sem sucesso.

Então, minha pergunta é: como eu configuro o NFS para que quando eu ls -l no lado do Mac eu tenha 501/20 como proprietário / grupo, então eu posso seguramente cp -a ?

Como alternativa, estou usando a ferramenta errada para o trabalho e há uma maneira melhor? Eu preciso preservar as outras permissões do Unix, então o SMB não parece ser uma opção. Eu também não estou disposto a arriscar mudar o UID / GID da conta do OS X.

Obrigado.

    
por andlabs 26.12.2015 / 06:35

1 resposta

1

Eu decidi usar apenas o rsync, que da versão 3.1.0 tem opções para fazer o que eu quero . Eu precisava obter o rsync mais recente já que a Apple ainda envia uma versão antiga com o OS X, mas depois disso era uma questão de apenas fazer

rsync3 --usermap 1000:501 --groupmap 1000:20 -a -v pietro@<Linux's IP>:/home/pietro/<path> <dest>

Obrigado mesmo assim!

UPDATE (para o benefício dos Googlers) O vice-versa funciona também, também do Mac!

rsync3 --usermap 501:1000 --groupmap 20:1000 -a -v <src> pietro@<Linux's IP>:/home/pietro/<path>

<path> não parece gostar de espaços, mas eu posso estar fazendo algo errado ...

    
por 27.12.2015 / 05:08