Página principal » cómo » ¿Cuál es la ventaja de usar el formato de archivo Tar hoy?

    ¿Cuál es la ventaja de usar el formato de archivo Tar hoy?


    El formato de archivo de alquitrán es, en años de computación, un verdadero Matusalén, pero aún hoy en día se usa mucho. Lo que hace que el formato tar sea tan útil mucho después de su inicio.?

    La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..

    La pregunta

    El lector Superusuario MarcusJ siente curiosidad por el formato tar y por qué lo seguimos utilizando después de todos estos años:

    Sé que el tar se creó para los archivos de cinta en el pasado, pero hoy tenemos formatos de archivo que agregan archivos y realizan la compresión dentro del mismo formato de archivo lógico..

    Preguntas:

    • ¿Existe una penalización en el rendimiento durante las etapas de agregación / compresión / descompresión por usar tar encapsulado en gzip o bzip2, en comparación con el uso de un formato de archivo que hace agregación y compresión en la misma estructura de datos? Supongamos que el tiempo de funcionamiento del compresor que se está comparando es idéntico (por ejemplo, gzip y Deflate son similares).
    • ¿Existen características del formato de archivo tar que otros formatos de archivo, como .7z y .zip no tienen??
    • Dado que tar es un formato de archivo tan antiguo, y hoy existen formatos de archivo más nuevos, ¿por qué es que tar (ya sea encapsulado en gzip, bzip2 o incluso el nuevo xz) todavía se usa hoy en día en GNU / Linux, Android, BSD y otros sistemas UNIX similares? sistemas operativos, para transferencias de archivos, fuentes de programas y descargas binarias, y en ocasiones incluso como un formato de administrador de paquetes?

    Esa es una pregunta perfectamente razonable; Mucho ha cambiado en el mundo de la computación en los últimos treinta años, pero todavía estamos usando el formato tar. Cuál es la historia?

    La respuesta

    Allquixotic, colaborador del Superusuario, ofrece información sobre la longevidad y la funcionalidad del formato tar:

    Parte 1: Rendimiento

    Aquí hay una comparación de dos flujos de trabajo separados y lo que hacen.

    Tienes un archivo en disco blah.tar.gz que es, por ejemplo, 1 GB de datos comprimidos con gzip que, cuando no están comprimidos, ocupan 2 GB (una relación de compresión del 50%).

    La forma en que crearía esto, si tuviera que archivar y comprimir por separado, sería:

    Archivos de tar cf blah.tar ... 

    Esto daría lugar a blah.tar que es una mera agregación de la archivos ...  en forma no comprimida.

    Entonces harías

    gzip blah.tar 

    Esto leería el contenido de blah.tar desde el disco, comprímalos a través del algoritmo de compresión gzip, escriba el contenido en blah.tar.gz, luego desvincular (borrar) el archivo blah.tar.

    Ahora, vamos a descomprimir!

    Camino 1

    Tienes blah.tar.gz, De una manera u otra.

    Usted decide ejecutar:

    gunzip blah.tar.gz 

    Esta voluntad

    • LEA el contenido de datos comprimidos de 1GB de blah.tar.gz.
    • PROCESAR los datos comprimidos a través del gzip descompresor en la memoria.
    • A medida que el búfer de memoria se llena con "un bloque" de datos, ESCRIBA los datos sin comprimir en el archivoblah.tar En el disco y repita hasta que se lean todos los datos comprimidos..
    • Desvincular (borrar) el archivo blah.tar.gz.

    Ahora tu tienes blah.tar en el disco, que no está comprimido pero contiene uno o más archivos, con una sobrecarga de estructura de datos muy baja. El tamaño del archivo es probablemente un par de bytes más grande que la suma de todos los datos del archivo sería.

    Tu corres:

    tar xvf blah.tar 

    Esta voluntad

    • LEA los 2GB de contenido de datos sin comprimir de blah.tar y el alquitrán Estructuras de datos del formato de archivo, incluida información sobre permisos de archivos, nombres de archivos, directorios, etc..
    • ESCRIBA al disco los 2GB de datos más los metadatos. Esto implica: convertir la estructura de datos / información de metadatos en la creación de nuevos archivos y directorios en el disco, según corresponda, o volver a escribir los archivos y directorios existentes con nuevos contenidos de datos.

    Los datos totales que LEER del disco en este proceso fue 1 GB (para gunzip) + 2 GB (para tar) = 3 GB.

    Los datos totales que ESCRIBIR El disco en este proceso fue de 2 GB (para gunzip) + 2 GB (para tar) + algunos bytes para metadatos = aproximadamente 4 GB.

    Camino 2

    Tienes blah.tar.gz, De una manera u otra.

    Usted decide ejecutar:

    tar xvzf blah.tar.gz 

    Esta voluntad

    • LEA el contenido de datos comprimidos de 1GB de blah.tar.gz, un bloque a la vez, en la memoria.
    • PROCESAR los datos comprimidos a través del gzip descompresor en la memoria.
    • A medida que el búfer de memoria se llena, lo hará tubo que los datos, en memoria, hasta el alquitrán analizador de formato de archivo, que leerá la información sobre metadatos, etc. y los datos de archivos sin comprimir.
    • A medida que la memoria intermedia se llena en el alquitrán analizador de archivos, ESCRIBIRÁ los datos sin comprimir en el disco, creando archivos y directorios y llenándolos con el contenido sin comprimir.

    Los datos totales que LEER del disco en este proceso fue 1GB de datos comprimidos, punto.

    Los datos totales que ESCRIBIR El disco en este proceso fue de 2 GB de datos sin comprimir + unos pocos bytes para metadatos = aproximadamente 2 GB.

    Si observa, la cantidad de E / S de disco en Camino 2 es idéntico a la E / S del disco realizada por, digamos, la Cremallera o7-Zip Programas, ajustando por cualquier diferencia en la relación de compresión..

    Y si su relación de compresión es su preocupación, use la Xz compresor para encapsular alquitrán, y tiene un archivo TAR LZMA2, que es tan eficiente como el algoritmo más avanzado disponible para 7-Zip :-)

    Parte 2: Características

    alquitrán almacena los permisos de UNIX dentro de los metadatos de sus archivos, y es muy conocido y probado para empaquetar con éxito un directorio con todo tipo de permisos diferentes, enlaces simbólicos, etc. Hay más de unos pocos casos en los que uno podría necesitar pegar un montón de archivos en un solo archivo o flujo, pero no necesariamente lo comprime (aunque la compresión es útil y se usa con frecuencia).

    Parte 3: Compatibilidad

    Muchas herramientas se distribuyen en formato fuente o binario como .tar.gz o .tar.bz2 porque es un formato de archivo de "denominador común más bajo": al igual que la mayoría de los usuarios de Windows tienen acceso a los descompresores .zip o .rar, la mayoría de las instalaciones de Linux, incluso los más básicos, tendrán acceso al menos a alquitrán y tiras, sin importar la edad o el tamaño. Incluso los firmwares de Android tienen acceso a estas herramientas..

    Los nuevos proyectos dirigidos a audiencias que ejecutan distribuciones modernas pueden distribuirse en un formato más moderno, como .tar.xz (usando el formato de compresión Xz (LZMA), que se comprime mejor que gzip o bzip2), o .7z, que es similar los formatos de archivo Zip o Rar en que comprime y especifica un diseño para encapsular múltiples archivos en un solo archivo.

    No ves .7z usado más a menudo por la misma razón por la que la música no se vende en las tiendas de descargas en línea en formatos completamente nuevos como Opus o videos en WebM. Compatibilidad con personas que ejecutan sistemas antiguos o muy básicos..


    ¿Tienes algo que agregar a la explicación? Apague el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.