¿Cuál es la diferencia entre .tar.gz y .gz, o .tar.7z y .7z?

158

Recientemente, he estado haciendo una copia de seguridad de muchos de mis datos, y me di cuenta de que puedo guardar archivos como .gzo .tar.gz, o .7zy .tar.7z, etc. ¿Cuáles son las diferencias entre la normal y la .tar.*variante? ¿Cuál de ellos se aconseja al hacer copias de seguridad?

Exeleration-G
fuente

Respuestas:

183

Si viene de un fondo de Windows, puede estar familiarizado con los formatos zip y rar. Estos son archivos de múltiples archivos comprimidos juntos.

En los sistemas Unix y similares a Unix (como Ubuntu), el archivo y la compresión están separados.

tar pone múltiples archivos en un solo archivo (tar).

gzip comprime un archivo (solo).

Entonces, para obtener un archivo comprimido, combine los dos, primero use taro paxpara obtener todos los archivos en un solo archivo (archive.tar), luego gzip(archive.tar.gz). Si solo tiene un archivo que necesita comprimir (notes.txt), no hay necesidad de tar, así que simplemente haga gzip notes.txtlo que resulte notes.txt.gz. Hay otros tipos de compresión, como compress, bzip2y xzque funcionan de la misma manera que gzip (aparte de usar diferentes tipos de compresión, por supuesto)

geirha
fuente
66
Eso tiene sentido, pero entonces, ¿por qué puedo hacer un .7zarchivo de varios archivos, mientras que también puedo hacer un .tar.7zarchivo de varios archivos?
Exeleration-G
3
@ Exeleration-G 7zip no sigue este esquema. Es más como zip y rar. No estoy seguro de cuál es el punto de usar tar junto con 7zip, ya que no he usado 7zip yo mismo.
geirha
42
@ Exeleration-G Después de leer las otras respuestas, veo que SaultDon responde a esto; 7zip no almacena la propiedad de Unix y el permiso de los archivos archivados (parece estar orientado principalmente a Windows, como zip y rar), por lo que tiene sentido combinarlo con tar para preservar la propiedad y los permisos.
geirha
@geirha Marque la pregunta como resuelta si encuentra la respuesta adecuada.
Ravi
1
En mi experiencia, 7z es mucho mejor en compresión que zip. Cuando lo probé me ahorró algo así como un 40% extra
Eoin
49

Depende de lo que esté buscando ... ¿Compresión o archivo?

Cuando hablo de archivar, me refiero a preservar permisos, estructura de directorios, etc.

La compresión puede ignorar la mayor parte de eso y simplemente obtener sus archivos en paquetes más pequeños.

Para preservar los permisos de archivo, use tar:

tar cpvf backup.tar folder

La bandera p guardará los permisos del archivo. Use la bandera z para la compresión gzip o la bandera j para la compresión bzip.

tar czpvf backup.tar.gz folder #backup.tgz is acceptable as well
tar cjpvf backup.tar.bz2 folder #backup.tbz2 works too

Si desea tener un archivo tar, puede "actualizar" el paquete tar utilizando la bandera P:

tar cpPvf backup.tar folder

Luego, para actualizar, reemplace 'c' con 'u' y al desempacar, puede usar 'k' para preservar los archivos que ya existen.

tar upPvf backup.tar folder #updating a tar file
tar xpPkvf backup.tar #extracting a tar with permissions(p) and not extracting(k) files that exist on disk already

La bandera P guarda los archivos con rutas completas, por lo que - / home / username vs home / username (observe la barra diagonal delantera).

La compresión 7z ofrece una mayor compresión, pero no conserva la propiedad del archivo, los permisos, etc. Rzip es otra utilidad de compresión que también ofrece una compresión comparable con 7z.

Supongo que un archivo backup.tar.7z es solo un archivo tar (con permisos) comprimido por un archivo 7z, aunque no me sorprendería si se produjera poca compresión porque 7z no puede volcar los metadatos del archivo. La capacidad de 7z de excluir los metadatos del archivo es que puede ofrecer una gran compresión (entre otras cosas, por supuesto).

La compresión también depende completamente del tipo de datos. Algunos archivos no se comprimen bien porque ya pueden estar comprimidos con otros medios (es decir, .mp3, .jpg, .tiff / con lzma, .rpm, etc.).

SaultDon
fuente
11

gzip o bzip2 desconocen file systemel nombre del archivo, el directorio o la estructura de árbol. Simplemente comprime el flujo de entrada, luego el resultado de salida. Incluso gzip o bzip2 no pueden archivar directorios por sí mismos, es por eso que generalmente se combina con tar.

tar (archivador): solo la estructura del archivo comprimido. gzip, bzip2 (compresor): solo comprime la entrada.

Creo que esta estrategia provino de la filosofía de Unix "haz una cosa bien" . Tar funciona bien? Déjalo como está. ¿Necesita más relación de compresión que gzip? Aquí está bzip2 o 7zip.

Mait
fuente
En realidad, 7zip puede archivar como zip o rar.
Mait
8

En sus diferentes estilos de compresión, el alquitrán por sí mismo simplemente se archiva (poca o ninguna compresión). tar.gz es un archivo tar pero los contenidos están comprimidos por gzip (compresión moderada), por lo tanto, el .gz y tar.7z se comprimen usando 7zip (generalmente compresión súper alta)

cuando realice una copia de seguridad, recomendaría tar.7z, ya que tiene la tasa de compresión más alta, lo que le ahorra espacio, pero utiliza un programa adicional (7zip). .tar.gz serán archivos más grandes y harán el mismo trabajo, también podría usar bzip (.tar.bz / bz2) aunque no estoy seguro de si eso le conviene mejor, ya que uso gzip o 7zip

MuffinStateWide
fuente
4

típicamente, los archivos * .tar son solo archivos tar creados por el programa tar, los programas * .gz son creados por gzip, * .tar.gz (a veces también * .tgz) son archivos tar gziped y * .7z son creados por 7zip.

Sin embargo, en Linux / Unix, uno puede nombrar un archivo de la forma que quiera, por lo que queda completamente a discreción del creador de los archivos.

G. Él
fuente
3

Tar (Tape Archiver) se ha utilizado tradicionalmente como un contenedor en Unix / Linux para empaquetar archivos para su movimiento. Empaqueta la estructura del archivo y mantiene los atributos del archivo, pero no comprime los archivos.

Los programas de compresión comprimen el archivo para hacerlo más pequeño, pero pueden no manejar múltiples archivos, y / o pueden no manejar los atributos de archivo necesarios para Linux. Como el tar ya existe y está bien soportado, no hay razón para que los programas de archivo dupliquen esta funcionalidad, que es específica de la plataforma (re, diferente para Windows y Linux). Además, diferentes programas de compresión pueden funcionar de manera diferente en diferentes tipos de archivos, por lo que es deseable elegir entre más de uno.

Marty Fried
fuente