Publicaste en un comentario que estás trabajando en un sistema Mac OS X. Esta es una pista importante para el propósito de estos ._*
archivos.
Estas ._*
entradas de archivo son fragmentos de datos AppleDouble que contienen la información adicional asociada con el archivo correspondiente (el que no tiene el ._
prefijo). Son generados por la familia de funciones del copyfile específico de Mac OS X (3) . Los blobs de AppleDouble almacenan datos de control de acceso (ACL) y atributos extendidos (comúnmente, indicadores de Finder y "bifurcaciones de recursos", pero xattrs se pueden usar para almacenar cualquier tipo de datos).
Las herramientas de archivo de Mac OS X suministradas por el sistema ( bsdtar
(también enlazadas simbólicamente como tar
), gnutar
y pax
) generarán un ._*
miembro de archivo para cualquier archivo que tenga información extendida asociada; en modo "desarchivar", también decodificarán a los miembros del archivo y aplicarán la información extendida resultante al archivo asociado. Esto crea un archivo de "fidelidad total" para usar en sistemas Mac OS X al preservar y luego extraer toda la información que el sistema de archivos HFS + puede almacenar.
Las herramientas de archivo correspondientes en otros sistemas no saben dar un manejo especial a estos ._*
archivos, por lo que se desempaquetan como archivos normales. Dado que dichos archivos son bastante inútiles en otros sistemas, a menudo se consideran "archivos basura". En consecuencia, si un sistema que no es Mac OS X genera un archivo que incluye archivos normales que comienzan con ._
, las herramientas de desarchivado de Mac OS X intentarán decodificar esos archivos como información extendida.
Sin embargo, existe una forma no documentada (?) De hacer que los archivadores Mac OS X suministrados por el sistema se comporten como lo hacen en otros sistemas Unixy: la variable de entorno COPYFILE_DISABLE. Establecer esta variable (en cualquier valor, incluso la cadena vacía), evitará que los archivadores generen ._*
miembros de archivo para representar cualquier información extendida asociada con los archivos archivados. Su presencia también evitará que los archiveros intenten interpretar tales miembros del archivo como información extendida.
COPYFILE_DISABLE=1 tar czf new.tar.gz …
COPYFILE_DISABLE=1 tar xzf unixy.tar.gz …
Puede configurar esta variable en el archivo de inicialización de su shell si desea trabajar de esta manera la mayoría de las veces.
# disable special creation/extraction of ._* files by tar, etc. on Mac OS X
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Luego, cuando necesite volver a habilitar la función (para preservar / restaurar la información extendida), puede "desarmar" la variable para comandos individuales:
(unset COPYFILE_DISABLE; tar czf new-osx.tar.gz …)
Los archivadores en Mac OS X 10.4 también hacen algo similar, aunque usan una variable de entorno diferente: COPY_EXTENDED_ATTRIBUTES_DISABLE