Arquivos indesejados ._ que aparecem de um compartilhamento SMB

1

No trabalho, todos usamos Macs e temos um servidor de arquivos SMB configurado.

De alguma forma, estranhos arquivos ocultos foram aparecendo, especialmente quando a sincronização entre os nossos Macs e o servidor de arquivos. Eu não sei o que os cria e porque eles são criados. Para um arquivo chamado index.html, um arquivo oculto chamado. index.html é criado. Às vezes, todos os arquivos em uma pasta têm equivalentes , por exemplo. bear.jpg também existe como um arquivo oculto chamado ._bear.jpg.

Agora, esses arquivos ocultos não são um problema, até você começar a copiar pastas, fazer operações de rar / zip ou trabalhar em um sistema de controle de versão. Você não quer que esses arquivos ocultos estejam bagunçando o sistema.

Quem sabe por que esses arquivos estão aqui e possivelmente um comando para se livrar desses arquivos de uma pasta recursivamente?

Este é um exemplo: o terceiro arquivo, ._index.html, foi criado por algo e não sei o que ou por quê.

total 16
drwx------   7 wolfr  staff   238 Dec  9 13:34 .
drwx------   5 wolfr  staff   170 Dec  9 13:17 ..
-rwx------   1 wolfr  staff  4096 Dec  9 13:34 ._index.html
drwx------  14 wolfr  staff   476 Dec  9 13:27 css
drwx------   6 wolfr  staff   204 Dec  9 13:27 images
-rwx------@  1 wolfr  staff  3520 Dec  9 13:34 index.html
drwx------   4 wolfr  staff   136 Dec  9 13:27 js

Este é um comando que eu usaria para excluir arquivos .svn recursivamente, como modificá-lo para remover arquivos que correspondam a ._ * recursivamente?

find . -type d -name '.svn' -print0 | xargs -0 rm -rdf

EDIT: o comando é, eu acho

find . -name '._*' -print0 | xargs -0 rm -rdf
    
por Wolfr 09.12.2009 / 16:01

1 resposta

3

Esse MacOS armazena seus metadados. Quando está em um sistema de arquivos Mac (HFS) regular, eles são armazenados nas propriedades do arquivo pelo próprio sistema de arquivos. Mas em FAT ou SMB não há espaço reservado para isso, então o OS X trabalha em torno dele e cria o arquivo ._ ...

Este comando os removeria recursivamente:

find . -type f -name '._*' -delete
    
por 09.12.2009 / 16:16