Respuestas:
TAR crea un único archivo archivado a partir de muchos archivos, pero no los comprime.
Un archivo tar es la concatenación de uno o más archivos. Cada archivo está precedido por un registro de encabezado de 512 bytes. Los datos del archivo se escriben sin modificaciones, excepto que su longitud se redondea a un múltiplo de 512 bytes y el espacio adicional se llena con cero. El final de un archivo está marcado por al menos dos registros consecutivos llenos de cero.
GZIP comprime un solo archivo en otro archivo único, pero no crea archivos.
... Aunque su formato de archivo también permite que se concatenen múltiples secuencias de este tipo (los archivos comprimidos simplemente se descomprimen concatenados como si fueran originalmente un solo archivo), gzip se usa normalmente para comprimir solo archivos individuales. [4] Los archivos comprimidos generalmente se crean al reunir colecciones de archivos en un único archivo tar y luego comprimir ese archivo con gzip.
tar -xzvf tarball.tar.gz single/file.txt
. Detrás de escena necesita hacer un poco de trabajo extra, pero para las apariencias extrae un solo archivo.
.tar.*
archivo comprimido siempre es "sólido", es decir. consiste en una sola corriente comprimida. Un .zip
archivo por otro lado no es sólido en absoluto, el algoritmo de compresión se inicia de nuevo para cada archivo. Se sacrifica la eficiencia de compresión para acelerar el acceso aleatorio. .7z
los archivos pueden ser sólidos, no sólidos o tener bloques sólidos.
Gzip / Bzip2 son compresores de flujo. Comprimen una secuencia de datos en algo más pequeño. Podrían usarse en archivos individuales, pero no en grupos de archivos por sí mismos.
Tar, por otro lado, tiene la capacidad de convertir una lista de archivos, con rutas, permisos e información de propiedad, en una sola secuencia continua, y viceversa.
Es por eso que, para archivar archivos (y si también se necesita compresión), generalmente se usa tar + algún método de compresión.
Tar está a cargo de hacer una y solo una cosa bien: (des) archivar en (de) un solo archivo de almacenamiento. ¿De que? De una y solo una cosa: un conjunto de archivos.
Gzip está a cargo de hacer una y solo una cosa bien: (des) comprimir. ¿De que? De una cosa y solo una cosa: un solo archivo de cualquier tipo ... y eso incluye un archivo creado con tar.
Se remonta a la filosofía de tuberías de UNIX, la arquitectura subyacente de "tuberías y filtros"; el tratamiento de todo como un archivo y el objetivo arquitectónico de sonido de "una cosa hace una cosa solo y hace bien" (lo que resulta en una especie de plug-n-play muy elegante y simple .)
En su simplicidad, es casi de naturaleza algebraica (un objetivo considerable en el diseño de sistemas). Y eso no es tarea fácil.
En muchos sentidos (y no sin sus defectos), esto es casi un pináculo en la componibilidad, modularidad, acoplamiento flojo y alta cohesión. Si entiendes estos cuatro (y quiero decir realmente entiendes ), entiendes, será obvio por qué tar y gzip funcionan así en pares.
En primer lugar, TAR no se creó para crear archivos de archivos. Es Tape ARchiver . Su trabajo es escribir o cargar en un archivo a / desde cinta.
La opción -f hace que use un archivo como "cinta virtual", que luego puede ser comprimido por otro programa. De hecho, dicha compresión también ocurre en las unidades grabadas del mundo real.
Por supuesto, la filosofía de usar un programa para hacerlo bien también cuenta en este caso, pero uno podría perderse por qué los archivos TAR están estructurados como una secuencia en lugar de un directorio de contenido + contenido.
Tradicionalmente, los sistemas Unix usaban un programa para realizar una tarea según la filosofía de Unix : tar
era solo un medio para empaquetar múltiples archivos en un solo archivo, originalmente para copia de seguridad en cinta (por lo tanto tar
, t ape ar chive). tar
no proporciona compresión; el archivo no comprimido resultante se comprime típicamente con algún otro programa tal como gzip
, bzip2
o xz
. En los viejos tiempos, usaban el compress
comando para hacer esto; Los algoritmos de compresión más nuevos son mucho más efectivos que esto.
El enfoque altamente modularizado dictado por la filosofía de Unix significa que cada programa puede usarse individualmente según corresponda, o combinarse para realizar tareas más complejas, incluida la creación de archivos comprimidos como se describe aquí. Para este tipo de tareas, también facilita el intercambio de herramientas individuales según sea necesario; simplemente cambiaría el programa de compresión para usar un algoritmo de compresión diferente, sin tener que reemplazar la tar
propia utilidad.
Este enfoque modular no está exento de desventajas. Como se mencionó en los comentarios a otras respuestas, un formato de archivo comprimido dedicado como .zip
es más capaz de manejar la extracción de archivos individuales; los tarball comprimidos deben descomprimirse casi en su totalidad para extraer archivos cerca del final del archivo, mientras que los .zip
archivos permiten un acceso aleatorio a sus contenidos. (Algunos formatos más nuevos, como por ejemplo .7z
, admiten archivos sólidos y no sólidos, así como bloques sólidos de tamaño variable en archivos más grandes). El uso continuo tar
junto con una utilidad de compresión separada es una cuestión de tradición y compatibilidad; Además, .7z
y .zip
no son compatibles con los metadatos del sistema de archivos Unix, como los permisos.