Posso armazenar forks de recursos do OS X em um compartilhamento do Samba em qualquer lugar * else * do que em arquivos dotbar?

14

Os forks de recursos do OS X são fluxos de dados alternativos anexados a arquivos regulares. Eles podem conter o ícone personalizado do arquivo, o rótulo colorido, as palavras-chave ou qualquer outro metadado definido pelo usuário ou por aplicativos.

Eles são suportados nativamente pelo sistema de arquivos HFS + do OS X, mas sempre que o OS X monta outro sistema de arquivos, seja local (FAT32) ou remoto (NFS, SMB) eles são armazenados nos chamados arquivos "dotbar": o arquivo regular name.ext é armazenado em outro arquivo normal, mas oculto ._name.ext . (Eles não devem ser confundidos com arquivos .DS_Store , que armazenam as configurações de visualização de um diretório, como visualização de ícone vs. coluna, ou a posição de sua janela.)

O problema com os arquivos dotbar ._ é que eles são arquivos regulares reais, no sistema de arquivos de destino, com a mesma extensão que o arquivo original, causando, assim, muitos estragos. Por exemplo, Ant e Maven verão ._MyClass.java como outro arquivo Java para compilar.

Vejo que o OS X pode ser configurado para armazenar forks de recursos em fluxos denominados SMB e que o Samba pode ser configurado para armazenar fluxos nomeados nos atributos estendidos POSIX ou, alternativamente, em um diretório de depósito em outro lugar .

Ambas as soluções resolveriam o problema de arquivos dotbar que poluem o sistema de arquivos de destino, mas não consigo trabalhar.


Xattr

Primeiro eu tentei com o xattr:

vfs objects = streams_xattr
kernel oplocks = no

A última opção se deve a este bug . Eu disse ao OS X para usá-lo, fazendo isso na raiz do compartilhamento, antes de montá-lo:

touch .com.apple.smb.streams.on

Mas quando tentei copiar um arquivo com o Finder, recebi este erro:

The Finder can’t complete the operation because some data in “hello.java” can’t be read or written.
(Error code -36)


Depot

Então eu tentei com depósito:

vfs objects = streams_depot

deixando .com.apple.smb.streams.on na raiz do compartilhamento. Tentando copiar o mesmo arquivo com o Finder, recebi outro erro:

The operation can’t be completed because an unexpected error occurred
(error code -50)


Como posso fazer o OS X funcionar com uma dessas duas opções? Meu objetivo é obter esses desagradáveis ._ dos diretórios compartilhados.

Eu tentei simplesmente vetar arquivos dotbar:

veto files = /._*/
delete veto files = yes

Mas isso faz com que alguns aplicativos falhem, por exemplo Mercurial quando executado a partir do OS X através de um compartilhamento SMB montado .

Estou usando o OS X 10.9.5 como o cliente; Samba 3.6.6 do Debian Wheezy como o servidor.

Editar: aqui está minha configuração conforme solicitado:

[global]
    security = user
    invalid users = root
    workgroup = COMPANY_NAME
    encrypt passwords = true
    panic action = /usr/share/samba/panic-action %d
    syslog = yes
    syslog only = yes

    # PERFORMANCE TUNING
    socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE
    read raw = true
    write raw = true
    use sendfile = true
    min receivefile size = 16384
    aio read size = 16384
    aio write size = 16384
    max xmit = 131072
    getwd cache = true

    # DEFAULT OPTIONS FOR ALL SHARES
    writeable = true
    force group = company_group

    create mask = 664
    security mask = 664
    force create mode = 664
    force security mode = 664

    directory mask = 2775
    directory security mask = 2775
    force directory mode = 2775
    force directory security mode = 2775

    # solve problem where OS X clients remove mode 0100
    map archive = no

[homes]
    browseable = no
    
por Tobia 04.03.2015 / 12:48

2 respostas

2

Parece que você pode conseguir fazer isso com o novo módulo vfs_fruit , empilhados com o módulo VFS vfs_streams_xattr .

Veja, por exemplo, este tópico da lista de discussão . Você precisa de um sistema de arquivos subjacente que suporte atributos estendidos, e você tem que montá-los com eles habilitados.

No entanto , de acordo com o wiki do Samba , este é um novo recurso no Samba 4.2, então você precisará atualizar. (A partir de agora, mesmo o Debian Sid [experimental] ainda não tem 4.2).

Se você não está interessado em abandonar o pacote Debian e construir uma nova versão do Samba (ou atualizar para o Jessie e esperar que o 4.2 apareça no jessie-backports), você pode peça os arquivos de ponto dos clientes.

Você pode ter dois compartilhamentos diferentes que apontam para o mesmo diretório, um dos quais oculta os arquivos ._files, por exemplo. Talvez não seja o ideal, mas pode ser viável.

    
por 30.09.2015 / 18:44
0

Não sei se é possível com as preferências nativas do Mac, mas você pode usar uma ferramenta como Asepsis para ajudar com esse problema . Ele moverá todos os excrementos do Mac para suas próprias pastas.

    
por 27.04.2015 / 20:18

Tags