¿Cuál es la diferencia con todos los diferentes tipos de archivos .tar?

16

¿Alguien podría decirme qué pasa con tantos archivos y en qué se diferencian?

Hay al menos cinco que se me ocurre, .tar.tz, .tar.gz, .tar.bz2, .tar.lz,.tar.z

¿Cuál es el mejor para qué aplicaciones? Parece una tontería hacer tantas variaciones del mismo archivo, pero estoy seguro de que hay una razón.

Trevor Gross
fuente

Respuestas:

18

El .gz, .xz, .bz2, .7z, .lz, .zsufijos se utilizan para dejar claro que el archivo está comprimido con dicho algoritmo de compresión. Su uso no se limita a .tararchivos, también verá archivos como initrd.gz(un disco RAM inicial comprimido) o manual.txt.gz(para un documento de texto comprimido). También puede ver file.tgzcuál también indica un tarball comprimido con gzip (como file.tar.gz).

La extensión del archivo es una convención, no necesariamente describe el contenido del archivo. Para verificar qué tipo de archivo está manejando, use el filecomando. Ejemplo:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

En mi experiencia, los archivos comprimidos con gzip ( .gz) son los más comunes. Es rápido en la compresión y descompresión, aunque hay otros algoritmos que producen mejores relaciones de compresión.

Lekensteyn
fuente
8

Además de la respuesta @Lekensteyn, me gustaría agregar que este comportamiento se basa en la filosofía Hacer una cosa y hacerlo bien : el tarprograma sabe cómo colocar múltiples archivos en una sola secuencia (con .tarextensión), gzipsabe cómo comprimir un archivo único (agregando .gzextensión) *. Al combinar esas herramientas, puede crear un comando que comprime varios archivos en un solo .tag.gzarchivo.

Este enfoque es muy flexible: puede combinar algunos comandos Unix estándar para hacer todo tipo de cosas. Por ejemplo, si escribe un mejor programa para comprimir archivos, no necesita modificarlo tarpara permitir que cree .tar.mymegaziparchivos; en su lugar, simplemente canaliza tarla salida a su compresor.

Del mismo modo, tarno sabe nada sobre SSH, pero combinando comandos puede crear un script que archiva archivos, los carga en una máquina remota a través de SSH y los descomprime allí.

Compare esto con el zipcomando, que no se originó en Unix: tiene herramientas integradas para comprimir directorios completos, cifrar archivos, dividir el archivo en archivos zip más pequeños, etc.


(nota al pie): sí, tares capaz de comprimir o bzip archivos usando -zy -jmodificadores, se agregaron por conveniencia, y el tar de GNU en realidad está engendrando gzipo bzip2como un nuevo proceso.

Sergey
fuente
Ejemplo: los comandos tar c dir/ | gzip > dir.tar.gzy los tar czf dir.tar.gz dir/comandos hacen lo mismo. Un ejemplo en el que tarse combina con SSH y tar(de nuevo): tar cz Documents/ | ssh user@host 'tar xz(equivalente rsync sería: rsync -a Documents user@host:)
Lekensteyn