Como desarrollador principalmente de Windows, quizás me esté perdiendo algo cultural en la comunidad de Linux, pero siempre me ha confundido.
Al descargar algo, los archivos se guardan primero en un .tar
archivo y luego se comprimen . ¿Por qué el proceso de dos pasos? ¿No logra la compresión de archivos la agrupación de archivos? ¿Existe algún otro beneficio del que no tenga conocimiento?
Respuestas:
bzip
ygzip
trabajar en archivos individuales, no en grupos de archivos. Los viejoszip
(ypkzip
) operan en grupos de archivos y tienen el concepto de archivo incorporado.La filosofía * nix es una de las pequeñas herramientas que hacen muy bien trabajos específicos y se pueden encadenar. Es por eso que aquí hay dos herramientas que tienen tareas específicas y están diseñadas para encajar bien entre sí. También significa que usted puede usar tar para archivos de grupo y entonces usted tiene la opción de una herramienta de compresión (
bzip
,gzip
, etc.).fuente
tar
archivos: soporte de permisos del sistema de archivos de Linux . ¿Qué pasaría si descargara un paquete Debian, su administrador de paquetes lo instaló, pero ninguno de los ejecutables fuera ejecutable? Esa es la verdadera razón por la que todo el mundo usa tarballs ...;)Una distinción importante está en la naturaleza de los dos tipos de archivos.
Los archivos TAR son poco más que una concatenación del contenido del archivo con algunos encabezados, mientras que gzip y bzip2 son compresores de flujo que, en los tarballs, se aplican a toda la concatenación.
Los archivos ZIP son una concatenación de archivos comprimidos individualmente, con algunos encabezados. En realidad, zip y gzip utilizan el algoritmo DEFLATE, y con el ajuste binario adecuado, puede tomar la carga útil de una secuencia gzip y colocarla en un archivo zip con las entradas de diccionario y encabezado adecuadas.
Esto significa que los dos tipos de archivos diferentes tienen diferentes compensaciones. Para colecciones grandes de archivos pequeños, TAR seguido de un compresor de flujo normalmente dará como resultado una relación de compresión más alta que ZIP porque el compresor de flujo tendrá más datos para construir sus frecuencias de diccionario y, por lo tanto, podrá extraer más información redundante. Por otro lado, un error (preservación de la longitud del archivo) en un archivo ZIP solo dañará aquellos archivos cuyos datos comprimidos se vieron afectados. Normalmente, los compresores de flujo no pueden recuperarse de manera significativa de los errores a mitad de camino. Por lo tanto, los archivos ZIP son más resistentes a la corrupción, ya que parte del archivo seguirá siendo accesible.
fuente
Es extraño que nadie más haya mencionado que las versiones modernas de GNU
tar
te permiten comprimir mientras estás agrupando:También puede utilizar el compresor de su elección siempre que admita las opciones '
-c
' (a stdout, o desde stdin) y '-d
' (descomprimir):Esto le permitiría especificar cualquier compresor alternativo.
[ Agregado : si está extrayendo
gzip
obzip2
comprimiendo archivos, GNUtar
los detecta automáticamente y ejecuta el programa apropiado. Es decir, puedes usar:y estos se manejarán adecuadamente. Si utiliza un compresor no estándar, debe especificarlo cuando realice la extracción.]
El motivo de la separación es, como en la respuesta seleccionada, la separación de funciones. Entre otras cosas, significa que la gente podría usar el
cpio
programa ' ' para empaquetar los archivos (en lugar detar
) y luego usar el compresor de su elección (una vez, el compresor preferido erapack
, más tarde fuecompress
(que fue mucho más efectivo quepack
), y luegogzip
que corrió en torno a sus predecesores, y es completamente competitivo conzip
(que se ha portado a Unix, pero no es nativo allí), y ahorabzip2
, en mi experiencia, generalmente tiene una ventaja del 10-20% sobregzip
.[ Agregado : alguien señaló en su respuesta que
cpio
tiene convenciones divertidas. Eso es cierto, pero hasta que GNUtar
obtuviera las opciones relevantes ('-T -
'),cpio
era el mejor comando cuando no deseaba archivar todo lo que estaba debajo de un directorio determinado; de hecho, podía elegir exactamente qué archivos se archivarían. La desventajacpio
era que no solo podía elegir los archivos, sino que tenía que elegirlos. Todavía hay un lugar donde lascpio
puntuaciones; puede hacer una copia in situ de una jerarquía de directorios a otra sin ningún almacenamiento intermedio:Por cierto, la
-depth
opción " " activadafind
es importante en este contexto: copia el contenido de los directorios antes de establecer los permisos en los propios directorios. Cuando verifiqué el comando antes de ingresar la adición a esta respuesta, copié algunos directorios de solo lectura (permiso 555); cuando fui a eliminar la copia, tuve que relajar los permisos en los directorios antes de que 'rm -fr /new/place
' pudiera terminar. Sin la-depth
opción, elcpio
comando habría fallado. Solo recordé esto cuando fui a hacer la limpieza; la fórmula citada es así de automática para mí (principalmente en virtud de muchas repeticiones durante muchos años). ]fuente
Lo curioso es que puedes obtener un comportamiento no anticipado por los creadores de
tar
ygzip
. Por ejemplo, no solo puede gzip un archivo tar, también puede tar archivos comprimidos con gzip, para producir unfiles.gz.tar
(esto técnicamente estaría más cerca de la forma en quepkzip
funciona). O puede poner otro programa en la tubería, por ejemplo algo de criptografía, y puede elegir un orden arbitrario de tarificación, gzip y encriptación. Quien haya escrito el programa de criptografía no tiene que tener la menor idea de cómo se usaría su programa, todo lo que necesita hacer es leer desde la entrada estándar y escribir en la salida estándar.fuente
En el mundo Unix, la mayoría de las aplicaciones están diseñadas para hacer una cosa y hacerlo bien. Las utilidades zip más populares en Unix, gzip y bzip2, solo comprimen archivos. tar hace la concatenación de archivos. Canalizar la salida de alquitrán a una utilidad de compresión hace lo que se necesita, sin agregar una complejidad excesiva a ninguna de las partes del software.
fuente
Otra razón por la que es tan frecuente es que tar y gzip están en casi toda la base de instalación de * NIX que existe. Creo que esta es probablemente la razón más importante. También es la razón por la que los archivos zip son extremadamente frecuentes en Windows, porque el soporte está integrado, independientemente de las rutinas superiores en RAR o 7z.
GNU tar también le permite crear / extraer estos archivos desde un comando (un paso):
tar -cfvj destination.tar.bz2 *.files
tar -cfvz destination.tar.gz *.files
Extraer un archivo: (la parte -C es opcional, por defecto es el directorio actual)
tar -xfvj archive.tar.bz2 -C destination_path
tar -xfvz archive.tar.gz -C destination_path
Esto es lo que me he comprometido con la memoria de mis muchos años en Linux y recientemente en Nexenta (OpenSolaris).
fuente
Creo que buscabas más contexto histórico para esto. El zip original era para un solo archivo. Tar se utiliza para colocar varios archivos en un solo archivo. Por lo tanto, tarring y zipping es el proceso de dos pasos. Por qué sigue siendo tan dominante hoy en día es una incógnita.
De wikipedia para Tar_ (file_format)
fuente
tar es UNIX como UNIX es tar
En mi opinión la razón de seguir usando
tar
hoy en día es que es uno de los casos (probablemente raros) en los que el enfoque de UNIX lo hizo perfectamente desde el principio.Al observar más de cerca 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 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 arbitrariamente intercambiable (
gzip
bz2
xz
por nombrar solo algunas opciones) que transforma cualquier flujo de bytes de entrada en otro flujo de salida (con suerte) más pequeño.El uso de este enfoque ofrece 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 con cualquier algoritmo de compresión aún por desarrollar sin tener que cambiar nada en el funcionamiento interno detar
en absoluto.Tan pronto como salga el nuevo "hyper-zip-utra" o cualquier herramienta de compresión, ya estará listo para usarlo abrazando a su nuevo servidor con todo el poder de
tar
.La estabilidad se
tar
ha utilizado mucho desde principios de los 80, probada y ejecutada en numerosos sistemas operativos y máquinas.Evitar la necesidad de reinventar la rueda al implementar el 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 otra manera innecesariamente gastado) en el 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 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
tar es popular principalmente por razones históricas. Hay varias alternativas disponibles. Algunos de ellos duran casi tanto como el alquitrán, pero no pudieron superar al alquitrán en popularidad por varias razones.
Una gran ventaja (y desventaja) de tar es que no tiene encabezado de archivo ni directorio central de contenido. Por lo tanto, durante muchos años nunca sufrió limitaciones en el tamaño de los archivos (hasta esta década, en la que un límite de 8 Gb en los archivos dentro del archivo se convirtió en un problema, resuelto hace años).
Aparentemente, la única desventaja de tar.gz (o ar.Z para el caso), que es que debe descomprimir todo el archivo para extraer archivos individuales y enumerar el contenido del archivo, nunca lastimar a las personas lo suficiente como para que se desvíen del alquitrán en cantidades significativas. .
fuente
gzip y bzip2 es simplemente un compresor, no un software de archivo. De ahí la combinación. Necesita el software tar para empaquetar todos los archivos.
ZIP en sí y RAR también son una combinación de los dos procesos.
fuente
Por lo general, en el mundo * nux, los paquetes de archivos se distribuyen como tarball y, opcionalmente, se comprimen con gzip. Gzip es un programa de compresión de archivos simple que no hace la agrupación de archivos que hacen tar o zip.
En un momento, zip no manejaba adecuadamente algunas de las cosas que los sistemas de archivos Unix tar y Unix consideraban normales, como enlaces simbólicos, archivos de mayúsculas y minúsculas, etc. No sé si eso ha cambiado, pero es por eso que usamos tar.
fuente
Tar = archivos de grupos en 1 archivos
GZip = Comprima el archivo
Dividieron el proceso en 2. Eso es todo.
En el entorno de Windows, es posible que esté más acostumbrado a usar WinZip o WinRar que hacen un Zip. El proceso Zip de este software agrupa el archivo y la compresión pero simplemente no ve ese proceso.
fuente
Por la misma razón por la que a los usuarios de Mac les encantan las imágenes de disco: son una forma realmente conveniente de archivar cosas y luego pasarlas, descargarlas o enviarlas por correo electrónico, etc.
Y más fácil de usar y más portátil que las cremalleras en mi humilde opinión.
fuente
En mis días de Altos-XENIX (1982) comenzamos a usar tar (archivador de cinta) para extraer archivos de 5 1/4 disquetes o cintas de transmisión, así como para copiarlos en estos medios. Su funcionalidad es muy similar a los comandos BACKUP.EXE y RESTORE.EXE en DOS 5.0 y 6.22 como suplementos, lo que le permite abarcar varios medios si no caben en uno solo. El inconveniente era que si uno de los múltiples medios tenía problemas, todo era inútil. tar y dd se originan en UNIX SYstem III y se ha mantenido como una utilidad de lanzamiento estándar con sistemas operativos similares a UNIX probablemente por razones de compatibilidad con versiones anteriores.
fuente
Tar no es solo un formato de archivo, sino que es un formato de cinta. Las cintas almacenan datos bit a bit. Cada implementación de almacenamiento fue personalizada. El alquitrán era el método mediante el cual se podían extraer datos de un disco y almacenarlos en una cinta de manera que otras personas pudieran recuperarlos sin su programa personalizado.
Más tarde, llegaron los programas de compresión, y * nix todavía solo tenía un método para crear un solo archivo que contenía varios archivos.
Creo que es solo la inercia lo que ha continuado con la tendencia tar.gz. Pkzip comenzó con la compresión y el archivo de una sola vez, ¡pero luego los sistemas DOS normalmente no tenían unidades de cinta conectadas!
De wikipedia para Tar_ (file_format)
fuente
Como desarrollador de Windows, es comprensible lo extraños que parecen los tarballs . La palabra
tar
significa Archivo de cinta. Piense en grabadoras de cinta de carrete a carrete.En el mundo de Windows los programas generalmente se instalan con un
setup.exe
oinstall.exe
que funcionan todo tipo de hechicería en el registro, creando directorios e instalando.dll
archivos (Biblioteca de vínculos dinámicos).En Linux, Ubuntu en particular desde mi propia experiencia, los administradores de paquetes se encargan de tomar una aplicación e instalarla la mayor parte del tiempo . En Ubuntu, el desarrollador crea un paquete que termina en
.deb
(Debian, en el que se basa Ubuntu). La sintaxis básica para instalar a.deb
es:Aunque esto es relativamente sencillo para un usuario, es mucho trabajo para los desarrolladores crear un
.deb
paquete y asociar PPA.Un método más sencillo para los desarrolladores es crear un tarball. Entonces, la carga de la instalación la comparte el usuario final. Ellos deben:
.tar.gz
).apt
base de datos (piense en la lista de programas instalados de Windows) de la que se pueda hacer una copia de seguridad.Como otra respuesta ya indica a otra pregunta que hizo, PUEDE crear un archivo comprimido y comprimir datos al mismo tiempo. NO se requiere un proceso de dos pasadas.
fuente