GNU/Linux >> Tutoriales Linux >  >> Linux

¿Crear un archivo Tar de un directorio, a excepción de los archivos ocultos?

Quiero crear un archivo tar de un directorio específico (con sus subdirectorios, por supuesto). Pero cuando lo hago, usando el comando tar, obtengo una lista de archivos que se incluyeron, por ejemplo:

a calendar_final/._style.css

a calendar_final/style.css

Como puede ver, hay dos versiones del mismo archivo. Esto se aplica a todos los archivos, y hay muchos. ¿Cómo excluyo los archivos temporales, con el prefijo ._, del archivo tar?

Respuesta aceptada:

Publicó en un comentario que está trabajando en un sistema Mac OS X. Esta es una pista importante sobre el propósito de estos ._* archivos.

Estos ._* Las entradas del archivo son fragmentos de datos de AppleDouble que contienen la información adicional asociada con el archivo correspondiente (el que no tiene ._). prefijo). Son generados por el copyfile(3) específico de Mac OS X familia de funciones. Los blobs AppleDouble almacenan datos de control de acceso (ACL) y atributos extendidos (comúnmente, Finder banderas y "bifurcaciones de recursos", pero xattrs se pueden usar para almacenar cualquier tipo de datos).

Las herramientas de archivo de Mac OS X proporcionadas por el sistema (bsdtar (también enlazado como tar ), gnutar y pax ) generará un ._* miembro de archivo para cualquier archivo que tenga información extendida asociada con él; en el modo "desarchivar", también descodificarán esos 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 descomprimen como archivos normales. Dado que dichos archivos son bastante inútiles en otros sistemas, a menudo se consideran "archivos basura". Del mismo modo, 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 de 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 del archivo para representar cualquier información extendida asociada con los archivos archivados. Su presencia también evitará que los archivadores intenten interpretar dichos 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 conservar/restaurar la información extendida), puede "deshabilitar" 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

Relacionado:¿Redirigir STDERR y STDOUT a diferentes variables sin archivos temporales?
Linux
  1. ¿Crear un archivo Tar dividido en bloques de un tamaño máximo?

  2. Linux:¿problemas de permisos para el directorio compartido en un servidor?

  3. ¿Crear directorio de destino al extraer Tarball?

  4. Cómo crear un archivo zip compatible con Linux de un directorio en una Mac

  5. Concatenar múltiples archivos tar en un solo comando

Comando Tar en Linux (Crear y Extraer Archivos)

Crear directorio de inicio para usuarios existentes en Linux

Comando tar de Linux:cómo comprimir archivos en Linux

Cómo tar tipos de archivos específicos (extensiones) en un directorio

Extraiga archivos específicos en un archivo tar usando un comodín

¿Cómo tar archivos con un orden ordenado?