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:
zip file1 aguardar1 aguardar2 aguardar3
Ejecutando el comando, crearemos el archivo file1.zip donde tendremos comprimidos los archivos: aguardar1 aguardar2 aguardar3.
zip -r file1 .
El comando comprimirá todo el contenido, incluyendo subcarpetas del directorio actual en el archivo file1.zip
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:
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.
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:
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:
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:
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:
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
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:
7z a file.7z folder
Con el parámetro ‘a’ indicamos que vamos a comprimir el directorio folder en el fichero file.7z
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:
#Instalar p7zip
sudo apt-get install p7zip
En Red Hat y derivados:
#Instalar p7zip
yum install p7zip
Espero que os haya sido útil el artículo. No dudéis en comentar.