tar (informática)

Alquitrán Caracteristicas
Extensión .tar
Tipo de Mimica application/x-tar
PUID x-fmt / 265
Firma 75 73 74 61 72( hexa )
Desarrollado por Laboratorios Bell
Versión inicial Enero de 1979
Tipo de formato Archivo
Contenido por tar.gz, tar.bz2, tar.xz
Especificación Formato abierto

El programa de alquitrán (Inglés t mono ar Chiver , literalmente "para archivador en cinta") es un software para el archivado de archivos de los sistemas de tipo estándar de UNIX . Fue creado en las primeras versiones de UNIX y estandarizado por los estándares POSIX .1-1988 y luego POSIX.1-2001 . Hay varias implementaciones de tar , la más utilizada es GNU tar.

Características técnicas

Un archivo de almacenamiento creado por tar no está comprimido. El archivo de almacenamiento creado a veces se denomina tarball .

El archivo casi siempre se realiza en disco. Sin embargo, el uso más común ahora es crear o leer un archivo de almacenamiento.

Tar conserva los derechos, propietario y grupo de archivos y directorios. También le permite guardar enlaces simbólicos y archivos especiales orientados a bloques o caracteres.

Extensiones y compresión

A menudo, una herramienta de compresión de datos comprime un archivo creado por tar . Los formatos más habituales son:

Utilidad de compresión Extensión Unix Extensión MS-DOS
comprimir .tar.Z .taz
gzip .tar.gz .tgz
bzip2 .tar.bz2 .tbz
lzma y xz .tar.lz .tlz
xz .tar.xz .txz
7zip .tar.7z

El software UNIX, y en particular los archivos de origen, se distribuyen con frecuencia como un archivo comprimido.

Formato de archivo

Básicamente, el formato utilizado consiste en una concatenación de los contenidos de los archivos. Cada archivo está precedido por un encabezado de 512 bytes , este tamaño corresponde al tamaño de un bloque en la versión 7 del sistema de archivos Unix.

Para mejorar la eficiencia de la escritura en cinta magnética, los bloques de 512 bytes se agrupan de forma predeterminada , lo que da como resultado bloques de 10 KB. El bloque final se rellena con ceros binarios.

Formato de encabezado

El formato original del encabezado del archivo en tar es el siguiente:

apellido Posición Tamaño Descripción
nombre 0 100 Nombre del archivo
Moda 100 8 Permisos
uid 108 8 Propietario (sin usar si es formato extendido)
gid 116 8 Grupo (sin usar si es formato extendido)
Talla 124 12 Tamaño del archivo en bytes. El tamaño debe ser cero si el archivo es un archivo especial (enlace simbólico, canalización con nombre, "dispositivo" por bloques o por caracteres, etc.)
mtime 136 12 Última modificación en tiempo Unix .
chksum 148 8 Suma de comprobación del encabezado donde este campo se considera lleno de espacios (valor ascii 32)
tipo bandera 156 1 Tipo de archivo
nombre de enlace 157 100 Nombre del archivo al que apunta este enlace simbólico (si el tipo indica un enlace simbólico)

Los campos "mode", "uid", "gid", "size", "mtime" y "chksum" se almacenan en ASCII en un sistema octal (base 8).

Los siguientes campos fueron agregados por el estándar POSIX 1003.1-1990.
Campo Posición Tamaño Descripción
magia 257 6 este campo indica si se trata de un encabezado extendido. Entonces es "ustar".
versión 263 2 los caracteres "00" indican un formato POSIX 1003.1-1990. Dos espacios indican el antiguo formato GNU (ya no se utilizará).
tu nombre 265 32 nombre del usuario propietario en forma de una cadena de caracteres de hasta 32 caracteres. Si está presente, este campo debe usarse en lugar de uid.
gname 297 32 nombre del grupo propietario en forma de una cadena de caracteres de hasta 32 caracteres. Si está presente, este campo debe usarse en lugar de gid.
devmajor 329 8 este campo representa el número mayor si este archivo es de tipo "dispositivo" por bloques o por caracteres
devminor 337 8 este campo representa el número menor, si este archivo es del tipo "dispositivo" por bloques o por caracteres
prefijo 345 155
final 500 0


Tipo de archivo
Valor Significado
'0' Archivo normal
( ASCII NUL ) Archivo normal (uso obsoleto)
'1' Enlace de hardware
'2' Enlace simbólico
'3' Archivo de caracteres especiales
'4' Archivo de bloque especial
'5' Directorio
'6' Tubo con nombre
'7' Archivo contiguo.
'gramo' POSIX.1-2001 encabezado extendido
'X' Encabezado extendido con metadatos POSIX.1-2001
'ARIZONA' Extensiones de formato POSIX.1-1988

Los nombres están codificados en ASCII y los valores son octales con dígitos codificados en ASCII para la portabilidad. Los valores se puntúan con un NUL o un espacio. Dado que se pueden usar 11 caracteres para especificar el tamaño del archivo, esto crea una limitación a 811 bytes, o 8  GB por archivo. Algunas versiones, como GNU tar, permiten la codificación de tamaño en formato binario para superar esta limitación.

Formato UStar

Las versiones actuales de tar utilizan un formato conocido como UStar definido por el estándar POSIX (IEEE P1003.1).

UStar permite nombres de archivo más largos y almacena atributos adicionales.

Posición Tamaño Campo
0 257 idéntico al formato original
257 5 ustar indica el tipo de UStar
262 3 Versión ( 00 )
265 32 Nombre del dueño)
297 32 Nombre del grupo)
329 8 Archivo especial (número principal)
337 8 Archivo especial (número menor)
345 155 Prefijo de archivo

Órdenes comunes

Estos son los comandos comunes para comprimir y descomprimir archivos de acuerdo con su extensión.

  • Mostrar lista de archivos:
tar -tf archive.tar
  • Extracción (posiblemente para un archivo o directorio específico):
tar -xvf archive.tar [fichier1... ]
  • Descompresión + extracción (específico para algunas implementaciones, como GNU tar o bsdtar):
tar -xzvf archive.tar.gz tar -xjvf archive.tar.bz2 tar -xYvf archive.tar.lzma

De manera más general, podemos lograr el mismo resultado con:

zcat archive.tar.gz | tar -xv bzcat archive.tar.bz2 | tar -xv

Nota: A veces se usa gzcat o gzip -cd .

  • Archivado:
tar -cvf fichier.tar MonRepertoire1 [MonRepertoire2... ]
  • Compresión y archivo:
tar -czvf archive.tar.gz MonRepertoire tar -cjvf archive.tar.bz2 MonRepertoire

o :

tar -cv MonRepertoire | gzip > archive.tar.gz tar -cv MonRepertoire | bzip2 > archive.tar.bz2

Esto creará un archivo comprimido en el directorio actual (por lo tanto, un solo archivo) que contiene todos los archivos en el directorio MyDirectory y sus subdirectorios.

  • copiar parte del árbol a otra ubicación:
tar -c . | ( cd /Repertoire/Destination; tar -xv )

Limitaciones de alquitrán

Tar es un formato diseñado para el almacenamiento incremental de datos en cintas magnéticas. Se ha vuelto popular entre los desarrolladores de sistemas similares a Unix porque es el único estándar que tiene en cuenta los metadatos del sistema de archivos.

Los nombres de archivo y los archivos señalados por enlaces simbólicos están limitados a 100 caracteres (nombre completo en el archivo, incluido el separador del nombre del directorio). El sistema de archivos ext2 acepta nombres de archivo de 255 bytes. Un sistema Linux acepta nombres absolutos de 4096 bytes.

El tamaño de cada archivo está limitado a 8 12 -1, o aproximadamente 68  GiB . Un archivo tar no tiene límite de tamaño.

Tar no tiene un índice centralizado. Para extraer un solo archivo del archivo, debe comenzar con el primer encabezado y leer los encabezados uno tras otro, en el orden del archivo tar. En medios físicamente lentos (CD-ROM, DVD, incluso discos duros e incluso casetes), leer bloques no contiguos para usar muy poco puede hacer que la extracción de uno o más archivos sea extremadamente lenta.

El almacenamiento de xattrs o ACL requiere extensiones no estándar.

El formato tar se utiliza a menudo junto con las utilidades de compresión. Sin embargo, el formato tar tiene la desventaja de tener muchos bytes sin usar en sus encabezados y de usar números en forma ASCII en un sistema octal. Por lo tanto, las empresas de servicios públicos deben comprimir datos que de hecho son inútiles y los números almacenados de manera muy fragmentada . En la teoría de la compresión de datos, hay pruebas de que agregar datos intencionalmente, incluso con el propósito de hacerlos más comprimibles , no es una buena estrategia en el caso general. Esto agrega entropía a la información. Como resultado, los datos comprimidos ocuparán más espacio en el caso general.

La suma de comprobación está solo en el encabezado. Además, el algoritmo tiene poca resistencia a errores. Solo se necesitan dos bits bien colocados para cambiar para que este error no se detecte. Para el almacenamiento y la transferencia en red, por lo tanto, se recomienda que el programa de compresión utilizado junto con tar utilice un algoritmo de verificación de integridad (por ejemplo , CRC32B , MD5 , SHA1 , etc.).

Teóricamente, los viejos formatos GNU y POSIX pueden entrar en conflicto y engañar a algunos programas.

Precaución de uso

Un tarbomb es un archivo tar que contiene una gran cantidad de archivos en la raíz del archivo. Cuando no se archivan, los archivos tarbomb ahogan el contenido del directorio de trabajo o sobrescriben los archivos de usuario que tienen el mismo nombre que el archivo. En el mejor de los casos, el usuario debe seleccionar uno por uno los archivos aparecidos para copiarlos en un nuevo directorio, esta clasificación puede resultar un trabajo tedioso si los archivos iniciales y los nuevos están muy mezclados.

Por lo tanto, es habitual que los archivos estén contenidos en un directorio que se archivará, en lugar de archivarlos directamente. También puede extraer los archivos en un subdirectorio dedicado o examinar el contenido del archivo de antemano con la opción t.

A diferencia de GNU tar, el tar original permitía crear y extraer archivos con una ruta absoluta, lo que puede ser peligroso. Sin embargo, todavía es posible referirse relativamente a directorios principales (../).

Interoperabilidad

Los números se almacenan en formato ASCII para evitar problemas de endismo .

El formato tar está diseñado para sistemas similares a Unix y nunca ha pretendido ser interoperable con otros sistemas.

La codificación del nombre utiliza la forma binaria del nombre del archivo, sin especificar qué codificación se utilizó, lo que puede causar problemas para Windows, en particular.

En sistemas similares a Unix, todos los caracteres, excepto '/' y el carácter NUL ('\ 0'), están permitidos para los nombres de archivo. En Windows, se prohíbe una cierta cantidad de caracteres ('\\', ':', ';', '+', etc.). Entonces, Windows no puede extraer correctamente dichos archivos.

Implementaciones

  • Alquitrán GNU
  • bsdtar, una implementación distribuido bajo los términos de la nueva licencia BSD , que se utiliza sobre todo en Mac OS X .
  • star, una implementación desarrollada por Jörg Schilling.
  • Tar de Oracle, anteriormente Tar de Solaris.
  • pdtar, una implementación realizada en 1985 por John Gilmore , que luego se convirtió en GNU tar.
  • SharpZipLib, una implementación de Microsoft .NET .

Alquitrán GNU

GNU tar es la implementación del programa tar por parte del Proyecto GNU . Es un software gratuito distribuido bajo los términos de la Licencia Pública General GNU . Es la implementación POSIX más utilizada en la actualidad.

Historial de versiones
Versión Fecha de lanzamiento Principales cambios
1,26 12 de marzo de 2011
  • Se corrigió la opción --verify ( error en la versión 1.24).
  • Corrección de nombres de archivo largos de archivos PAX.
  • Solucione las incompatibilidades POSIX en FreeBSD, NetBSD y Tru64.
  • Se corrigió un error en --one-file-system --listed-incremental .
1,25 7 de noviembre de 2010
1,24 24 de octubre de 2010
  • En tiempo --full opción
1,23 3 de marzo de 2010
  • Nueva opción de línea de comando: advertencia
  • Nueva opción de línea de comando --level
1,22 5 de marzo de 2009
  • Soporte de compresión XZ (opción --xz )
  • Opción corta -J como atajo para --xz
  • -I atajo para la opción --use-compress-program
  • La opción --no-recursive funciona con la opción --incremental
1,21 27 de diciembre de 2008
  • Nueva opción --no-auto-compress
  • El soporte para el software de control de versiones y la opción --exclude-vcs es compatible con Darcs , Mercurial y Bazaar .
1,20 14 de abril de 2008
  • Nueva opción --lzma para seleccionar el algoritmo de compresión LZMA .
  • Nueva opción - hard-desreference
  • Nueva opción --checkpoint-action
  • Nuevas opciones '--no-check-device y --check-device
1,19 10 de octubre de 2007
1,18 29 de junio de 2007
1,17 8 de junio de 2007
1.16.1 9 de diciembre de 2006
1,16 21 de octubre de 2006
1.15.91 16 de junio de 2006
1.15.90 19 de febrero de 2006
1.15.1 21 de diciembre de 2004
1,15 20 de diciembre de 2004
  • Los archivos comprimidos se reconocen automáticamente, ya no es útil especificar las opciones -Z , -z o -j para leerlos.
1.14.90 2 de septiembre de 2004
1,14 10 de mayo de 2004
  • Primer lanzamiento importante desde 1999 .
 

Notas y referencias

  1. (in) Testbed realizado en tres de ellos, bsdtar, GNU tar y star - Jan Psota, octubre de 2007.
  2. El programa utiliza o crea nombres de archivo en la codificación incorrecta  " .
  3. ¿Cómo puedo crear un zip / tgz en Linux de modo que Windows tenga los nombres de archivo adecuados?  " .
  4. (in) página de manual para bsdtar - implementación distribuida con la biblioteca libarchive .
  5. (en) [1] .
  6. (in) Star - Implementación sólida de tar compatible con POSIX .
  7. (en) Tar de Oracle .
  8. (in) Ejemplo publicado en marzo de 2008 .
  9. (in) Solaris tar , p. Ej. Publicado en marzo de 2005.
  10. (in) pdtar , una implementación del programa tar realizado en 1985 por John Gilmore.
  11. (en) SharpZipLib .

Ver también

Artículos relacionados

enlaces externos