Quando eu tar alguns arquivos no OS X:
tar cvf foo.tar foo
Ele produz um arquivo extra ._foo
no tarball:
./._foo
foo
que só aparece se eu extraí-lo em um sistema operacional não Mac. Mas ._foo
não existe no meu sistema de arquivos! O que está acontecendo? Como posso me livrar disso?
Respostas:
O tar do OS X usa o formato AppleDouble para armazenar atributos estendidos e ACLs.
O tar do OS X também sabe como converter os membros ._ em formatos nativos, mas os arquivos ._ geralmente são mantidos quando os arquivos são extraídos em outras plataformas. Você pode dizer ao tar para não incluir os metadados configurando COPYFILE_DISABLE com algum valor:
man copyfile
ls -l@
mostra as chaves e os tamanhos dos atributos estendidos,ls -le
imprime ACLsxattr -l
lista as chaves e os valores dos atributos estendidosxattr -c
limpa todos os atributos estendidos (-d não pode ser usado sozinho)chmod -N
exclui ACLsInformações armazenadas como atributos estendidos:
fonte
env COPYFILE_DISABLE tar -cf archive.tar my_folder/
.cat
outype
para ver o que está dentro, pelo menos. E geralmente é algo simples que foi inserido manualmente. Eu não jogaria fora por fazer backup, mas pode ser uma lixeira caso você queira distribuir algo entre plataformas e, especialmente, se houver por engano. Apenas dizer que a opção de deixá-los é bastante válido.A partir de
bsdtar 3.0.3 - libarchive 3.0.3
(e talvez antes), há uma nova opção nobsdtar
comando chamada--disable-copyfile
para suprimir a criação de._
arquivos.fonte
bsdtar 2.8.3 - libarchive 2.8.3
10.7.5
--disable-copyfile
Os
._
arquivos são bifurcações de recursos, conforme mencionado em outras respostas. No entanto, há uma maneira melhor de se livrar deles ao usartar
:Há também um
dot_clean
utilitário para limpar esses arquivos (acho que geralmente é usado para armazenamento externo).fonte
Aqui está um script python para remover esses arquivos. Deve funcionar em qualquer sistema operacional popular.
Não completamente testado, use por sua conta e risco!
fonte
O caractere de ponto final, ".", É usado na plataforma Mac como um indicador de arquivo oculto. No Windows, é o caractere "$". De qualquer forma, o arquivo ._foo provavelmente contém algumas informações específicas do OS X e eu recomendaria não excluí-lo. Em outros sistemas, você terá que ignorá-lo ou alguém aqui poderá fornecer um script que oculte arquivos e pastas que começam com um ".".
fonte