Comprimir y descromprimir ficheros en GNU/Linux

Comprimir archivos y descomprimirlos, es una tarea clave en cualquier departamento de sistemas que se precie. Los backups de datos muchas veces no se hacen con programas complejos y costosos, sino con compresión de carpetas y archivos en lugares seguros donde guardarlos, sean cabinas de discos, discos duros externos o en la nube.

Según leemos en wikipedia:

En ciencias de la computación la compresión de datos es la reducción del volumen de datos tratables para representar una determinada información empleando una menor cantidad de espacio. Al acto de compresión de datos se denomina compresión, y al contrario descompresión

Existen muchos formatos de compresión unos son más famosos que otros. Podemos decir que unos son muy rápidos comprimiendo y usan pocos recursos para ese proceso, y otros son más lentos comprimiendo y usan más recursos, pero tienen mucho mejor nivel de compresión.

Hablemos de ellos:

ZIP

Es el más famoso de todos y lleva mucho años en el campo de batalla.  Funciona en todos los sistemas operativos. Es decir, Windows, MAC, Unix y GNU/Linux.  ZIP forma parte del primer grupo de los formatos de compresión, es decir, es rápido al comprimir y utiliza pocos recursos del sistema, pero en cambio su ratio de compresión es pobre.

Su funcionamientos básico es el siguiente:

  1. zip file1 aguardar1 aguardar2 aguardar3

Ejecutando el comando, crearemos el archivo file1.zip donde tendremos comprimidos los archivos: aguardar1 aguardar2 aguardar3.

  1. zip -r file1 .

El comando  comprimirá todo el contenido, incluyendo subcarpetas del directorio actual en el archivo file1.zip

  1. zip -r file1 carpeta1

Comprimira toda la carpeta1 en al archivo de comprimido file1.zip

TAR

Es un formato muy usado en entornos UNIX y GNU/Linux.  También es muy rápido realizando su trabajo de compresión y además utiliza muy pocos recursos de la máquina, pero al igual que el formato ZIP, el nivel de compresión es bajo.

Algunos ejemplos de uso serían:

  1. tar -cwf ficherobackup /folder

Lo que hacemos es indicar al comando tar que nos comprima la carpeta folder y todo su contenido en el archivo ficherobackup.tar

Explicamos un poco los parámetros:

-c o –create, es decir, creamos un archivo o contenedor.

-w o –interactive, interactivo con confirmación.

-f o –file, especifica el nombre del contenedor.

Sigamos. Ahora vamos a descomprimir.

  1. tar -xwf comprimido.tar

Extraemos el contenido del archivo comprimido.tar

Explicamos los parámetros:

-x , extraemos.

El resto de parámetros están explicados en el ejemplo anterior.

Veamos otro caso:

  1. tar -xvf archivo.tar /tmp/descargas/

Ahora descomprimimos archivo.tar en la carpeta /tmp/descargas.

Explicamos:

-v o –verbose,  es decir, queremos que nos de más detalle de la descompresión.

TAR.GZ

Aquí tenemos un formato que es un punto intermedio entre el grado de compresión y la utilización de los recursos. Es muy usado en los departamentos de sistemas.

Los parámetros para utilizados para la compresión:

– c, crea un archivo.

-z, utiliza el formato gzip

-f, indicamos que el siguiente argumentos es el fichero comprimido .tar.gz

-v, al igual que con TAR nos dará más detalle sobre la compresión.

Aquí os dejo un ejemplo de compresión:

  1. tar -czfv file.tar.gz ficheros

Con el comando comprimiremos los ficheros en el archivo file.tar.gz

Ahora los parámetros habituales para la descompresión:

-x, al igual que con TAR indicamos que vamos a extraer.

-z, utiliza el formato gzip

-v, detalles de la descompresión.

-f, indicamos que el siguiente argumento, es el fichero a descomprimir.

El ejemplo:

  1. tar -xzvf fichero.tar.gz

TAR.BZ2

De todos los formatos es sin duda el que tiene mayor ratio de compresión. Aunque eso le conlleva más lentitud en el proceso y mayor consumo de recursos.  Su formato de uso:

Extraemos ficheros:

  1. tar -xvjf fileforextract.tar.bz2

Los parámetros son estos:

-x, extraemos.

-v, vemos los detalles del proceso.

-j, indicamos al comando que el fichero va en formato .tar.bz2

-f, indicamos que el siguiente argumento, es el fichero a descomprimir.

Comprimos con .tar.bz2

  1. tar -cfvj filecompress.tar.gz2 foldertocompress

-c, crea un archivo.

-f, indicamos que el siguiente argumento, es el fichero a descomprimir.

-v, vemos los detalles del proceso.

-j, indicamos al comando que el fichero va en formato .tar.bz2

 

7z

Es un formato de compresión libre, y a diferencia de ZIP tiene un ratio de compresión más alto.

El funcionamiento:

  1. 7z a file.7z folder

Con el parámetro ‘a’ indicamos que vamos a comprimir el directorio folder en el fichero file.7z

  1. 7z e file.7z

con el parámetro ‘e’ extraemos el contenido del fichero file.7z en la ubicación actual.

Como nota importante hay que decir que el formato 7z no viene po defecto en muchas distribuciones.

Hay varios programas que tratan con éste formato. Los podemos instalar vía consola de comandos:

En Debian y derivados:

  1. #Instalar p7zip
  2. sudo apt-get install p7zip

En Red Hat y derivados:

  1. #Instalar p7zip
  2. yum install p7zip

Espero que os haya sido útil el artículo. No dudéis en comentar.