3 votos

Archivos inesperados que aparecen con alquitrán en OS X 10.6.4

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

Creo que nunca antes había visto estos archivos extra que empiezan por '.'. Si yo x el archivo, ls -a no los muestra. ¿Qué son?

4voto

AnonJr Puntos 111

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

1voto

roo Puntos 3294

Creo que encontrarás que esos archivos (o directorios) vinieron empaquetados dentro del archivo .tar.gz. No es normal, pero cualquier archivo puede ir en un tar.

1voto

zigdon Puntos 416

Comportamiento

Para aclarar el tema, la siguiente EPM 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

Así que cada archivo y directorio tiene un archivo ._ añadido al archivo tar en el mismo directorio, como dijo mipadi. Este tar, llamémoslo mactar, evita las colisiones ignorando los archivos que empiezan con ._ 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 es simplemente ignorada por el alquitrán, y también lo es el archivo p/._b, a pesar de que está explícitamente incluido en la invocación del CLI. Por lo tanto, no pueden ocurrir colisiones.

Controlando el alquitrán

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

Sin embargo, la generación de los archivos para los meta-forks puede ser desactivada estableciendo una variable de entorno, así que: export COPYFILE_DISABLE=true .

Historia

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X