Archivos inesperados que aparecen con tar en OS X 10.6.4

3

Al empaquetar y desempaquetar un archivo tar en OS X hoy, me encuentro mirando cosas como:

tar tzf ../tanuki-3.5.6.tar.gz  
./._.
./ 
./._bin

No creo que haya aparecido estos archivos adicionales comenzando con un '.' antes de. Si yo x el archivo, ls -a no los muestra. ¿Qué son?

    
pregunta bmargulies 15.11.2010 - 16:10

3 respuestas

4

Son tenedores de recursos. El sistema de archivos de la Mac admite múltiples bifurcaciones, y algunos archivos de Mac tienen dos, una bifurcación de datos y una bifurcación de recursos. La mayoría de los sistemas de archivos no admiten varias bifurcaciones, por lo que las herramientas dividirán la bifurcación de recursos en un archivo separado con el prefijo ._ .

    
respondido por el mipadi 15.11.2010 - 18:32
1

Creo que encontrará que esos archivos (o directorios) se empaquetaron dentro del archivo .tar.gz. No es normal, pero cualquier archivo puede ir a un archivo tar.

    
respondido por el Jack M. 15.11.2010 - 18:26
1

Comportamiento

En aras de la claridad sobre el problema, el siguiente MWE ilustra lo que está sucediendo:

cas$ tar --version
bsdtar 2.6.2 - libarchive 2.6.2
cas$ mkdir o
cas$ touch o/a o/b
cas$ tar cv o > /dev/null
a ./._o
a o
a o/._a
a o/a
a o/._b
a o/b

Entonces, cada archivo y directorio tiene un archivo ._ agregado al archivo tar en el mismo directorio, como dijo mipadi. Este tar, llamémoslo mactar, evita colisiones al ignorar los archivos que comienzan por ._ en la entrada, por ejemplo, con:

mkdir p && touch p/._a p/._b
cas$ tar cv p p/._b > /dev/null
a ./._p
a p

la existencia del archivo p /._ a simplemente es ignorada por tar, y también lo es el archivo p /._ b, a pesar de que se incluye explícitamente en la invocación de la CLI. Por lo tanto, no se pueden producir colisiones.

Control de alquitrán

Si tiene antecedentes de Unix, es probable que no esté contento con este comportamiento. El mactar carece de la documentación esperada: la página del manual es para el archivo de Free BSD regular y no menciona esta idiosincrasia.

Sin embargo, la generación de archivos para las meta forks se puede desactivar al establecer una variable de entorno, por lo que: export COPYFILE_DISABLE=true .

Historia

No tengo muy claro el momento, pero OSX comenzó con el Free BSD tar regular, luego Apple hizo circular una utilidad adicional, tar_hfs que fue el antepasado de mactar, y luego, creo que con Leopard, cambió /usr/bin/tar ser mactar.

    
respondido por el Charles Stewart 13.11.2011 - 22:29

Lea otras preguntas en las etiquetas