2012-01-07 12 views
19

Escribo mi propio archivo de tar. Todo funciona bien dentro de mi aplicación (incluso leyendo tars generados con otras herramientas), pero no puedo hacer que mis archivos tar trabajen con lectores de archivos tar de terceros. Así que intenté construir un archivo tar en la línea de comando, construyendo uno con mi código y binario comparando los dos.Comando Tar en mac os x agregando archivos "ocultos", ¿por qué?

Pero parece que hay un problema:

Tengo un archivo de texto denominado Test.txt que quiero añadir a mi alquitrán, así que ejecute el siguiente comando en el terminal:

tar -c -f x.tar Test.txt 

al hacer esto:

tar -tf x.tar 

consigo la siguiente lista:

./._Test.txt 
Test.txt 

Esto está en la Terminal en Mac OS X Lion.

¿De dónde viene ese archivo ./._Test.txt? No lo veo al hacer un ls -a

Al inspeccionar el contenido del alquitrán, parece que hay algunos datos binarios, pero no tengo idea de dónde provienen.

Respuesta

4

Es una representación de la fuente de recursos/atributos extendidos del archivo.

Pruebe ls [email protected] Test.txt y xattr -l Test.txt para ver qué material adicional OSX ha añadido al archivo.

30

Usted puede añadir lo siguiente a su archivo .bashrc -

export COPYFILE_DISABLE=true 

O bien, puede añadir esta opción a su comando tar en el tiempo de extracción

tar -xzpvf x.tar --exclude="._*" 
+4

El parámetro exclude no funciona aquí, utilizando el comando de exportación. –

+1

'--exclude' funcionó para mí (después de haber entrado en una situación en la que desencajar incluso en OS X estaba contaminando todo con' ._'-files). –

17

A partir de bsdtar 3.0.3 - libarchive 3.0.3 (y tal vez antes) hay una nueva opción (Mac OS X específica) para el comando bsdtar llamado --disable-copyfile para suprimir la creación de archivos ._.

+4

Con 'bsdtar 2.8.3 - libarchive 2.8.3' de' 10.7.5' el '--disable-copyfile' no está documentado, pero está disponible de todos modos. –