Cuando tar ciertos archivos en OS X:
tar cvf foo.tar foo
Produce un archivo extra ._foo
en el tarball:
./._foo
foo
que solo aparece si lo extraigo en un sistema operativo que no sea Mac. ¡Pero ._foo
no existe en mi sistema de archivos! ¿Que esta pasando? ¿Cómo puedo deshacerme de él?
Respuestas:
El tar de OS X usa el formato AppleDouble para almacenar atributos extendidos y ACL.
El tar de OS X también sabe cómo convertir los miembros ._ a formatos nativos, pero los archivos ._ generalmente se guardan cuando los archivos se extraen en otras plataformas. Puede indicarle a tar que no incluya los metadatos configurando COPYFILE_DISABLE en algún valor:
man copyfile
ls -l@
muestra las claves y tamaños de atributos extendidos,ls -le
imprime ACLxattr -l
enumera las claves y valores de atributos extendidosxattr -c
borra todos los atributos extendidos (-d no se puede usar solo)chmod -N
elimina las ACLInformación almacenada como atributos extendidos:
fuente
env COPYFILE_DISABLE tar -cf archive.tar my_folder/
.cat
otype
para ver lo que hay dentro, por lo menos. Y, por lo general, es un texto simple que se ingresó manualmente allí. No lo tiraría por hacer una copia de seguridad, pero puede ser basura en caso de que desee distribuir algo multiplataforma y especialmente si está allí por error. Solo decir que la opción de dejarlos es bastante válida.A partir de
bsdtar 3.0.3 - libarchive 3.0.3
(y quizás antes) hay una nueva opción para elbsdtar
comando llamado--disable-copyfile
para suprimir la creación de._
archivos.fuente
bsdtar 2.8.3 - libarchive 2.8.3
de10.7.5
la--disable-copyfile
que no se documenta pero está disponible, no obstante.Los
._
archivos son tenedores de recursos como se menciona en otras respuestas. Sin embargo, hay una mejor manera de deshacerse de ellos al usartar
:También hay una
dot_clean
utilidad para limpiar estos archivos (creo que generalmente se usa para almacenamiento externo).fuente
Aquí hay un script de Python para eliminar esos archivos. Debería funcionar en cualquier sistema operativo popular.
No probado exhaustivamente, ¡use bajo su propio riesgo!
fuente
El carácter de punto, ".", Se utiliza en la plataforma Mac como un indicador de archivo oculto. En Windows, es el carácter "$". De todos modos, el archivo ._foo probablemente contiene información específica de OS X y recomendaría no eliminarlo. En otros sistemas, tendrá que ignorarlo, o alguien aquí podría proporcionarle un script que ocultará los archivos y carpetas que comienzan con un ".".
fuente