Un problema con los .tar.gz
archivos es que, cuando trato de enumerar el contenido de un archivo, la computadora realmente lo descomprime, lo que llevaría mucho tiempo si el archivo es grande.
Otros formatos de archivo como .7z
, .rar
, .zip
no tienen este problema. Listar sus contenidos toma solo un instante.
En mi ingenua opinión, este es un gran inconveniente del .tar.gz
formato de archivo.
Así que en realidad tengo 2 preguntas:
- ¿Por qué la gente usa
.tar.gz
tanto, a pesar de este inconveniente? - ¿Qué opciones (me refiero a otro software o herramientas) tengo si quiero la capacidad de "listado de contenido instantáneo"?
tar
compression
gzip
archive
Dave.d
fuente
fuente
Respuestas:
Es importante entender que hay una compensación aquí.
tar
significa archivador de cinta . En una cinta, la mayoría de las veces se lee y escribe secuencialmente. Las cintas rara vez se usan hoy en día, perotar
todavía se usan por su capacidad de leer y escribir sus datos como una secuencia.Tu puedes hacer:
No se puede hacer eso con
zip
o similar.Ni siquiera puede enumerar el contenido de un
zip
archivo sin almacenarlo localmente en un archivo de búsqueda primero. Piensa como:no funciona
Para lograr esa lectura rápida del contenido,
zip
o similar, es necesario construir un índice. Ese índice se puede almacenar al principio del archivo (en cuyo caso solo se puede escribir en archivos normales, no en secuencias), o al final, lo que significa que el archivador debe recordar a todos los miembros del archivo antes de imprimirlo al final y significa que un archivo truncado puede no ser recuperable.Eso también significa que los miembros del archivo deben comprimirse individualmente, lo que significa una relación de compresión mucho menor, especialmente si hay muchos archivos pequeños.
Otro inconveniente con formatos como
zip
es que el archivo está vinculado a la compresión, no puede elegir el algoritmo de compresión. Vea cómo lostar
archivos solían estar comprimidos concompress
(tar.Z
), luego congzip
, luegobzip2
, axz
medida que se creaban nuevos algoritmos de compresión más eficaces. Lo mismo ocurre con el cifrado. ¿Quién confiaría enzip
el cifrado hoy en día?Ahora, el problema con los
tar.gz
archivos no es que necesites descomprimirlos. La descompresión a menudo es más rápida que leer un disco (probablemente encontrará que enumerar el contenido de un archivo tgz grande es más rápido que enumerar el mismo sin comprimir cuando no está en la memoria caché), pero que necesita leer todo el archivo.No poder leer el índice rápidamente no es realmente un problema. Si prevé la necesidad de leer el contenido de la tabla de un archivo a menudo, puede almacenar esa lista en un archivo separado. Por ejemplo, en el momento de la creación, puede hacer:
Un problema mayor de la OMI es el hecho de que, debido al aspecto secuencial del archivo, no puede extraer archivos individuales sin leer toda la sección inicial del archivo que lo conduce. IOW, no puedes hacer lecturas aleatorias dentro del archivo.
Ahora, para archivos buscables, no tiene por qué ser así.
Si comprime su
tar
archivo comprimidogzip
, que lo comprime como un todo, el algoritmo de compresión utiliza datos vistos al principio para comprimir, por lo que debe comenzar desde el principio para descomprimir.Pero el
xz
formato se puede configurar para comprimir datos en fragmentos individuales separados (lo suficientemente grande como para que la compresión sea eficiente), eso significa que, siempre y cuando mantenga un índice al final de esos fragmentos comprimidos, para archivos buscables, accederá a datos sin comprimir al azar (al menos en fragmentos).pixz
(paraleloxz
) usa esa capacidad al comprimirtar
archivos para agregar también un índice del inicio de cada miembro del archivo al final delxz
archivo.Por lo tanto, para archivos buscables, no solo puede obtener una lista del contenido del archivo tar instantáneamente (sin metadatos) si se han comprimido con
pixz
:Pero también puede extraer elementos individuales sin tener que leer todo el archivo:
Ahora, por qué las cosas como
7z
ozip
raramente se usan en Unix es principalmente porque no pueden archivar archivos de Unix. Han sido diseñados para otros sistemas operativos. No puede hacer una copia de seguridad fiel de los datos con esos. No pueden almacenar metadatos como el propietario (id y nombre), permiso, no pueden almacenar enlaces simbólicos, dispositivos, quince ..., no pueden almacenar información sobre enlaces duros y otra información de metadatos como atributos extendidos o ACL.Algunos de ellos ni siquiera pueden almacenar miembros con nombres arbitrarios (algunos se ahogarán con la barra diagonal inversa o la nueva línea o los dos puntos, o los nombres de archivo no ASCII) (
tar
aunque algunos formatos también tienen limitaciones).¡Nunca descomprima un archivo tgz / tar.xz en el disco!
En caso de que no es obvio, uno no utiliza
tgz
otar.bz2
,tar.xz
... archivo como:Si tienes un
.tar
archivo sin comprimir en tu sistema de archivos, es que has hecho algo mal.El punto principal de esos
xz
/bzip2
/gzip
ser compresores de flujo es que se pueden usar sobre la marcha, en tuberías como enAunque las
tar
implementaciones modernas saben cómo invocarunxz
/gunzip
/bzip2
por sí mismas, entonces:generalmente también funcionaría (y nuevamente descomprimiría los datos sobre la marcha y no almacenaría la versión descomprimida del archivo en el disco).
Ejemplo
Aquí hay un árbol de fuentes del kernel de Linux comprimido con varios formatos.
Primero, como se señaló anteriormente, los 7z y los zip son ligeramente diferentes porque no pueden almacenar los pocos enlaces simbólicos allí y les falta la mayoría de los metadatos.
Ahora, algunos tiempos para enumerar el contenido después de haber vaciado los cachés del sistema:
Notarás que enumerar el
tar.xz
archivo es más rápido que el.tar
de esta PC de 7 años, ya que leer esos megabytes adicionales del disco lleva más tiempo que leer y descomprimir el archivo más pequeño.Entonces, OK, enumerar los archivos con 7z o zip es más rápido, pero eso no es un problema, como dije, se soluciona fácilmente almacenando la lista de archivos junto al archivo:
Incluso más rápido que 7z o zip incluso después de soltar cachés. También notará que el tamaño acumulativo del archivo y su índice es aún más pequeño que los archivos zip o 7z.
O use el
pixz
formato indexado:Ahora, para extraer elementos individuales del archivo, el peor de los casos para un archivo tar es acceder al último elemento:
Eso es bastante malo ya que necesita leer (y descomprimir) todo el archivo. Comparar con:
Parece que mi versión de 7z no puede hacer acceso aleatorio, por lo que parece ser aún peor que
tar.xz
:Ahora, ya que tenemos nuestro
pixz
generado desde antes:Es más rápido pero aún relativamente lento porque el archivo contiene algunos bloques grandes:
Por lo tanto,
pixz
aún necesita leer y descomprimir una gran cantidad de datos (hasta a) ~ 19 MB.Podemos hacer que el acceso aleatorio sea más rápido al hacer que los archivos sean bloques más pequeños (y sacrificar un poco de espacio en disco):
fuente
.tar.gz
puede llevar demasiado tiempo. Especialmente si el medio es lento. Es entonces cuando el formato de un archivo se convierte en la diferencia entre lo imposible y lo práctico.Los administradores corporativos y académicos a menudo son más notorios cuando las cosas se rompen, que apreciados cuando las cosas funcionan de manera eficiente. Tales ambientes generan miedo a la experimentación y desprecio por la novedad .
Dar ( D ISK Ar Chiver) cuenta con una serie de alquitrán -como características, además de mejoras tales como un rápido acceso aleatorio para archivos comprimidos, catalogación AKA, la indexación AKA, conocido como "contenido instantáneo lista" ...
Ver también: ¿ Formatos de compresión con buen soporte para acceso aleatorio dentro de archivos?
fuente