La Terminal de Linux (VII). Comprimir y Descomprimir Archivos

Esta guía forma parte de esta serie de posts dedicados a exprimir a fondo la línea de comandos en Linux. El post de hoy tengo la intención de mostrarte todos los comandos que necesarios para que aprendas a comprimir y empaquetar archivos o directorios, listar el contenido de una carpeta comprimida y extraer los diferentes archivos o carpetas contenidas en ella.

Para ello trabajaremos con los diferentes formatos de compresión (o al menos los más comunes) con los que te puedes encontrar en prácticamente cualquier distribución GNU/Linux de forma nativa, tales como zip, tar, gz, bz2, tar.gz y tar.bz2. Así que, tanto si eres nuevo en Linux, como si ya llevas cierto tiempo, en esta guía te servirá una visión clara de como tratar con los diferentes formatos de compresión desde la línea de comandos.

Anuncios

Tabla de contenidos:

  1. Gzip y Bzip2
  2. Tar
  3. Tar.Gz y Tar.Bz2
  4. Zip
  5. 7z
  6. Para terminar

Gzip y Bzip2

En este grupo conocerás los comandos básicos con los que podrás comprimir y descomprimir cualquier fichero en Linux utilizando los formatos .

En este sentido es justo señalar que, en entornos Unix, se separa lo que es el concepto de compresión de lo que es el hecho de empaquetar varios ficheros en un único archivador (obviamente puedes utilizar formatos con los que combinar las dos acciones, como verás un poco más adelante).

Para la compresión pura de un archivo, en Linux se utilizan mucho el formato GZIP, todo un clásico en entornos Unix, y el formato BZIP2, algo más moderno y con un mayor índice de compresión.

Antes que nada, ten en cuenta que tenemos que situarnos en la carpeta dónde se encuentran los ficheros que queremos comprimir. Si tienes dudas o te falta práctica a la hora de desplazarte por las diferentes carpetas desde la terminal, puedes consultar el post que te acabo de enlazar. Para poner un ejemplo, supongamos que están en la carpeta Documentos dentro de la home.

$ cd Documentos

#gzip

Gzip es una utilidad de GNU/Linux integrada en el propio sistema operativo y que permite la compresión o descompresión de archivos en formato gz.

Como apunte importante, Gzip es una herramienta de compresión pura, es decir, solo comprime archivos individuales (no directorios), y, a diferencia de formatos mas populares como RAR o ZIP, no permite empaquetar a varios dentro del mismo paquete.

A continuación tienes los principales comandos que puedes utilizar para comprimir y descomprimir un archivo utilizando gzip.

La sentencia que tienes a continuación es la que te servirá para comprimir cualquier archivo en Gzip, lo que dará como resultado un paquete comprimido con la extensión .gz.

$ gzip -9 archivo

Para gestionar cualquier fichero comprimido en gzip tienes varias opciones. Si quieres conocer los principales parámetros del archivo, véase el ratio de compresión o el nombre del archivo una vez descomprimido, puedes utilizar la siguiente sentencia:

$ gzip -l archivo.gz

Y finalmente, para descomprimir un Gzip (que podrás reconocer porqué termina con la extensión .gz) , puedes utilizar la siguiente sentencia:

gzip -d fichero.gz

#bzip2

La utilidad Bzip2 también forma parte del sistema en GNU/Linux y es muy similar a Gzip, lo único que en este caso sirve para comprimir o descomprimir utilizando el formato bz2.

Al igual que ocurre con Gzip, Bzip2 solo permite la compresión de archivos individuales, ya que se trata de una herramienta puramente de compresión.

Para comprimir un fichero cualquiera, que en este ejemplo voy a denominar archivo, en bzip2, la sentencia que debes utilizar es la que tienes a continuación.

$ bzip2 -z archivo

Una vez tienes el archivo comprimido en la extensión bz2, que en este caso se llama archivo.bz2, puedes hacer un test de la integridad del mismo con el comando que tienes debajo. Si todo está OK, no habrá ningún output.

$ bzip2 -t archivo.bz2

Siguiendo con el ejemplo anterior, para descomprimir el registro que se te ha generado como resultado de la compresión en Bzip2, puedes utilizar la sentencia de debajo.

$ bzip2 -d archivo.bz2

Tar

Y si en el primer grupo nos hemos centrado en las operaciones de compresión y descompresión puras, ahora le va tocando al turno al empaquetado y desempaquetado.

Para ello, el formato más utilizado en GNU/Linux es TAR, una utilidad que permite empaquetar varios archivos o directorios dentro de un solo paquete en formato TAR (lo reconocerás por la extensión).

En este caso voy a abordar el uso de TAR como tal, pero lo más común es que se use en combinación con los formatos de compresión Gzip y Bzip2 vistos más arriba (eso me lo reservo para la ultima parte del post).

#tar -cvf

Siguiendo con el primer ejemplo, podemos suponer que queremos empaquetar dos archivos, que denominaré archivo1 y archivo2, dentro de un paquete .tar que podemos denominar paquete. Para empaquetar los diferentes archivos uno a uno, puedes utilizar el siguiente comando:

$ tar -cvf paquete.tar archivo1 archivo2

Cuando se trata de empaquetar varios ítems, lo mas práctico es ubicarlos todos dentro de una misma carpeta y empaquetar directamente la directorio. Para ello, puedes utilizar el mismo comando anterior pero sustituyendo los diferentes archivos con el nombre del directorio, que en este ejemplo podemos denominar directorio.

$ tar -cvf paquete.tar directorio

#tar -tvf

Una vez tienes un paquete .tar, una de las cosas que podemos necesitar es conocer el contenido que hay dentro. Para ello, si utilizas el comando que te pongo a continuación, te listara, de forma recursiva (esto es, recorriendo todos los niveles) los diferentes archivos o directorios uno a uno.

$ tar -tvf paquete.tar

#tar -xvf

Una vez listado el contenido del paquete .tar que hemos creado, lo siguiente es desempaquetar el contenido que hay dentro. Para ello, debes tener en cuenta que si mantienes archivos o directorios con el mismo nombre fuera del paquete (en la misma ubicación) estos serán reemplazados por los nuevos, por lo que conviene que te asegures bien antes.

$ tar -xvf paquete.tar

Tar.Gz y Tar.Bz2

Llegados este punto, creo que es el momento de tratar con las operaciones que combinan compresión y empaquetado, que al fin y al cabo son las más comunes en otro tipo de entornos como Windows (de hecho, así es como trabajan los formatos de compresión más extendidos, léase ZIP, RAR o 7-Zip, entre otros).

Cuando hemos hablado de Gzip y Bzip2 ya has visto que se trata de dos utilidades puramente de compresión. Pues bien, lo que no te he contado, es que puedes combinar cualquiera de estas operaciones con TAR, dando lugar a archivos con las extensiones .tar.gz y .tar.bz2, que seguramente te resultaran muy familiares en Linux.

Esto posibilita el hecho de poder comprimir múltiples archivos dentro de un mismo archivador, al igual que puedes hacer con otros formatos más populares. A continuación te resumo los comandos más importantes que debes conocer en este sentido:

#tar -czvf

Para comprimir varios archivos (a modo de ejemplo vamos a llamarlos archivo1 y archivo2) dentro de un paquete comprimido tar.gz, puedes utilizar el siguiente comando. Como verás, es el mismo que utilizamos para el empaquetado en TAR, con el añadido del parámetro -c, que representa la compresión en Gzip.

tar -czvf paquete.tar.gz archivo1 archivo2

También nos puede interesar comprimir un directorio entero, con todo su contenido dentro. En este caso, la sentencia sería la misma pero sustituyendo los diferentes ficheros por el nombre del directorio en cuestión.

tar -czvf paquete.tar.gz directorio

#tar -xzvf

Para descomprimir el paquete y desempaquetar su contenido, seguimos con la misma estructura, pero en este caso sustituimos el parámetro -c, de compresión, por el parámetro -x, de descompresión. A continuación tienes la sentencia completa.

tar -xzvf paquete.tar.gz

#tar -cjvf

Para empaquetar y comprimir varios ítems (en este ejemplo utilizo dos registros denominados archivo1 y archivo2) en un paquete .tar.bz2, te puedes valer de la siguiente sentencia, que si te fijas, es igual que en el caso de los .tar.gz pero cambiando la -z por la -j.

tar -cjvf paquete.tar.bz2 archivo1 archivo2

#tar -xjvf

Para descomprimir un paquete .tar.bz2 y desempaquetar su contenido, seguimos con la misma estructura, pero en este caso sustituimos nuevamente el parámetro -c, de compresión, por el parámetro -x, de descompresión.

tar -xjvf paquete.tar.bz2

ZIP

Siguiendo con las operaciones que combinan la compresión y el empaquetado de archivos, en este punto nos centraremos en ZIP, uno de los sistemas de compresión y empaquetado más extendidos. A continuación te resumo los principales comandos que debes conocer:

#zip

Para comprimir y empaquetar un conjunto de archivos o directorios dentro de un archivador en formato ZIP, en cualquier distribución GNU/Linux puedes hacer uso de la utilidad ZIP de forma nativa. Aquí tienes la sentencia que debes utilizar:

$ zip archivador.zip archivo1 archivo2

#unzip

En el caso de que tengas un paquete comprimido en ZIP, la utilidad que debes utilizar para gestionarlo es unzip. Con ella podrás realizar acciones como listar el contenido de dentro, o descomprimir el paquete y desempaquetar los diferentes archivos. A continuación tienes algunos ejemplos de como puedes utilizarlo.

Con este comando podrás listar todos los archivos o directorios contenidos del paquete archivador.zip. Es útil para conocer el contenido antes de desempaquetarlo.

$ unzip -l archivador.zip

Con este otro comando podrás descomprimir el paquete archivador.zip y desempaquetar todos sus archivos y directorios contenidos uno a uno en la misma carpeta de destino en la que se encuentra el archivador.

$ unzip archivador.zip

En caso de que solo quieras desempaquetar uno de los archivos contenidos, puedes utilizar el mismo comando, pero indicando a continuación el nombre del archivo concreto, en este caso vamos a suponer que lo denominamos archivo1 como en los ejemplos anteriores.

$ unzip archivador.zip archivo1

7z

Y, si bien hasta ahora me he centrado en los formatos con los que puedes trabajar de forma nativa desde prácticamente cualquier distribución GNU/Linux, lo cierto es que creo justo hacer una excepción en este caso, y es que el formato 7z y el software de compresión 7-Zip (el cual necesitaras para poder trabajar con este formato) lo valen con creces.

7-Zip es un software de compresión totalmente libre, abierto y multiplataforma que ofrece compatibilidad para diferentes formatos de compresión, si bien dispone del suyo propio. 7z es un formato de compresion sin perdida y que destaca especialmente por su elevado ratio de compresión, superior a otros formatos más populares como ZIP, GZIP o RAR.

En este caso, aprovechando que ya he publicado un post acerca de como instalar y poder utilizar 7-Zip en Linux, creo que lo mejor será remitirte a dicho post, en el que podrás ver, por un lado, los paquetes que tienes que instalar para poder trabajar con el, y en segundo lugar, como utilizarlo tanto desde la terminal, como de forma grafica desde el propio navegador de archivos.

Para Terminar

Como has visto si has llegado hasta aquí, este ha sido un post básicamente práctico de cara al uso de la terminal y a como comprimir y descomprimir archivos y directorios con los diferentes formatos de compresión que te puedes encontrar en Linux. Dicho esto, me despido no sin antes recordarte que para cualquier duda o sugerencia me tienes en la sección de comentarios justo debajo.

Tampoco me quiero ir sin recordarte que este post forma parte de una serie de artículos enfocados a profundizar en el uso de la terminal. Si quieres seguir con el tema, te presento los enlaces hacía el resto de posts de esta serie:

  1. Como utilizar el interprete de comandos en Linux
  2. Comandos para moverte a través de directorios, copiar y pegar archivos, etc
  3. Comandos para consultar información del sistema
  4. Comandos para crear y leer archivos de texto por consola
  5. Comandos para listar o finalizar procesos en ejecución
  6. Comandos para identificar diferencias entre dos archivos de texto
  7. Comprimir y descomprimir ficheros por consola
  8. Comandos para controlar el estado de servicios
Categorías Linux

4 comentarios en “La Terminal de Linux (VII). Comprimir y Descomprimir Archivos

  1. Hola, primero que nada gracias por toda la información que aquí escribiste, yseguiré checando todos los temas y revisando la información de esta página. gracias

    Me gusta

    1. Gracias a ti por el comment jamidblog!
      Me alegro de que te sea útil;)

      Me gusta

  2. estupenda informaciñ de tema comprimir ha sido útil, muchas gracias
    henryk

    Me gusta

    1. Gracias a ti por pasarte Henryk!
      Me alegro de que te haya sido util:)

      Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.

search previous next tag category expand menu location phone mail time cart zoom edit close