Sé que tar
se hizo para archivos de cinta en el pasado, pero hoy tenemos formatos de archivo que agregan archivos y realizan compresión dentro del mismo formato de archivo lógico.
Preguntas:
¿Existe una penalización de rendimiento durante las etapas de agregación / compresión / descompresión por usar
tar
encapsulado engzip
obzip2
, en comparación con el uso de un formato de archivo que agrega y comprime en la misma estructura de datos? Suponga que el tiempo de ejecución del compresor que se está comparando es idéntico (por ejemplo, gzip y Deflate son similares).¿Hay características del
tar
formato de archivo que otros formatos de archivo, como.7z
y.zip
no tienen?Dado que
tar
es un formato de archivo tan antiguo y existen formatos de archivo más nuevos hoy en día, ¿por quétar
(ya sea encapsuladogzip
,bzip2
o incluso el nuevoxz
) todavía tan ampliamente utilizado hoy en GNU / Linux, Android, BSD y otros sistemas operativos UNIX similares para archivos? transferencias, fuente de programas y descargas binarias, y algunas veces incluso como formato de administrador de paquetes?
tar xvzf
es más difícil que7z -x
...tar xvzf
, ¡los datos sin comprimir no se escriben en el disco duro en.tar
formato! Tienes razón en que si corristegunzip blah.tar.gz
y luegotar xf blah.tar
, escribiría los datos en el disco dos veces (una vez como .tar y otra vez como archivos en el sistema de archivos), pero en realidad nadie lo hace de esa manera. Lostar xzf
usos de una tubería UNIX (básicamente una copia de la memoria) para transferir los datos sin comprimir desdegzip
(o lo que sea compresor) atar
, por lo que los datos se no se escribe en el disco en.tar
formato.tar
(especialmente comprimido) se comporta terriblemente cuando se trata de corrupción de datos. Pequeños datos de redundancia / recuperación agregados por formatos modernos valen oroRespuestas:
Parte 1: rendimiento
Aquí hay una comparación de dos flujos de trabajo separados y lo que hacen.
Tiene un archivo en el disco
blah.tar.gz
que es, digamos, 1 GB de datos comprimidos con gzip que, cuando no está comprimido, ocupa 2 GB (por lo tanto, una relación de compresión del 50%).La forma en que crearía esto, si hiciera el archivo y la compresión por separado, sería:
Esto daría como resultado
blah.tar
una mera agregación de lafiles ...
forma no comprimida.Entonces harías
Esto leería el contenido del
blah.tar
disco, lo comprimiría a través del algoritmo de compresión gzip, escribiría el contenido yblah.tar.gz
luego desvincularía (eliminaría) el archivoblah.tar
.¡Ahora, descomprimamos!
Camino 1
Tienes
blah.tar.gz
, de una forma u otra.Decides correr:
Esta voluntad
blah.tar.gz
.gzip
descompresor en la memoria.blah.tar
en el disco y repita hasta que se lean todos los datos comprimidos.blah.tar.gz
.Ahora, tiene
blah.tar
en el disco, que está descomprimido pero contiene uno o más archivos dentro, con una carga de estructura de datos muy baja. El tamaño del archivo es probablemente un par de bytes mayor que la suma de todos los datos del archivo.Tu corres:
Esta voluntad
blah.tar
y lastar
estructuras de datos del formato de archivo, incluida la información sobre permisos de archivos, nombres de archivos, directorios, etc.El total de datos que LEIMOS del disco en este proceso fue de 1 GB (para gunzip) + 2 GB (para tar) = 3 GB.
El total de datos que escribimos en el disco en este proceso fue de 2 GB (para gunzip) + 2 GB (para tar) + unos pocos bytes para metadatos = aproximadamente 4 GB.
Camino 2
Tienes
blah.tar.gz
, de una forma u otra.Decides correr:
Esta voluntad
blah.tar.gz
un bloque a la vez en la memoria.gzip
descompresor en la memoria.tar
analizador de formato de archivo, que leerá la información sobre metadatos, etc. y los datos del archivo sin comprimir.tar
analizador de archivos, ESCRIBIRÁ los datos sin comprimir en el disco, creando archivos y directorios y llenándolos con el contenido sin comprimir.El total de datos que LEIMOS del disco en este proceso fue de 1 GB de datos comprimidos, punto.
El total de datos que escribimos en 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 Way 2 es idéntica a la E / S de disco realizada, por ejemplo, por los programas
Zip
o 7-Zip , ajustando las diferencias en la relación de compresión.Y si le preocupa la relación de compresión, use el
Xz
compresor para encapsulartar
, y tiene el archivo TAR LZMA2 , que es tan eficiente como el algoritmo más avanzado disponible para 7-Zip :-)Parte 2: características
tar
almacena los permisos de Unix dentro de sus metadatos de archivo, 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 unas pocas instancias en las que uno podría necesitar guardar un montón de archivos en un solo archivo o secuencia, pero no necesariamente comprimirlo (aunque la compresión es útil y de uso frecuente).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 "mínimo común denominador": al igual que la mayoría de los usuarios de Windows tienen acceso a 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 pistolas, sin importar la antigüedad o reducción. Incluso los firmwares de Android tienen acceso a estas herramientas.
Los nuevos proyectos dirigidos a audiencias que ejecutan distribuciones modernas pueden muy bien distribuir 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 a los formatos de archivo ZIP o RAR en que ambos comprimen y especifican un diseño para encapsular múltiples archivos en un solo archivo.
No ves que .7z se usa con más frecuencia por la misma razón por la que la música no se vende en tiendas de descargas en línea en formatos nuevos como Opus o video en WebM . Compatibilidad con personas que ejecutan sistemas antiguos o muy básicos.
fuente
tar
encaja en el ecosistema de archivo (es decir, para agregar archivos juntos, proporcionando un aumento del rendimiento y algunos otros beneficios, como el ahorro de permisos), pero no aborda por quédar
no se utilizan alternativas modernas como las existentes. En otras palabras, esta respuesta justifica el uso de agregadores de archivos, pero no deltar
software en sí mismo.Esto ha sido respondido en Stack Overflow .
Muchas herramientas se distribuyen en formato fuente o binario como .tar.gz o .tar.bz2, porque es un formato de archivo de "mínimo común denominador": al igual que la mayoría de los usuarios de Windows tienen acceso a descompresores .zip o .rar, la mayoría de las instalaciones de Linux , incluso los más básicos, tendrán acceso al menos
tar
ygunzip
, sin importar la antigüedad o reducción. Incluso los firmwares de Android tienen acceso a estas herramientas.Los nuevos proyectos dirigidos a audiencias que ejecutan distribuciones modernas pueden distribuir muy bien 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 al ZIP o RAR formatos de archivo en que comprime y especifica un diseño para encapsular múltiples archivos en un solo archivo.No ves que .7z se usa con más frecuencia por la misma razón por la que la música no se vende en tiendas de descargas en línea en formatos nuevos como Opus o video en WebM . La compatibilidad con personas que ejecutan sistemas antiguos o muy básicos es importante.
fuente
tar.Z
(comprimir / descomprimir). La progresión de las utilidades ha sido un flujo constante (sin juego de palabras) de cambio y mejora: Z => zip => gz => bz2 => 7z => xz (o el orden que prefiera). En cuanto al rol de tar, algunas utilidades solo descomprimen / y solo requieren tar para agrupar las jerarquías de archivos.Tar tiene un amplio conjunto de operaciones y modificadores que saben todo sobre los sistemas de archivos Unix. Conoce los permisos de Unix, los diferentes tiempos asociados con los archivos, los enlaces duros, los enlaces blandos (y la posibilidad de que los enlaces simbólicos puedan introducir ciclos en el gráfico del sistema de archivos) y le permiten especificar varias formas diferentes de administrar todos estos datos. .
¿Desea que los datos extraídos conserven los tiempos de acceso a los archivos? Tar puede hacer eso. Para preservar los permisos? Tar puede hacer eso.
¿Desea conservar los enlaces simbólicos como enlaces simbólicos? Tar lo hace por defecto. ¿Quieres copiar el objetivo en su lugar? Tar puede hacer eso.
¿Desea estar seguro de que los datos enlazados solo se almacenan una vez (es decir, hacer lo correcto)? Tar hace eso.
¿Desea manejar bien los archivos dispersos? Tar puede hacer eso.
¿Quieres datos sin comprimir (¿por qué?)? Tar puede hacer eso. Para comprimir con gzip? Tar puede hacer eso. Con bzip2? Tar puede hacer eso. ¿Con programas arbitrarios de compresión externa? Tar puede hacer eso.
¿Desea escribir o recuperar a / desde un dispositivo sin formato? El formato de Tar lo maneja bien.
¿Desea agregar archivos a un archivo existente? Tar puede hacer eso. ¿Para diferenciar dos archivos para ver qué cambió? Tar puede hacer eso. ¿Para actualizar solo aquellas partes del archivo que han cambiado? Tar puede hacer eso.
¿Desea asegurarse de no archivar en más de un sistema de archivos? Tar puede hacer eso.
¿Desea capturar solo archivos que son más nuevos que su última copia de seguridad? Tar puede hacer eso.
¿Desea conservar los nombres o números de usuarios y grupos? Tar puede hacer cualquiera de los dos.
¿Necesita preservar los nodos del dispositivo (como los archivos
/dev
) para que después de la extracción, el sistema se ejecute correctamente? Tar puede hacer eso.Tar ha evolucionado para manejar muchos casos de uso durante décadas y realmente sabe mucho sobre las cosas que la gente quiere hacer con los sistemas de archivos Unix.
fuente
f -
y lo canalice al compresor.tar
muy a menudo para copiar un árbol del sistema de archivos de un lugar a otro y preservar los permisos, etc., y la compresión en este caso solo requiere ciclos de CPU adicionales. Por ejtar cf - * | tar xf - -C /somewhere
.Confunde los dos procesos distintos de archivo y compresión .
Razones para usar un archivador
Una razón para usar el archivado sin compresión es, por ejemplo, si un grupo de archivos se copia de un host a otro. Un comando como el siguiente
puede acelerar las cosas considerablemente. Si sé que los archivos no se pueden comprimir o si SSH está configurado con compresión, puede ahorrar un tiempo considerable de CPU. Claro, uno puede usar una herramienta de compresión más moderna con una función de archivo y desactivar la compresión. La ventaja
tar
es que puedo esperar que esté disponible en todos los sistemas.Razones para usar un archivador con compresión gzip
Una de las razones que utilizo
tar
congzip
es: la velocidad! Si quiero transferir algunos GiB de archivos de texto de un lugar a otro, no me importa exprimir los últimos bytes, ya que la compresión solo se usa para el tránsito, no para el almacenamiento a largo plazo. En los casos que usogzip
, lo que no maximiza la CPU (en contraste con 7-Zip , por ejemplo), lo que significa que estoy obligado a E / S nuevamente y no a la CPU. Y de nuevo:gzip
puede considerarse disponible en todas partes.Razones para utilizar
tar
a favor descp
,rsync
, etc.Es mejor
scp
que tenga muchos archivos pequeños para copiar (por ejemplo, un directorio de correo con cientos de miles de archivos).rsync
Por increíble que sea, es posible que no esté disponible en todas partes. Además,rsync
solo vale la pena si parte de los archivos, o una versión anterior, ya está presente en el destino. Para la copia inicialtar
es la más rápida, con compresión o sin ella, dependiendo de los datos reales.fuente
tar cf - . | (cd ~/somewhere; tar xvf -)
. Es realmente útil no tener que esperar hasta que se escriba el índice central (como, por ejemplo, en un archivo zip).Agregando a las otras buenas respuestas aquí, prefiero la combinación
tar
+gzip|bzip2|xz
principalmente porque estos archivos comprimidos son como secuencias, y puede canalizarlos fácilmente.Necesito descomprimir un archivo disponible en internet. Ya sea con
zip
orar
formatos Tengo que descargar primero y luego descomprimirlo. Contar.{gz,bz2,xz}
puedo descargar y descomprimir en el mismo paso, sin necesidad de tener el archivo comprimido físicamente en el disco:Esto dejará solo los archivos sin comprimir en mi disco y acelerará todo el proceso, porque no estoy perdiendo el tiempo descargando primero el archivo completo y después de que finalice la descarga, lo descomprimo. En cambio, lo estoy descomprimiendo mientras se está descargando. No puede hacer esto con
zip
orar
archivos.fuente
funzip
solo extrae el primer archivo en el archivo zip, no todos.tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Hay varias razones para quedarse con Tar (GNU).
Está:
Si su carne de res en particular es tener que "descomprimir" un tarball antes de poder leer el contenido, entonces probablemente tenga razón. WinRAR y 7-Zip lo hacen automáticamente. Sin embargo, existen soluciones simples a este problema, como documentar el contenido de un archivo sin comprimir.
fuente
Los formatos de archivo como .zip requieren que el software lea primero el final del archivo, para leer un catálogo de nombres de archivo. Por el contrario, tar almacena esa información en la secuencia comprimida.
La ventaja de la forma de alquitrán es que puede descomprimir datos mientras los lee desde una tubería no buscable, como un socket de red.
La ventaja de la forma zip es que, para un archivo estático en el disco, puede examinar el contenido y los metadatos sin descomprimir primero todo el archivo.
Ambos tienen sus usos, dependiendo de lo que estés haciendo.
fuente
Parece haber cierta renuencia a responder todas sus preguntas directamente, con una aparente preferencia por usar su pregunta como punto de partida para la pontificación. Así que lo intentaré.
No. De hecho, dado que tar y gzip suelen ser dos procesos, incluso obtienes un pequeño beneficio de velocidad de varios núcleos que un archivador como el zip de Info-ZIP no proporciona. En términos de relación de compresión, tar + gzip generalmente funcionará notablemente mejor que zip con deflate ya que el primero puede beneficiarse de la correlación entre archivos, mientras que el segundo comprime los archivos por separado. Ese beneficio de compresión se traduce en un beneficio de velocidad al extraer, ya que un archivo más comprimido se descomprime en menos tiempo.
Sí, tar se diseñó para Unix, y ha evolucionado a lo largo de los años para poder grabar y restaurar exactamente cada pequeño rincón y grieta de los sistemas de archivos Unix, incluso el sistema de archivos Mac OS X Unix más ruidoso y crannier. zip puede retener gran parte de los metadatos, como permisos, tiempos, propietarios, grupos y enlaces simbólicos, pero aún no todo. Como ejemplo, ni zip ni 7z pueden reconocer o aprovechar archivos dispersos, ni son conscientes de o pueden restaurar enlaces duros.
Muchas otras buenas respuestas aquí para eso. Lo mejor es que simplemente funciona , y puede seguir actualizándolo a mejores formatos de compresión (por ejemplo, xz) y seguir utilizando el mismo formato de tar e incluso la misma utilidad de tar compilada. Si solo desea empacar un montón de cosas y luego desempaquetar todo en el otro extremo, entonces hay pocas razones para usar cualquier cosa que no sea uno de los programas de software más antiguos, más completos y más depurados.
Si desea acceso aleatorio, actualizaciones parciales u otras cosas que necesitan lidiar con el contenido por partes, o si desea poder descubrir qué hay en él sin leer todo, entonces querrá usar un formato diferente.
fuente
Actuación
La gran diferencia es el orden en que se realizan la compresión y el archivado.
tar
Archivos, luego, opcionalmente, puede enviar el archivo a un compresor, yzip
acumula el archivo y comprime los datos del archivo en fragmentos de 32 KB a medida que se inserta en el archivo. Al dividir los datos del archivo en pequeños trozos y comprimirlos por separado, le permite extraer archivos específicos o partes de archivos sin tener que descomprimir todo en el archivo anterior. También evita que el compresor cree un diccionario muy grande antes de reiniciarlo. Esto significa que la compresión irá más rápido, pero no dará una relación tan buena como comprimir todo con un tamaño de diccionario más grande.Puede visualizarlo pensando en dos archivos, donde los primeros 500 bytes del segundo archivo son los mismos que los últimos 500 bytes del primer archivo. Con el
zip
método, el compresor se reinicia para el segundo archivo, por lo que no recuerda que el primer archivo terminó con los mismos datos, por lo que no puede eliminar los datos duplicados del segundo archivo.Popularidad
Hay muchos otros formatos que tienen varias ventajas
tar
. 7-Zip no almacena los permisos de archivos de Unix, perodar
sí, yzip
puede, y los tres almacenan un índice, que permite una exploración rápida, extracción de un subconjunto de archivos y actualización de archivos dentro del archivo. También pueden usar CPU de varios núcleos para la compresión.La razón por la que todos todavía usan
tar
es la misma razón por la que todos usan Windows y Flash : a la gente no le gusta el cambio. Sin una razón sólida para cambiar, las personas simplemente se adhieren a lo que saben.dar
no proporciona un beneficio suficiente para justificar la publicación de archivos en el formato cuando la mayoría de las personas ya lo hantar
instalado, y muy pocos lo sabendar
, por lo que la simple inercia nos mantiene en el antiguo estándar.fuente
Tar fue creado para hacer copias de seguridad de su sistema de archivos de fidelidad completa, no solo para transferir archivos. Como tal, la utilidad tar es la utilidad más completa para crear un archivo que conserva todo lo importante sobre la estructura de su sistema de archivos.
Esto incluye todas estas características que faltan en una o más herramientas de la competencia:
También tiene la
--one-file-system
opción que es extraordinariamente útil al hacer copias de seguridad.Cada vez que se agrega una nueva característica a los sistemas de archivos,
tar
primero se agrega soporte (o incluso exclusivamente). Por lo tanto, sigue siendo la forma más compatible de guardar archivos.fuente
Hoy en día tenemos muchos archivos comprimidos, MP3, JPG, videos, archivos tar.gz, paquetes JAR, RPM, DEB, etc. Si necesita agrupar un montón de estos en un solo archivo para transferir, entonces es útil tener una utilidad 'tar' que solo agrupa los archivos sin intentar comprimirlos.
No solo desperdicia tiempo y electricidad intentar comprimir un archivo comprimido, sino que a menudo resulta en un archivo que es más grande que el original.
Otro uso es mejorar las tasas de compresión. Por ejemplo, si 'alquila' un paquete de archivos de registro y luego comprime el resultado, es probable que obtenga un archivo más pequeño que si lo comprimiera primero, luego empaquetado con 'tar'. Y, por supuesto, utilizando tar, puede elegir el algoritmo de compresión que desee y especificar opciones para optimizar la compresión para su caso de uso particular.
Encuentro que tar 'es muy relevante hoy y prefiero que use ZIP. En nuestra oficina, todas las personas con Windows tienen instalado 7-zip, por lo que, para nosotros, los archivos tar son totalmente compatibles con todas las plataformas.
fuente
tar
archivos sin comprimir y hay una razón para eso.tar
usa fragmentos muy grandes, lo que significa que obtienes mucho relleno al final de los archivos. Para deshacerse de todos estos ceros, casi siempre vale la pena usarlogzip
sin pensarlo dos veces.Tal vez deberíamos preguntarnos por qué estos "nuevos" formatos de archivo que realizan tanto la compresión como la agregación (y agregaría cifrado) no se construyeron en tar desde el principio en lugar de herramientas completamente diferentes.
Según tengo entendido, hay razones históricas (relacionadas con el historial del sistema operativo, la "protección" de las patentes, la capacidad del proveedor de software para vender herramientas, etc.).
Ahora, como señaló otra respuesta, incluso ahora tar no es claramente inferior a otras soluciones y puede ser mejor en otros aspectos, como la capacidad de trabajar en transmisiones o la gestión de derechos de Unix.
Si lees el artículo de Wikipedia sobre el alquitrán , puedes ver otro hecho interesante. El artículo reconoce algunas deficiencias de tar ... pero no sugiere usar zip en su lugar (realmente el formato zip no resuelve estas deficiencias) sino DAR.
Terminaré con un toque personal. Algunas veces tuve que crear un formato de archivo para almacenar datos cifrados. Usar tar como base fue útil (otros hicieron la misma elección, por ejemplo tar es el formato de agregación interna para paquetes .deb). Era obvio para mí que tratar de comprimir datos después del cifrado era totalmente inútil, tenía que realizar la compresión como un paso independiente antes del cifrado, y tampoco estaba listo para usar el cifrado zip (quería cifrado de dos claves con claves públicas y privadas) . Usando alquitrán funcionó como una brisa.
fuente
Me sorprende que nadie haya mencionado esto, pero una de las razones, no realmente una ventaja, sino una necesidad, es la compatibilidad con versiones anteriores. Hay muchos sistemas que ejecutan software durante décadas que podrían requerir
tar
archivado. No es rentable contratar a alguien para "arreglar" todos los sistemas antiguos.fuente
tar es UNIX como UNIX es tar
En mi opinión, la razón de seguir usando
tar
hoy es que es uno de los casos (probablemente raros) donde el enfoque de UNIX lo hizo perfectamente desde el principio.Echando un vistazo más de cerca a las etapas involucradas en la creación de archivos, espero que esté de acuerdo en que la forma en que se lleva a cabo la separación de las diferentes tareas aquí es la filosofía de UNIX en su máxima expresión:
una herramienta (
tar
para darle un nombre aquí) especializada en transformar cualquier selección de archivos, directorios y enlaces simbólicos, incluidos todos los metadatos relevantes, como marcas de tiempo, propietarios y permisos, en un flujo de bytes.y solo otra herramienta intercambiable arbitrariamente (
gzip
bz2
xz
por nombrar solo algunas opciones) que transforma cualquier flujo de entrada de bytes en otro flujo de salida (con suerte) más pequeño.El uso de este tipo de enfoque brinda un par de beneficios tanto para el usuario como para el desarrollador:
extensibilidad Permitiendo acoplarse
tar
con cualquier algoritmo de compresión ya existente o cualquier algoritmo de compresión aún por desarrollar sin tener que cambiar nada en el funcionamiento internotar
.Tan pronto como salga la nueva herramienta "hyper-zip-utra" o de compresión, ya estás listo para usarla, abrazando a tu nuevo servidor con todo el poder
tar
.La estabilidad
tar
ha sido de uso intensivo desde principios de los 80 probada y ejecutada en numerosos sistemas operativos y máquinas.Evitar la necesidad de reinventar la rueda en la implementación del almacenamiento de propiedad, permisos, marcas de tiempo y similares una y otra vez para cada nueva herramienta de archivo no solo ahorra mucho tiempo (de lo contrario innecesariamente invertido) en desarrollo, sino que también garantiza la misma confiabilidad para cada Nueva aplicación.
consistencia La interfaz de usuario permanece igual todo el tiempo.
No es necesario recordar que para restaurar los permisos usando la herramienta A, debe pasar la opción
--i-hope-you-rember-this-one
y usar la herramienta B que debe usar--this-time-its-another-one
mientras usa la herramienta C es `--hope-you-didnt-try-with-tool-as-switch.Mientras que al utilizar la herramienta D, realmente la habría estropeado si no la hubiera utilizado
--if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now
.fuente
Muchas buenas respuestas, pero todas descuidan un hecho importante. Tar tiene un ecosistema bien establecido de usuarios y desarrolladores en el mundo tipo Unix. Eso lo mantiene en funcionamiento, al igual que ZIP sigue funcionando por su ecosistema DOS / Windows. Tener un ecosistema así es lo que sostiene una tecnología, no sus ventajas técnicas.
fuente
La razón es "afianzamiento en la cultura". Hay muchas personas como yo cuyos ojos se ven si se les pide que procesen algo que no sea un archivo comprimido de alquitrán, o el ZIP ocasional, si proviene del mundo de Windows.
No quiero escuchar sobre 7-Zip, RAR o cualquier otra cosa. Si tengo que instalar un programa para descomprimir su archivo, eso es trabajo. Lo haré si resulta que me pagan, o si el contenido es algo que "debo tener" y no está disponible de ninguna otra manera.
Una ventaja del alquitrán es que si le envías un tarball a alguien, se reconoce al instante. El destinatario puede escribir los comandos de extracción utilizando la memoria muscular.
La verdadera pregunta es: ¿por qué algunas personas están tan obsesionadas con ahorrar un byte más de espacio que les piden a todos los demás que pierdan el tiempo instalando alguna utilidad exótica y aprendiendo a usarla? Y luego están los usos estúpidos de los formatos exóticos de compresión y archivo. ¿Un video H.264 con sonido AAC realmente necesita ser puesto en RAR multiparte?
El formato tar puede ser antiguo, pero almacena todo lo que es relevante: contenido del archivo, rutas, marcas de tiempo, permisos y propiedades. Almacena no solo enlaces simbólicos, sino que puede preservar la estructura del enlace duro. También almacena archivos especiales, por lo que se puede usar un archivo de cinta para cosas como un
/dev
directorio en miniatura que se usa durante el arranque. Puede armar una distribución de Linux cuyo formato de paquete binario no consiste en nada, sino en tarballs sin comprimir en relación con la raíz del sistema de archivos.fuente
Responde directamente las preguntas específicas que planteaste:
Hay una mejora de rendimiento específica, en casos generales, que se usa
tar
especialmente con la biblioteca de compresión incorporada (las líneas de comandotar xvzf
otar xvjf
style, donde se usa una biblioteca de compresión en lugar de un segundo proceso). Esto proviene de dos causas principales:Cuando se procesa una gran cantidad de archivos relativamente pequeños, especialmente los que se usan comúnmente en la distribución de software, existe una alta redundancia. La compresión en muchos archivos da como resultado una compresión general mayor que la compresión de archivos individuales. Y el "diccionario" se calcula una vez por cada porción de entrada, no por cada archivo.
tar
entiende los sistemas de archivos. Está diseñado para guardar y restaurar un sistema operativo que funcione / funcione. Comprende profundamente lo que es importante en un sistema de archivos UNIX, y captura y restaura fielmente eso. Otras herramientas ... no siempre, especialmente la familia zip, que está mejor diseñada para compartir archivos entre una familia de sistemas operativos, donde el documento es lo importante, no una copia sensible del sistema operativo fiel.Escaso manejo de archivos. Algunas de las bibliotecas de bases de datos directas se basan en archivos dispersos: archivos donde los datos son nominalmente GB, pero los datos reales escritos y almacenados son mucho, mucho menos, y solo se usan unos pocos bloques de disco. Si utiliza una herramienta que no es consciente, al descomprimir, termina con un consumo masivo de bloque de disco, todos con ceros. Convertir eso de nuevo en un archivo escaso es ... doloroso. Si incluso tienes espacio para hacerlo. Necesita una herramienta que comprenda qué es un archivo disperso y lo respeta.
Metadatos Unix ha desarrollado algunas cosas extrañas a lo largo de los años. Nombres de archivos de 14 caracteres, nombres largos de archivos, enlaces de enlaces simbólicos, bits fijos, bits de superusuario, permisos de acceso de grupo heredados, etc. Tar los comprende y reproduce. Herramientas para compartir archivos ... no tanto. Mucha gente no usa los enlaces de la manera que podrían ... Si alguna vez trabajó con un software que sí usa enlaces, y luego usó una herramienta no consciente para realizar copias de seguridad y restaurar, ahora tiene muchas archivos, en lugar de un solo archivo con muchos nombres. Dolor. Su software falla y tiene hinchazón de disco.
tar
trabajos. Hace el trabajo para el que está diseñado, bueno. Ha habido otros reemplazos promocionado (cpio
,pax
, etc, etc). Pero tar está instalado en casi todo, y las bibliotecas de compresión que usa también son muy comunes por otras razones. No ha aparecido nada más que supere sustancialmente lo que hace el alquitrán. Sin ventajas claras y una gran cantidad de uso y conocimiento integrados en la comunidad, no habrá reemplazo. El alquitrán ha tenido mucho uso a lo largo de los años. Si obtenemos cambios importantes en la forma en que pensamos en los sistemas de archivos, o los archivos que no son de texto de alguna manera se convierten en la forma de transferir código (actualmente no puedo imaginar cómo, pero ignore eso ...), entonces podría encontrar otra herramienta. Pero ese no sería el tipo de sistema operativo que ahora usamos. Sería una cosa diferente, organizada de manera diferente y necesitaría sus propias herramientas.La pregunta más importante, creo, que no preguntaste, es para qué trabajos 'tar' no son adecuados.
tar
con compresión es frágil Necesita todo el archivo, poco a poco. En mi experiencia, no es resistente. He tenido errores de un solo bit que resultan en archivos de varias partes que se vuelven inutilizables. No introduce redundancia para protegerse contra errores (lo que anularía una de las preguntas que hizo, sobre la compresión de datos). Si existe la posibilidad de corrupción de datos, entonces desea verificar los errores con redundancia para poder reconstruir los datos. Eso significa, por definición, que no estás comprimido al máximo. No se puede tener cada bit de datos necesarios y tener su valor máximo de significado (compresión máxima) y tener cada bit de datos capaz de pérdida y recuperación (redundancia y corrección de errores). Entonces ... ¿cuál es el propósito de su archivo?tar
es excelente en entornos de alta confiabilidad y cuando el archivo se puede reproducir desde la fuente nuevamente. IME, en realidad es peor en lo original que sugieren sus nombres: el archivo en cinta. Los errores de un solo bit en una cinta (o peor, los errores de un solo bit en un cabezal de cinta, donde pierde un bit en cada byte de una cinta o archivo completo) hacen que los datos se vuelvan inutilizables. Con suficiente redundancia y detección y corrección de errores, puede sobrevivir a cualquiera de esos problemas.Entonces ... ¿cuánto ruido y corrupción hay en el entorno que está mirando? ¿Se puede usar la fuente para regenerar un archivo fallido? La respuesta, a partir de las pistas que ha proporcionado, es que el sistema no es ruidoso y que la fuente es capaz de regenerar un archivo. En cuyo caso,
tar
es adecuado.tar
con compresión tampoco funciona bien con archivos precomprimidos. Si está enviando datos ya comprimidos ... solo use tar y no se moleste con la etapa de compresión, solo agrega ciclos de CPU para no hacer mucho. Eso significa que necesita saber qué está enviando y por qué. Si te importa. Si no le importan esos casos especiales, tar copiará fielmente los datos, y comprimir fielmente no hará mucho para hacerlos más pequeños. No hay gran problema, aparte de algunos ciclos de CPU.fuente
TAR es archivo de cinta. Ha existido durante décadas y es ampliamente utilizado y respaldado. Es un producto maduro y se ocupa tanto de las necesidades actuales como de las heredadas.
fuente