Desativar o armazenamento de arquivos invisíveis "._" no meu armazenamento em rede cfs ou smb

34

Eu uso o OS X Mavericks e tenho algumas unidades de armazenamento da empresa montadas (usando smb ou cfs). (smb: //[email protected]/directory/data). Quando trabalho com arquivos na unidade ou copio arquivos para a unidade, alguns arquivos ocultos são criados. A maioria desses arquivos começa com ponto-traço ._e, em seguida, o nome do arquivo do arquivo original, como:

._test001.png
._test002.png
._test003.png

E na maioria das vezes, os famosos ._.DS_Storee .DS_Storetambém estão lá.

No meu Mac, esses .itens de ponto são invisíveis, mas meus colegas do Windows veem esses arquivos. Como posso impedir que o OS X crie esses estranhos arquivos invisíveis?

Em support.apple.com (e outras fontes da Internet), você pode encontrar uma 'gravação de padrões' para desativar a criação de arquivos .DS_Store nas unidades de rede. Mas isso não funciona no Mavericks:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

Por enquanto, eu uso esse oneliner, mas fazer um rm -rfparece errado neste caso.

find . -type f -name "._*" -exec rm "{}" \;

Editar: não quero excluir os arquivos ou excluí-los da cópia. Eu quero que eles não sejam criados em primeiro lugar.

Editar: prefiro uma solução OS X 'nativa' do que aplicativos de terceiros.

Editar: Esta pergunta tem duas respostas, uma para os arquivos ._ e outra para os arquivos .DS_Store. A recompensa é recompensada dot_clean, pois esse aplicativo de linha de comando nativo limpa todos os arquivos ._. Infelizmente, não limpa os arquivos .DS_Store, isso pode ser feito efetivamente com Asepsis. Asepsis armazena .DS_Stores em um local fixo e não na própria pasta.

PrimoCocaína
fonte
Não tenho certeza se essas sugestões resolverão seu problema, deixando-as em um comentário. 1. Experimente o TinkerTool bresink.com/osx/TinkerTool.html e use o Finder> "Não crie arquivos .DS_Store ocultos em uma conexão de rede". 2. Tente os segredos Preferências do Sistema Pane secrets.blacktree.com e desmarque Finder> Use .DS_Stores em uma rede.
@gentlemanhog, vou tentar suas sugestões. Mas prefiro uma solução OS X 'nativa' do que aplicativos de terceiros.
CousinCocaine
@gentlemanhog, infelizmente suas soluções não funcionam no Mavericks.
CousinCocaine

Respostas:

31

Admito, não tinha notado que o defaults writecomando parou de funcionar em Mavericks. No entanto, quando limpo montagens de rede, em vez de um liner finde rm, uso o seguinte:

dot_clean .

O manfile explica:

dot_clean -- Merge ._* files with corresponding native files.

Eu não uso o sinalizador -m, mas você pode achar útil na sua situação.

-m      Always delete dot underbar files.

Aqui está outra pessoa tentando impedir que os arquivos .DS_Store sejam criados: http://www.aorensoftware.com/blog/2011/12/24/death-to-ds_store/ - parece que ele não os quer em unidades por mais que ele não os queira na rede!

evilblender
fonte
Esta é a ferramenta certa para o trabalho. Infelizmente, esta solução é pós-montagem e precisa ser executada após a montagem. A assepsia faz um trabalho melhor ( apple.stackexchange.com/a/136558/55028 ), mas é um aplicativo de terceiros e funciona apenas em arquivos .DS_Store, e funciona apenas para todos os arquivos .DS_Store em todas as montagens.
CousinCocaine
12

Apenas tentei, e isso funciona no Mavericks (pelo menos para desativar .DS_Store, não compartilhamentos de rede):

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

Você só precisa se lembrar de reiniciar o Finder:

killall Finder
dmuir
fonte
11
Isso não funciona no El Capitan, para uma unidade Samba. .DS_Storearquivos ainda estão sendo criados
Sébastien
Não .DS_Storesão arquivos AppleDouble, são apenas arquivos invisíveis "normais" criados pelo Finder. Portanto, a visualização desses arquivos .DS_Store não indica se DSDontWriteNetworkStoresfunciona ou não.
Thomas Tempelmann
4

Os ._arquivos são arquivos AppleDouble usados ​​para armazenar metadados como atributos estendidos, ACLs, sinalizadores de arquivo e bifurcações de recursos.

Para excluí-los, execute:

find . -name ._\* -delete

Você pode ver se os arquivos possuem atributos estendidos, ACLs ou sinalizadores de arquivos ls -l@eO. Os ._arquivos geralmente são criados porque os arquivos possuem atributos estendidos. Você pode usar xattr -cpara excluir atributos estendidos ou chmod -Npara excluir ACLs. cp -Xe rsynccopie arquivos sem atributos estendidos, ACLs, sinalizadores de arquivo ou bifurcações de recursos.

Lri
fonte
Eu não quero excluir os arquivos ou excluí-los da cópia. Eu quero que eles não sejam criados em primeiro lugar.
CousinCocaine
2
Se você estiver usando o Finder, não poderá impedir que eles sejam criados.
Fyrefly
@Fyrefly, mas você pode criá-los em outro lugar. Consulte Asepsis , apple.stackexchange.com/a/136558/55028 . Então uma solução 'nativo' pode ser possível, bem
CousinCocaine
3

Como você teria que desativar a gravação de arquivos ocultos em todos os Mac que poderiam se conectar ao seu compartilhamento, uma opção melhor seria interromper isso no compartilhamento e não nos clientes.

Tudo o que você precisa fazer é editar sua configuração de compartilhamento (por exemplo, no Linux em /etc/samba/smb.conf) e adicionar a seguinte opção à sua configuração de compartilhamento:

veto files = /._*/.DS_Store/ 

Agora, nenhum cliente Mac pode salvar arquivos com esses padrões no seu compartilhamento.

cloudranger
fonte
11
'veto files' não impede que os arquivos sejam gravados, impede que os usuários vejam os arquivos. Por favor, consulte samba.org
Justin Catterall
11
O samba tem a opção "excluir arquivos de veto = sim", que também os exclui.
Rwenz3l
11
Infelizmente, delete veto files = yesnão exclui esses arquivos de ponto, apenas garante que você possa excluir uma pasta que contenha arquivos que foram ocultados pela visualização pela veto filesopção, para que não realize o que o OP buscava (e pelo que também estou procurando em vão para).
precisa saber é o seguinte
2

Eu não tentei isso sozinho e percebo que o OP prefere soluções nativas, mas mesmo assim:

Existe um aplicativo chamado Asepsis que funciona redirecionando a criação desses arquivos para uma pasta especial, ou seja, de forma a impedir que eles apareçam.

geada
fonte
Esta é uma boa ferramenta para o trabalho. Infelizmente, esta solução é um aplicativo de terceiros e funciona apenas em arquivos .DS_Store (não arquivos ._) e funciona apenas em todos os arquivos .DS_Store em todas as montagens. Esta é uma boa solução, mas não é nativa e não ._ arquivos e, portanto, sem recompensa. sry.
CousinCocaine
1

Não uma solução nativa, nem , na verdade, impedir que esses arquivos sendo escrito, mas não perseguir ativamente atrás deles e excluir assim que eles são escritos ...

BlueHarvest

O BlueHarvest remove automaticamente os arquivos .DS_Store e ._ AppleDouble das suas chaves USB, cartões SD, reprodutores de música, servidores de arquivos ou qualquer disco que não seja do Mac. O BlueHarvest remove esses itens à medida que são criados ou modificados, para que você sempre fique livre de metadados sem precisar levantar um dedo.

Sem afiliação, eu a uso com bastante sucesso há vários anos.

Tetsujin
fonte
0

Tanto quanto sei, você não pode impedir que esses arquivos sejam criados. Pelo menos o Finder os criará.

A exclusão desses arquivos também não ajudará - porque na próxima vez que você acessar o volume e suas pastas no Mac, o Finder os criará novamente.

Estou surpreso que seus colegas do Windows vejam esses arquivos. Estou trabalhando há muitos anos com meu Mac usando Mac e Windows - e nunca vejo esses arquivos. Nem no Mac nem no Windows.

Esses arquivos são marcados como "ocultos" por padrão e não aparecerão se você tiver o Windows definido para ocultar arquivos e pastas ocultos.

Martin
fonte
Eu verifiquei e eles desativaram 'ocultar arquivos ocultos'. Mas isso não impede que eles sejam criados. Eu acho que há uma maneira de corrigir isso, como havia em OS com.apple.desktopservices 10,5 defaults write DSDontWriteNetworkStores -bool verdade
CousinCocaine
Se eles desativaram (desmarcados) 'ocultar arquivos ocultos', é apenas o contrário: habilite-o. :-) E como eu disse: até onde eu sei, não existe uma solução "solução OS X nativa". E: você vinculou a uma resposta de "support.apple.com", que diz: "Desativar a criação de arquivos .DS_Store em servidores de arquivos remotos pode causar um comportamento inesperado no Finder". E: eu não sugeriria instalar aplicativos que prometem evitá-lo. Tanto quanto sei, isso pode ser muito perigoso.
Martin Martin
2
"isso pode ser muito perigoso" :) Agora, eu realmente quero que esses arquivos sejam removidos! Sério, os arquivos .DS_Store armazenam propriedades do Finder e os arquivos DS_Store corrompidos podem fazer coisas estranhas. Não quero arquivos DS_Store corrompidos, não desejo nenhum arquivo DS_Store. Não tenho medo de removê-los. E voltando à minha pergunta original: como impedir o OS X de criar esses estranhos arquivos invisíveis? E com isso quero dizer todos os arquivos ._ e .DS_Store. Nada mais.
CousinCocaine
Seria útil para mim (e pode ser você) se você confirmar que as pessoas ativadas (e não desativadas) "ocultam arquivos ocultos". E eu posso entender que você não deseja que esses arquivos sejam criados e que deseja uma solução nativa, mas se não houver uma solução nativa, não ajuda dizer "mas eu quero".
Martin Martin
-1

Eu encontrei uma maneira muito fácil e gratuita de se livrar de arquivos ._, especialmente de um HD externo fat32.

Inicie o OnyX (software livre). Em Utilitários, vá para AppleDouble, selecione ... a pasta. É isso aí!!!

Mariano Rocchi
fonte
11
O OP afirma especificamente que ele não quer uma ferramenta de limpeza, mas que impede que os arquivos sejam gravados.
Tetsujin