Por uma resposta a outra pergunta , você pode definir a variável de ambiente não documentada (?) COPYFILE_DISABLE para impedir que vários programas fornecidos pelo sistema (incluindo tar ) atribuam um significado especial aos ._*
membros do arquivo. Em particular, impedirá que eles:
armazenar dados de atributos estendidos (incluindo bifurcações de recursos) nos ._*
membros do arquivo
(por exemplo, não "polui" os arquivos criados no Mac OS X, mas destinados ao uso em outros sistemas), e
tentar extrair atributos ou recursos estendidos de membros do arquivo nomeados como ._*
(isto é, não interpretar mal ._*
membros do arquivo em arquivos de outros sistemas).
O valor que você usa para a variável de ambiente não é importante (pode até ser a sequência vazia). Valores como 0
e false
não reativarão o recurso. A única coisa que importa é se a variável está definida (é necessário "desmarcá-la" para reativar o recurso).
Você pode usar essa variável em comandos individuais, aproveitando a capacidade dos shells no estilo Bourne ( sh , ksh , bash , zsh , etc.) de prefixar comandos com variáveis de ambiente extras.
COPYFILE_DISABLE=1 tar cf new.tar …
Se você se deparar com o problema com mais frequência, convém definir e exportar essa variável em um dos arquivos de inicialização do seu shell.
# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Quando necessário, você pode desabilitar a variável para comandos individuais.
(unset COPYFILE_DISABLE; tar cf somefile.tar …)
Neste sistema Mac OS X 10.6, todos os seguintes comandos parecem saber sobre COPYFILE_DISABLE:
/usr/bin/tar
(um link simbólico para bsdtar
)
/usr/bin/bsdtar
/usr/bin/gnutar
/bin/pax
COPYFILE_DISABLE originou no Mac OS X 10.5. Se você precisar oferecer suporte ao 10.4, ele possui COPY_EXTENDED_ATTRIBUTES_DISABLE que funciona da mesma maneira.