Comprimir y Descomprimir en Linux
En nuestra actividad diaria siempre tendremos la necesidad de optimizar el espacio en nuestro disco comprimiendo nuestros archivos aprendiendo a comprimir y descomprimir en linux.
En nuestro Curso Gratuito Linux vamos a aprender como comprimir y descomprimir en linux desde la línea de comandos.
Vamos a ingresar a nuestro equipo con cualquier usuario, obviamente, ya que esta necesidad es independiente del nivel de permisos que tengamos ya que todos tendremos esta necesidad para comprimir y descomprimir en linux.
Para todos los ejemplos que siguen, he creado una serie de archivos con extensión .log para los ejercicios con gzip, bzip2 y tar.
Comando gzip
Para comprimir y descomprimir en linux, una opción es utilizar el comando gzip para uno o varios archivos que generará un nuevo archivo con la extensión gz.
La ejecución del comando es sencilla. Los archivos comprimidos se representan en el sistema con el color rojo.
Personalmente aconsejo ejecutarlo con la opción -k ya que de no hacerlo, el archivo original es eliminado quedando únicamente el archivo comprimido.
En el ejemplo que sigue, voy a ejecutar las dos opciones y listando el directorio para apreciar el tamaño de cada uno de los archivos y el resultado con la ejecución del comando con y sin la opción -k, eliminando el archivo comprimido antes de la segunda ejecución
Para descomprimir el archivo ejecutaremos el comando gunzip como se ve a continuación
Comando bzip2
Otro comando disponible para comprimir y descomprimir en linux es el comando bzip2 que comprime de una forma más eficiente que el gzip pero tarda un poco más de tiempo en este proceso.
El comando bzip2 genera uno nuevo archivo con la extensión .bz2. Los archivos comprimidos el sistema los visualiza con el color rojo.
En el ejemplo que sigue, voy a ejecutar las dos opciones y listando el directorio para apreciar el tamaño de cada uno de los archivos y el resultado con la ejecucion del comando con y sin la opción -k, eliminando el archivo comprimido antes de la segunda ejecución
Para descomprimir utilizaremos el comando bunzip2
Comando tar
El comando tar nos permite empaquetar un archivo. No los comprime, por el contrario los coloca a todos juntos convirtiéndolos automáticamente en un solo archivo.
De todas maneras, a la hora de comprimir y descomprimir en linux, este comando es una herramienta importante en el sistema para agrupar varios archivos aislados o el contenido de un directorio en otro fichero o dispositivo especial.
Sintaxis del comando:
tar [opciones] <fuentes>
Algunas opciones que podemos trabajar con él:
- tar -c: permite crear (tarear)
- tar -x: permite extraer (destarear)
- tar -v: activa el modo explicativo
- tar -f <archivo>: agrupa o desagrupa en o hacia un fichero. No utiliza la salida o entrada estándar (como es por defect)
- tar -z: compacta o descompacta el archivo resultante una vez agrupado o desagrupado con gzip y gunzip respectivamente
- tar -j: compacta o descompacta el archivo resultante una vez agrupado o desagrupado con bzip2 y bunzip2 respectivamente
- tar -t: lista el contenido de un archivo resultado de un agrupamiento
- tar -M: agrupa en volúmenes.
En el ejemplo que sigue, voy a colocar una serie de archivos en un archivo.
Ahora, voy a listar el contenido para comprobar la creación del archivo y su tamaño, donde veremos que NO está comprimido.
Ahora, vamos a extraer el contenido del archivo, previo borrado de los archivos originales.
Y vamos a comprobar que estén todos los archivos.
Empaquetar con tar y comprimir con gzip
Ahora vamos a ejecutar no solo el empaquetado sino que también vamos a comprimir ese archivo tar para ocupar menos espacio.
Vamos a empaquetar y comprimir todos los archivos con extensión .log y vamos a comparar el tamaño con el archivo tar creado previamente.
Ahora vamos a comparar los tamaños de los archivos.
Ahora, vamos a eliminar todos los archivos con extensión .log y vamos a descomprimir el archivo tar compactado previamente con gzip
Empaquetar con tar y comprimir con bzip2
De manera similar al caso anterior, haremos la misma operación pero en esta oportunidad utilizando para comprimir bzip2 cuyo nivel de compresión es muy superior a gzip.
Nuevamente, comprimiremos todos los archivos con extensión .log y comprobaremos todos los tamaños de archivos para apreciar la diferencia.
Como pueden ver mas arriba, la diferencia de tamaño del archivo resultante es muy inferior al obtenido al comprimir con gzip
Ahora, vamos a eliminar todos los archivos con extensión .log y vamos a descomprimir el archivo tar compactado previamente con bzip2
Conclusión:
Hemos aprendido a comprimir y descomprimir en linux archivos de manera individual y grupal con gzip y bzip2, siendo éste último el que mejor nivel de compresión nos ha proporcionado, como así también aprendimos a agrupar/empaquetar o como más se conoce en la jerga «tarear» archivos respetando el orden jerárquico con tar, donde NO tenemos compresión a no ser que lo complementemos con el comando gzip o bzip2, siendo nuevamente la segunda opción la que mejor nivel de compresión nos proporciona. También hemos de aclarar que existen otras herramientas de compresión, pero nos focalizamos en las mencionadas ya que las encontraremos disponibles en nuestro sistema sin necesidad de instalación adicional, lo cual se vuelve complicado si el equipo no cuenta con salida a internet.
Espero haya sido de vuestra utilidad, no dejen de consultar las páginas del manual (man tar o man bzip2), y no dejen de compartir!
Saludos
Eduardo