Cómo comprimir y descomprimir archivos con Gzip en Linux

fatmawati achmad zaenuri / Shutterstock.com

Hay muchas utilidades de compresión de archivos, pero la que está garantizado que encontrará en cada distribución de Linux es gzip. Si solo aprende a usar una herramienta de compresión, debería ser gzip .

RELACIONADA: ¿Cómo funciona la compresión de archivos?

→ Índice de contenidos

Algoritmos y árboles

Él gzip La herramienta de compresión de datos se escribió a principios de la década de 1990 y todavía se encuentra en todas las distribuciones de Linux. Hay otras herramientas de compresión disponibles, pero no importa en qué computadora Linux necesite trabajar, encontrará gzip en eso. Así que si sabes cómo usar gzipestás listo para irte sin necesidad de instalar nada.

gzip es una implementación del algoritmo DEFLATE que fue inventado y patentado por Phil Katz de PKZIP. El algoritmo DEFLATE mejoró los algoritmos de compresión anteriores que operaban con variaciones de un tema. Los datos que se van a comprimir se escanean y las cadenas únicas se identifican y agregan a un árbol binario.

A las cadenas únicas se les asigna un token de ID único en virtud de su posición en el árbol. Los tokens se usan para reemplazar las cadenas en los datos y, debido a que los tokens son más pequeños que los datos que reemplazaron, el archivo se comprime. Al sustituir los tokens por las cadenas originales, los datos vuelven a inflarse a su estado sin comprimir.

El algoritmo DEFLATE agregó el giro de que a las cadenas encontradas con más frecuencia se les asignaban los tokens más pequeños y a las cadenas encontradas con menos frecuencia se les asignaban las más grandes. El algoritmo DEFLATE también incorporó ideas de dos métodos de compresión anteriores, la codificación Huffman y la compresión LZ77.

En el momento de escribir este artículo, el algoritmo DEFLATE tiene casi tres décadas de antigüedad. Hace tres décadas, los costos de almacenamiento de datos eran altos y las velocidades de transmisión eran lentas. La compresión de datos era de vital importancia.

El almacenamiento de datos es mucho más barato hoy en día, y las velocidades de transmisión son mucho más rápidas. Pero tenemos muchos más datos para almacenar y, en todo el mundo, las personas acceden a los servicios de transmisión y almacenamiento en la nube. La compresión de datos sigue siendo vitalmente importante, incluso si todo lo que está haciendo es reducir algo que necesita cargar o transmitir, o si está tratando de recuperar algo de espacio en un disco duro local.

El comando gzip

Cuanto más grande es un archivo, mejor puede ser la compresión. Esto es por dos razones. Una es que habrá muchas secuencias de bytes idénticas y repetidas a lo largo de un archivo grande. La segunda razón es que la lista de cadenas y tokens debe almacenarse en el archivo comprimido para que pueda realizarse la descompresión. Con un archivo muy pequeño, esa sobrecarga puede acabar con los beneficios de la compresión. Pero incluso con un archivo bastante pequeño, es probable que haya alguna reducción de tamaño.

Compresión de archivos

Para comprimir un archivo, todo lo que necesita hacer es pasar el nombre del archivo al gzip dominio. Verificaremos el tamaño original del archivo, lo comprimiremos y luego verificaremos el tamaño del archivo comprimido.

ls -lh calc-sheet.ods
gzip calc-sheet.ods
ls -lh cal-*

Comprimir una hoja de cálculo

El archivo original, una hoja de cálculo llamada "calc-sheet.ods" tiene 11 KB, y el archivo comprimido, también conocido como archivo de almacenamiento, tiene 9,3 KB. Tenga en cuenta que el nombre del archivo de almacenamiento es el nombre del archivo original con ".gz" adjunto.

El primer uso de la ls El comando apunta a un archivo específico, la hoja de cálculo. El segundo uso de ls busca todos los archivos que comienzan con "calc-", pero solo encuentra el archivo comprimido. Eso es porque, por defecto, gzip crea el archivo de almacenamiento y elimina el archivo original.

Eso no es un problema. Si necesita el archivo original, puede recuperarlo del archivo de almacenamiento. Pero si prefiere conservar el archivo original, puede utilizar el -k (mantener) opción.

gzip -k calc-sheet.ods
ls -lh calc-sheet.*

Comprimir un archivo y conservar el archivo original

Esta vez se conserva el archivo ODS original.

Descomprimir a archivo

Para descomprimir un archivo de almacenamiento GZ, use el -d (descomprimir) opción. Esto extraerá el archivo comprimido del archivo y lo descomprimirá para que no se distinga del archivo original.

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Descomprimir un archivo con gzip

Esta vez, podemos ver que gzip ha eliminado el archivo de almacenamiento después de extraer el archivo original. Para retener el archivo de almacenamiento, necesitamos usar el -k (mantener) opción de nuevo, así como la -d (descomprimir) opción.

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Descomprimir un archivo y conservar el archivo de almacenamiento

Esta vez, gzip no elimina el archivo comprimido.

RELACIONADA: Por qué se pueden recuperar los archivos eliminados y cómo puede evitarlo

Descompresión y sobreescritura

Si intenta extraer un archivo en un directorio donde existe el archivo original, o un archivo diferente con el mismo, gzip le pedirá que elija abandonar la extracción o sobrescribir el archivo existente.

gzip -d text-file.txt.gz

Sobrescribir solicitud de gzip cuando el archivo en el archivo ya existe en el directorio

Si sabe de antemano que está feliz de tener el archivo en el directorio sobrescrito por el archivo del archivo comprimido, use la opción -f (forzar).

gzip -df text-file.txt.gz

Forzar la sobrescritura de un archivo existente

El archivo se sobrescribe y vuelve silenciosamente a la línea de comandos.

Comprimir árboles de directorios

Él -r Causas de opciones (recursivas) gzip para comprimir los archivos en un árbol de directorio completo. Pero el resultado puede no ser el esperado.

Aquí está el árbol de directorios que vamos a usar en este ejemplo. Cada directorio contiene un archivo de texto.

tree level1

Estructura de árbol de directorios de prueba

usemos gzip en el árbol de directorios y ver qué sucede.

gzip -r level1/
tree level1

Estructura del directorio después de ejecutar gzip en él

El resultado es gzip ha creado un archivo de almacenamiento para cada archivo de texto en la estructura de directorios. No creó un archivo de todo el árbol de directorios. De hecho, gzip solo puede poner un solo archivo en un archivo.

Podemos crear un archivo de almacenamiento que contenga un árbol de directorios y todos sus archivos, pero necesitamos poner en juego otro comando. Él tar El programa se usa para crear archivos comprimidos de muchos archivos, pero no tiene sus propias rutinas de compresión. Pero usando las opciones apropiadas con tarpodemos causar tar para empujar el archivo de almacenamiento a través gzip. De esa forma obtenemos un archivo comprimido y un archivo de varios archivos o varios directorios.

tar -czvf level1.tar.gz level1

Él tar las opciones son:

  • C: Crear un archivo.
  • z: Empuje los archivos a través gzip.
  • v: Modo detallado. Imprime en la ventana de terminal lo que tar es hasta.
  • f nivel1.tar.gz: Nombre de archivo a utilizar para el archivo de almacenamiento.

Salida de tar abriéndose camino a través del árbol de directorios

Esto archiva la estructura del árbol de directorios y todos los archivos dentro del árbol de directorios.

RELACIONADA: Cómo comprimir y extraer archivos usando el comando tar en Linux

Obtener información sobre archivos

Él -l La opción (lista) proporciona información sobre un archivo de almacenamiento. Le muestra los tamaños comprimidos y sin comprimir del archivo en el archivo, la relación de compresión y el nombre del archivo.

gzip -l leve1.tar.gz
gzip -l text-file.txt.gz

Uso de la opción -l list para ver las estadísticas de compresión de un archivo

Puede verificar la integridad de un archivo comprimido con el -t (prueba) opción.

gzip -t level1.tar.gz

Probar un archivo con la opción -t

Si todo va bien, volverás silenciosamente a la línea de comandos. La ausencia de malas noticias son buenas noticias.

Si el archivo está corrupto o no es un archivo, se le informa al respecto.

gzip -t not-an-archive.gz

Usar la opción -t para probar un archivo que no es un archivo

Velocidad versus compresión

Puede elegir priorizar la velocidad de creación del archivo o el grado de compresión. Para ello, proporcione un número como opción, desde -1 a través de la parte superior -9. Él -1 La opción ofrece la velocidad más rápida sacrificando la compresión y -9 da la compresión más alta sacrificando la velocidad.

A menos que proporcione una de estas opciones, gzip utiliza -6.

gzip -1 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -9 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -6 calc-sheet.ods
ls -lh calc-sheet.ods.gz

Uso de gzip con diferentes prioridades de velocidad y compresión

Con un archivo tan pequeño como este, no vimos ninguna diferencia significativa en la velocidad de ejecución, pero hubo una pequeña diferencia en la compresión.

Curiosamente, no hay diferencia entre usar compresión de nivel 9 y compresión de nivel 6. Solo puede exprimir tanta compresión de un archivo determinado y, en este caso, ese límite se alcanzó con la compresión de nivel 6. Subirlo a 9 no trajo más reducción en el tamaño del archivo. Con archivos más grandes, la diferencia entre el nivel 6 y el nivel 9 sería más pronunciada.

Comprimido, No Protegido

No confunda la compresión con el cifrado o cualquier forma de protección. Comprimir un archivo no le otorga seguridad ni privacidad mejorada. Cualquier persona con acceso a su archivo puede usar gzip para descomprimirlo.

RELACIONADA: Enumere los 10 archivos o directorios más grandes en Linux

Subir Change privacy settings