Categorías: Tecnología

Cómo comprimir y descomprimir archivos con Gzip en Linux

fatmawati achmad zaenuri/Shutterstock.com

Existen muchas utilidades de compresión de archivos , pero la que seguramente encontrará en todas las distribuciones de Linux es gzip. Si solo aprende a usar una herramienta de compresión, debería ser gzip.

Algoritmos y árboles

La gzipherramienta 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, las encontrará gzip. Entonces, si sabe cómo usar gzip, está listo para comenzar sin la necesidad de instalar nada.

gzipes 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 identificador único en virtud de  su posición en el árbol . Los tokens se utilizan 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 de  vital  importancia, 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.

Comprimir un archivo

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

ls -lh calc-sheet.ods
hoja de cálculo gzip.ods
ls -lh cal-*

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 del lscomando apunta a un archivo específico, la hoja de cálculo. El segundo uso de lsbusca todos los archivos que comienzan con «calc-«, pero solo encuentra el archivo comprimido. Esto se debe a que, de forma predeterminada, gzipcrea 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 la -kopción (conservar).

gzip -k calc-sheet.ods
ls -lh hoja de cálculo.*

Esta vez se conserva el archivo ODS original.

Descomprimir un archivo

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

ls hoja de cálculo.*
gzip -d calc-sheet.ods.gz
ls hoja de cálculo.*

Esta vez, podemos ver que gzipha eliminado el archivo comprimido después de extraer el archivo original. Para conservar el archivo comprimido, debemos usar la -kopción (mantener) nuevamente, así como la -dopción (descomprimir).

ls hoja de cálculo.*
gzip -d calc-sheet.ods.gz
ls hoja de cálculo.*

Esta vez, gzip no elimina el archivo comprimido.

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  se le pedirá que elija abandonar la extracción o sobrescribir el archivo existente.

gzip -d archivo-de-texto.txt.gz

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 archivo-texto.txt.gz

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

Comprimir árboles de directorios

La -ropción (recursiva) hace gzipque se compriman los archivos en un árbol de directorios 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.

árbol nivel1

Usemos gzipen el árbol de directorios y veamos qué sucede.

gzip -r nivel1/
árbol nivel1

El resultado es que se gzipha 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, gzipsolo 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. El tarprograma se usa para crear archivos de muchos archivos, pero no tiene sus propias rutinas de compresión. Pero al usar las opciones apropiadas con tar, podemos hacer  tar que se transfiera el archivo comprimido  gzip. De esa forma obtenemos un archivo comprimido y un archivo de varios archivos o varios directorios.

tar -czvf nivel1.tar.gz nivel1

Las taropciones son:

  • c : Crear un archivo.
  • z : Empuje los archivos a través de gzip.
  • v : Modo detallado. Imprime en la ventana de la terminal lo que tarestá haciendo.
  • f level1.tar.gz : Nombre de archivo a usar para el archivo de almacenamiento.

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

Obtener información sobre archivos

La -lopció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 nivel1.tar.gz
gzip -l archivo-de-texto.txt.gz

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

gzip -t nivel1.tar.gz

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 no-un-archivo.gz

Velocidad frente a 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 -1arriba -9. La -1opción brinda la velocidad más rápida sacrificando la compresión y -9brinda la compresión más alta sacrificando la velocidad.

A menos que proporcione una de estas opciones, gzip usa -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

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 usarlo gzippara descomprimirlo.

responroot

Compartir
Publicado por
responroot

Entradas recientes

Steamlytics: La nueva herramienta imprescindible para los gamers de Steam

  El mundo del gaming ha experimentado un crecimiento exponencial en los últimos años. La…

1 año hace

Cuándo reemplazar su antigua unidad flash USB

Stokkete/Shutterstock.com ¿Sigue utilizando una unidad flash USB obsoleta para almacenar sus archivos? ¿Por qué no…

3 años hace

¿Qué es una pantalla Nano IPS?

LG Los fabricantes siempre intentan mejorar el rendimiento de imagen de los monitores. Como resultado,…

3 años hace

10 formas de jugar con un presupuesto bajo (o nulo)

Patty Chan/Shutterstock.com Si cree en lo que ve en las redes sociales, puede pensar en…

3 años hace

¿Demasiadas suscripciones? Aquí está cómo empezar a cortarlos

Seksan.TH/Shutterstock.com Los servicios de suscripción como Netflix, Game Pass y Spotify nos permiten consumir tantas…

3 años hace

Cómo configurar la puerta de enlace predeterminada en Linux

fatmawati achmad zaenuri/Shutterstock El acceso a Internet, oa cualquier otra red, se rige por la…

3 años hace