¿Tar realmente comprime los archivos, o simplemente los agrupa?

37

Por lo general, supuse que tarera una utilidad de compresión, pero no estoy seguro, ¿realmente comprime archivos o es como un archivo ISO, un archivo para guardar archivos?

TheDoctor
fuente
También en SuperUser .
allquixotic

Respuestas:

49

Tar es una herramienta de archivo (Tape ARchive), solo recopila archivos y sus metadatos juntos y produce un archivo. Si desea comprimir ese archivo más tarde, puede usar gzip / bzip2 / xz. Para mayor comodidad, tar proporciona argumentos para comprimir el archivo automáticamente. Consulte la página del manual de tar para obtener más detalles.

0xAF
fuente
99
Una ligera aclaración sobre la respuesta. Es el tar de GNU que proporciona esos argumentos de compresión extra. Por ejemplo, el tar de Solaris no proporciona argumentos para la compresión.
Tero Kilkanen
55
oooh, es por eso que sigo viendothing.tar.7z
Mooing Duck
BSD tar también proporciona un argumento para la compresión, aunque solo acepta zy determina el método de compresión basado en la extensión, mientras que GNU tar tiene zZjJargumentos separados para los diferentes métodos de compresión.
wingedsubmariner
2
Simplemente lea la página de manual de BSD tar, y resulta que estaba equivocado, BSD tar usa separadamente zZjJpara la compresión al igual que GNU tar. Sin embargo, detecta automáticamente la compresión cuando se descomprime, mientras que el alquitrán GNU zZjJtambién lo espera .
wingedsubmariner
55
@wingedsubmariner: no; Las versiones modernas de GNU se tardescomprimen automáticamente sin requerir las -zZjJopciones.
Jonathan Leffler
17

tarproduce archivos; La compresión es una funcionalidad separada. Sin embargo, tar solo puede reducir el uso de espacio cuando se usa en una gran cantidad de archivos pequeños que son más pequeños que el tamaño del clúster del sistema de archivos. Si un sistema de archivos usa clústeres de 1 kb, incluso un archivo que contiene un solo byte consumirá 1 kb (más un inodo). Un tararchivo no tiene esta sobrecarga.

Por cierto, un archivo ISO no es realmente "un archivo para guardar archivos", en realidad es una imagen de un sistema de archivos completo (uno originalmente diseñado para ser utilizado en CD) y, por lo tanto, su estructura es considerablemente más compleja.

Michael Borgwardt
fuente
3
En realidad, un archivo vacío no consumirá 1kb. Un archivo de 1-1023 bytes lo hará.
psusi
@psusi, por lo que para un archivo de bytes 1-1023 consumirá 1024 siempre, lo que resulta en un desperdicio de 1023-1 bytes.
Shiplu Mokaddim
2

El comando tar original de UNIX no comprimió los archivos. Como se mencionó en un comentario, el alquitrán Solaris no se comprime. Ni HP-UX, ni AIX, FWIW. Por convención, los archivos sin comprimir terminan en .tar.

Con GNU / Linux obtienes GNU tar. (Puede instalar GNU tar en otros sistemas UNIX). Por defecto, no se comprime; sin embargo, se hace comprimir el contenedor resultante con gzip (también por GNU) si se suministra -z. El sufijo convencional para los archivos comprimidos es .gz, por lo que a menudo verá tarballs (jerga para un archivo tar, que generalmente implica que se ha comprimido) que terminan en .tar.gz. Ese final implica que se ejecutó tar, seguido de gzip, por ejemplo tar cf - .|gzip -9v > archive.tar.gz. También encontrará archivos que terminan en .tgz, por ejemplo tar czf archive.tgz ..

Editar: www.linfo.org/tar.html me recordó que GNU tar admite mucha más funcionalidad que simplemente comprimir con gzip, y me recordó que los sufijos son más que simples convenciones. Tienen semántica incorporada. También es compatible con bzip2 ( -jpara .bz2) y compresa antigua ( -Zpara .Z). Luego miré la página del manual y recordé que -aasigna automáticamente el método de compresión deseado basado en el sufijo.

Otro nit. Como dice la página de manual de tar de Linux, GNU produce páginas de información, no páginas de manual, así que para aprender todo sobre GNU tar, ejecute info tar.

tbc0
fuente
El alquitrán GNU todavía no maneja las compresiones por sí mismo, solo canaliza hacia / desde gzip, bzip2, comprimir y otros.
ott--
Eché un vistazo a la fuente . GNU alquitrán maneja la compresión! La implementación aprovecha la reutilización de código y los principios arquitectónicos del espacio de usuario de UNIX. "Solo tuberías" está subestimando la forma en que la compresión está estrechamente integrada en la herramienta. El hecho de que sucede con los programas de ayuda de fork es un tecnicismo. Si desea defender "solo tuberías", cite los nombres de los archivos y los números de línea y veamos de qué lado está la comunidad.
confirmar el
Toma algunos días antes de que pueda verificar esa fuente.
ott--
1

La utilidad tar no se comprime hasta que usted da argumentos para hacerlo [nombre de archivo tar -z].

AJ
fuente