Os garfos de recursos do OS X são fluxos alternativos de dados anexados a arquivos regulares. Eles podem conter o ícone personalizado do arquivo, rótulo colorido, palavras-chave ou qualquer outro metadado definido pelo usuário ou pelos 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, local (FAT32) ou remoto (NFS, SMB), eles são armazenados nos chamados arquivos "dotbar": a bifurcação de recursos para o arquivo comum name.ext
é armazenado em outro arquivo regular, mas oculto ._name.ext
. (Eles não devem ser confundidos com .DS_Store
arquivos, que armazenam as configurações de exibição de um diretório, como ícone versus exibição de 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 estragos de várias maneiras. Por exemplo, Ant e Maven verão ._MyClass.java
ainda outro arquivo Java para compilar.
Vejo que o OS X pode ser configurado para armazenar bifurcações de recursos em fluxos nomeados para SMB e que o Samba pode ser configurado para armazenar fluxos nomeados em atributos estendidos do POSIX ou, alternativamente, em um diretório de depósito em outro lugar .
Ambas as soluções resolveriam o problema dos arquivos dotbar que poluem o sistema de arquivos de destino, mas também não consigo trabalhar.
Xattr
Primeiro eu tentei com o xattr:
vfs objects = streams_xattr
kernel oplocks = no
A última opção é devido a esse 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:
O Finder não pode concluir a operação porque alguns dados em "hello.java" não podem ser lidos ou gravados.
(Código de erro -36)
depósito
Então eu tentei com depósito:
vfs objects = streams_depot
saindo .com.apple.smb.streams.on
na raiz do compartilhamento. Tentando copiar o mesmo arquivo com o Finder, recebi outro erro:
A operação não pode ser concluída porque ocorreu um erro inesperado
(código de erro -50)
Como posso fazer o OS X funcionar com uma dessas duas opções? Meu objetivo é tirá-los ._
dos diretórios compartilhados.
Tentei simplesmente vetar arquivos dotbar:
veto files = /._*/
delete veto files = yes
Mas isso faz com que alguns aplicativos falhem, por exemplo, o Mercurial quando executado no OS X em um compartilhamento SMB montado .
Estou usando o OS X 10.9.5 como cliente; Samba 3.6.6 do Debian Wheezy como servidor.
Edit: aqui está a 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
unix extensions
diretiva na[global]
sessão para ver se resolve o seu caso? Você pode atualizar sua pergunta com a saída dotestparm
comando?Respostas:
Parece que você pode fazer isso com o novo módulo vfs_fruit , empilhado com o módulo VFS vfs_streams_xattr .
Veja, por exemplo, este encadeamento da lista de discussão . Você precisa de um sistema de arquivos subjacente que suporte atributos estendidos e precisa montá-lo com eles ativados.
No entanto , de acordo com o wiki do Samba , este é um novo recurso do Samba 4.2, então você precisará atualizar. (A partir de agora, mesmo o Debian Sid [experimental] ainda não possui o 4.2.)
Se você não está interessado em abandonar o pacote Debian e criar uma nova versão do Samba (ou atualizar para Jessie e aguardar o 4.2 aparecer no jessie-backports), você pode ocultar arquivos de ponto dos clientes.
Você pode ter dois compartilhamentos diferentes que apontam para o mesmo diretório, um dos quais oculta os arquivos ._, por exemplo. Talvez não seja o ideal, mas pode ser viável.
fonte
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.
fonte
.DS_Store
arquivos, e não os "dotbar"._*
arquivos que causam a maioria dos problemas em compartilhamentos de rede