Você postou em um comentário que está trabalhando em um sistema Mac OS X. Esta é uma pista importante para o propósito desses arquivos ._*
.
Essas entradas do arquivo ._*
são blocos de dados AppleDouble que contêm as informações extras associadas ao arquivo correspondente (o arquivo um sem o prefixo ._
). Eles são gerados pelo específico do Mac OS X copyfile (3) família de funções. Os blobs AppleDouble armazenam dados de controle de acesso (ACLs) e atributos estendidos (comumente, os flags Finder e os “forks de recursos”, mas xattrs podem ser usados para armazenar qualquer tipo de dados).
As ferramentas de arquivo do Mac OS X fornecidas pelo sistema ( bsdtar
(também linkado como tar
), gnutar
e pax
) gerarão um membro% archive ._*
para qualquer arquivo que tenha informações estendidas associado a isso; no modo "desarquivar", eles também decodificarão esses membros do arquivo e aplicarão as informações estendidas resultantes ao arquivo associado. Isso cria um arquivo de "fidelidade total" para uso em sistemas Mac OS X, preservando e, posteriormente, extraindo todas as informações que o sistema de arquivos HFS + pode armazenar.
As ferramentas de arquivamento correspondentes em outros sistemas não sabem dar tratamento especial a esses arquivos ._*
, então eles são descompactados como arquivos normais. Como esses arquivos são inúteis em outros sistemas, eles são geralmente vistos como “arquivos inúteis”. Da mesma forma, se um sistema que não seja do Mac OS X gera um arquivo morto que inclui arquivos normais que começam com ._
, as ferramentas de desarquivamento do Mac OS X tentarão decodificar esses arquivos como informações estendidas.
Existe, no entanto, uma maneira não documentada (?) de fazer com que os arquivadores do Mac OS X fornecidos pelo sistema se comportem como em outros sistemas Unixy: a variável de ambiente COPYFILE_DISABLE. Configurar essa variável (para qualquer valor, até mesmo a cadeia vazia), evitará que os arquivadores gerem ._*
membros do archive para representar qualquer informação estendida associada aos arquivos arquivados. Sua presença também impedirá que os arquivadores tentem interpretar esses membros do arquivo como informações estendidas.
COPYFILE_DISABLE=1 tar czf new.tar.gz …
COPYFILE_DISABLE=1 tar xzf unixy.tar.gz …
Você pode definir essa variável no arquivo de inicialização do seu shell se quiser trabalhar dessa forma com mais frequência do que nunca.
# disable special creation/extraction of ._* files by tar, etc. on Mac OS X
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Então, quando você precisar reativar o recurso (para preservar / restaurar as informações estendidas), você poderá "desanimá-lo" para comandos individuais:
(unset COPYFILE_DISABLE; tar czf new-osx.tar.gz …)
Os arquivadores no Mac OS X 10.4 também fazem algo semelhante, embora usem uma variável de ambiente diferente: COPY_EXTENDED_ATTRIBUTES_DISABLE