Por uma resposta a outra pergunta , você pode definir a variável de ambiente não documentada (?) COPYFILE_DISABLE para impedir que vários dos programas fornecidos pelo sistema (incluindo tar ) dêem um significado especial a ._*
membros do arquivo. Em particular, isso os impedirá de:
-
armazenando dados de atributos estendidos (incluindo forquilhas de recursos) em
._*
membros do arquivo
(isto é, não "polua" arquivos criados no Mac OS X, mas destinados a uso em outros sistemas) e -
tentando extrair atributos estendidos ou recursos de membros do repositório nomeados como
._*
(isto é, não interprete erroneamente._*
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 string vazia). Valores como 0
e false
não reativarão o recurso. A única coisa que importa é saber se a variável está definida (você tem que "desarmar" para reabilitar o recurso).
Você pode usar essa variável em comandos individuais, aproveitando a capacidade de shells ao estilo Bourne ( sh , ksh , bash , zsh , etc.) para prefixar comandos com variáveis de ambiente extras.
COPYFILE_DISABLE=1 tar cf new.tar …
Se você encontrar o problema com mais frequência do que o contrário, 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 você precisar, poderá cancelar a configuração da variável para comandos individuais.
(unset COPYFILE_DISABLE; tar cf somefile.tar …)
Neste sistema Mac OS X 10.6, todos os comandos a seguir parecem saber sobre COPYFILE_DISABLE:
-
/usr/bin/tar
(um link simbólico parabsdtar
) -
/usr/bin/bsdtar
-
/usr/bin/gnutar
-
/bin/pax
COPYFILE_DISABLE foi originado no Mac OS X 10.5. Se você precisa dar suporte a 10.4, ele tem COPY_EXTENDED_ATTRIBUTES_DISABLE que funciona da mesma maneira.