Te enseñamos como comprimir y descomprimeor en linus con los principales comandos en GZIP, BZIP2, TAR y ZIP

 

Comprimir y descomprimir GZIP, BZIP2, TAR y ZIP en Linux

Comprimir y descomprimir GZIP, BZIP2, TAR y ZIP en Linux

Como es común hoy en día, existen varios tipos de programas que sirven para comprimir/descomprimir archivos. Linux posee varias utilidades que cumplen estas funciones y varias otras además, entre las cuales podemos mencionar el respaldo de archivos para enviarlos entre las diferentes máquinas que se encuentran conectadas  a Internet en el menor tiempo posible. Estas utilidades  nos sirven tanto para manipular los formatos de archivos tipo Unix como para los formatos de archivos de tipo MS Windows.

Comprimir y descomprimir gzip en Linux

 

gzip(1) reduce el tamaño de un archivo usando el código Lempel-Ziv (LZ77). Este es un programa de compresión con licenciamiento GNU, sencillamente lo que este hace es tomar un archivo y comprimirlo.

 

El comando sin parámetros sería este:

 

# gzip prueba1

 

El resultado de este comando es un archivo llamado prueba1.gz el cual debería ser más pequeño que el archivo prueba1. Es también conveniente mencionar que el archivo prueba1 ya no existirá más, ya que a sido reemplazado por prueba1.gz. Si por ejemplo lo que deseamos es comprimir alguna imagen o algún archivo .mp3, no se comprimirán de forma notoria, ya que estos tipos de archivos utilizan formatos comprimidos y si llegaran a comprimirse la diferencia sería despreciable. Si lo que deseamos es que gzip utilice el mayor factor de compresión posible utilizamos la opción -9 de la siguiente forma:

 

# gzip -9 archivo1

 

Este tomará un poco más de tiempo que el común para comprimir el archivo1. Para solucionar el problema del tiempo podríamos utilizar los valores más bajos desde la línea de comandos, pero esto tendrá como consecuencia un menor tiempo de proceso pero no tan buena compresión del archivo1.

 

Ahora si lo que deseamos es descomprimir archivos que hayan sido comprimidos con gzip tenemos la opción de utilizar el comando «gzip -d» o el comando gunzip. Este comando lo que hace es descomprimir cualquier archivo que tenga una extensión reconocible. Entre las extensiones que reconoce gunzip tenemos:

 

.gz

–gz

.z

–z

.Z

–Z

 

Lo más sencillo sería usar el comando de la siguiente forma:

 

# gunzip archivo1.gz

 

Lo que aquí ocurre es que nos descomprime el archivo1.gz dejándonos un archivo llamado archivo1 en el directorio en donde aplicamos el comando. Como mencioné un par de líneas atrás, también podríamos haber usado el comando gzip con la opción –d:

 

# gzip -d archivo1.gz

 

Con lo que obtendríamos un resultado igual que si aplicáramos el comando «gunzip archivo1.gz«. La explicación para esto es que, gunzip es un link simbólico a /bin/gzip. Esto lo podremos verificar realizando lo siguiente:

 

            # whereis gunzip

gunzip: /bin/gunzip /usr/bin/gunzip /usr/man/man1/gunzip.1.gz /usr/share/man/man1/gunzip.1.gz

 

# ls -l /bin/gunzip

lrwxrwxrwx    1 root     root            4 jun  4 16:09 /bin/gunzip -> gzip

 

Como ya sabemos que gunzip simplemente es un link simbólico a gzip, podremos deducir fácilmente que podemos descomprimir cualquier archivo comprimido tanto con gunzip como con gzip.

 

 

 

Comprimir y descomprimir  bzip2 en Linux

 

bzip2 comprime archivos usando el algoritmo de la compresión del texto, el clasificar de bloque del Madriguera-Rodador, y la codificación de Huffman. La compresión es generalmente considerablemente mejor que la alcanzada por compresores mas convencionales como los basados en LZ77/LZ78, y se aproxima al rendimiento de un compresor estadístico de la familia PPM lo que es realmente una gran ventaja para los usuarios con enlaces lentos a Internet.

 

Uno de los puntos «débiles» de bzip2 es que requiere de una intensidad mayor de CPU, lo que significa que necesitaremos más tiempo para realizar la compresión que si utilizáramos gzip, pero obviamente el resultado es superior en la gran mayoría de los casos.

 

La forma básica de utilizar bzip2 es bastante sencilla, esta es así :

 

# bzip2 archivo1

 

El resultado obviamente será un archivo de menor tamaño llamado archivo1.bz2. Este es igual a gzip en lo que a procedimiento se refiere, ya que el archivo inicial (archivo1) ya no existirá, porque fue reemplazado por el nombre del archivo seguido de la extensión .bz2.

 

Como es de imaginar, ya que, bzip2 y gzip funcionan de forma parecida, también podemos modificar la fuerza de compresión y hacer más rápida su ejecución. Esto sería de la siguiente forma:

 

# bzip2 -9 archivo1

 

Ahora bien, para descomprimir archivos con la extensión .bz2, tenemos la opción de utilizar bzip2(1) o bunzip2(1). La primera opción es usar bzip2 con la opción adecuada (de igual forma que sucedía con gzip) la cual es esta:

 

# bzip2 -d archivo1.bz2

 

Lo que descomprimirá el archivo y reemplazará por el nombre del archivo sin la extensión .bz2. Ahora bien si lo que deseamos es utilizar la opción bunzip(1) la forma sería la siguiente:

 

# bunzip2 archivo1.bz2

 

Con lo cual obtenemos el mismo resultado. Esto es porque bunzip(1) es un link simbólico a gzip2(1) al igual como lo es gunzip(1) a gzip(1). Esto lo podemos verificar de igual forma que hicimos con gzip anteriormente:

 

# whereis bunzip2

bunzip2: /bin/bunzip2 /usr/bin/bunzip2

 

# ls -l /bin/bunzip2

lrwxrwxrwx    1 root     root            5 jun  4 16:09 /bin/bunzip2 -> bzip

 

 

 

Comprimir y descomprimir tar en Linux

 

tar(1) es una de las utilidades que nos permite archivar y guardar diferentes ficheros en un solo archivo, a este proceso se le conoce como  empaquetar. Un ejemplo practico de esto sería si deseáramos guardar el contenido de todo un directorio incluyendo subdirectorios en un único archivo, al cual posteriormente realizado este proceso quedará con la extensión .tar. Este proceso de empaquetar es bastante útil, ya que ni con gzip(1) o bzip2(1) podríamos lograr semejante resultado. Pero nosotros podemos usar conjuntamente tar y gzip o bzip2 para lograr un empaquetamiento/compresión o desempaquetamiento/descompresión de un directorio grande ( denominado árbol) el cual podría ser /etc o el mism / .

 

Para lograr un empaquetamiento basado en tar(1) más gzip(1) tipeamos lo siguiente:

 

# tar cvzf directorio1.tar /home/slacky/

 

Lo que aquí sucede, es que tar toma todo el contenido del directorio /home/slacky/ ( tanto subdirectorios o archivos) y los deja en un archivo llamado directorio1.tar.gz. Si te fijas usamos la opción c, que le indica a tar que cree un nuevo fichero. Luego tenemos la opción z que hace que gzip gzipee el archivo.tar, después tenemos v la cual nos deja ver el proceso de compresión (output) y finalmente tenemos la opción f que es para que tar tome el siguiente argumento dado el cual será el nombre de nuestro nuevo archivo tar comprimido (directorio1.tar.gz).

 

SI deseamos tener un mejor resultado de compresión, lo que podemos hacer es utilizar tar(1) más bzip2(1) de la siguiente forma:

 

# tar cvjf  directorio1.tar.bz2 /home/slacky/

 

Lo que sucede es básicamente lo mismo que con gzip(1), pero el nivel de compresión es mayor. La opción c es para decirle a tar que vamos a comprimir, la v es para que nos deje ver el proceso de compresión, la j es para indicarle que vamos a utilizar bzip2(1) para comprimir el archivo empaquetado con tar(1) y finalmente la f que nos servirá para designar el nombre del archivo con extensión .tar.bz2 creado.

 

Una de las cosas más comunes con las que nos encontramos en la red a la hora de bajar algún programa es la alternativa de descargarnos el tarball, que no es nada mas que el source (el codigo fuente) del programa para que nosotros mismos lo configures/compilemos e instalemos en nuestro sistema. Para poder ver ese tarball lo que primero debemos hacer es descomprimirlo/desempaquetarlo si se encuentra con una extensión como .tar.gz, .tar.bz o .tar.bz2. Es para esto que también usamos otra de las características de tar(1) la cual es descomprimir y desempaquetar un tarball. Si se tratase de un tarball.tar.gz el comando es el siguiente:

 

# tar zxfv tarball.tar.gz

 

Aquí usamos básicamente los mismos parámetros, pero con alguna pequeña diferencia, esta diferencia es la opción x, la cual le indica a tar que vamos a extraer un archivo comprimido con gzip ( designado por la opción z).

 

Si deseamos descomprimir/desempaquetar un archivo de extensión .tar.bz2 utilizamos lo siguiente:

 

# tar xjfv tarball.tar.bz2

 

La explicación es la misma, pero con la diferencia que usamos la opción j en vez de la z, ya que esta vez estamos extrayendo varios archivos que fueron bzipeados.

 

También es interesante mencionar que podemos obtener estos mismo resultados mediante un comado más largo y con la ayuda de «|» (tubería) para filtrar el resultado de un comando y posteriormente enviarlo a otro, lo que en este caso sería de bzip a tar, veamos un ejemplo de esto:

 

# bzip2 -dc tarball.tar.bz2 | tar xvf –

 

Y lo equivalente de esto, pero para un archivo con extensión .tar.gz es lo siguiente:

 

# gzip -dc tarball.tar.gz | tar xfv –

 


 

 

Comprimir y descomprimir  zip en Linux

 

zip es una utilidad de compresión para Unix, VMS, MSDOS, OS/2, Windows NT, Minix, Atari y Machintosh, Amiga y Acorn RISC OS. Su combinación es análoga con  el comando tar(1) de UNIX y es compatible con PKZIP (Phil Katz’s ZIP) para el sistema MSDOS. Obviamente esta utilidad tiene su programa acompañante que complementa esta utilidad, esta se llama unzip(1) el cual nos sirve para descomprimir los archivos zipeados con zip(1).

 

Estas utilidades son de un uso bastante sencillo. Por ejemplo, si deseamos comprimir todos los archivos del directorio en el que nos encontramos simplemente tecleamos:

 

# zip zipeado  *

 

Esto nos creará un archivo llamado zipeado.zip el cual contendrá todos archivos que se encuentren en el directorio actual.  Ahora si lo que deseábamos es incluir todos los directorios que se encuentran el directorio actual usamos la opción -r de la siguiente forma:

 

# zip -r zipeado *

 

Para poder descomprimir los archivos con la extensión .zip bastará teclear lo siguiente:

 

# unzip zipeado

 

Esto nos descomprime todos los archivos y directorios que se encuentren contenidos en el archivo .zip que en este caso es zipeado.zip.

 

Finalmente queda mencionar que las utilidades zip(1) y unzip(1) disponen de una gran cantidad de parámetros avanzados, entre las cuales se encuentra crear archivos de tipo self-extracting (o auto-extraíbles), control de tamaño del archivo comprimido entre muchas más. Para mayor información sobre zip(1) y unzip(1) siempre tenemos a nuestra disposición las páginas del manual.

 

 

Categorías: Linux

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *