El archivado de datos se basa en la idea fu­n­da­me­n­tal de guardar ficheros o di­re­c­to­rios por entero en un lugar seguro, a menudo en su forma co­m­pri­mi­da. Por razones de seguridad, archivar datos en entornos de servidor siempre ha sido de gran im­po­r­ta­n­cia. En un comienzo, los datos de un servidor se copiaban en unidades de cinta magnética, algo que aún hoy en día es utilizado, es­pe­cia­l­me­n­te para realizar copias de seguridad de grandes volúmenes de datos. Con el fin de potenciar la efi­cie­n­cia de este proceso, en 1979 se de­sa­rro­lló el programa de co­m­pre­sión de archivos tar (del inglés “tape archiver”=“ar­chi­va­dor en cinta”) para sistemas UNIX, por medio del cual se comprimen ficheros y di­re­c­to­rios en un solo archivo y se pueden recuperar desde este, aunque los permisos de usuario solo se mantienen si el origen y el destino soportan los derechos de archivo de UNIX. Para ahorrar espacio adicional en disco durante el proceso de al­ma­ce­na­mie­n­to, los archivos .tar suelen co­m­pri­mi­r­se con he­rra­mie­n­tas como gzip, bzip2 o lzop. Ahora bien, ¿en qué se di­fe­re­n­cian entre sí los di­fe­re­n­tes programas de co­m­pre­sión de archivos y sus formatos? Y ¿por qué aún van de la mano tar y Linux hoy en día?

Backup cloud por Acronis
Protege tu in­frae­s­tru­c­tu­ra y reduce el tiempo de inac­ti­vi­dad
  • Copias de seguridad au­to­má­ti­cas y fácil re­cu­pe­ra­ción
  • Gestión y pla­ni­fi­ca­ción intuitiva
  • Pro­te­c­ción contra las amenazas basadas en IA
  • Incluye crédito inicial de $5250 el primer mes

Los programas más populares para comprimir en Linux

Existe un gran número de he­rra­mie­n­tas gratuitas para comprimir archivos en Linux y todas ellas comparten una ca­ra­c­te­rí­s­ti­ca en común, que pueden ser manejadas desde la interfaz de línea de comandos, también llamada terminal o consola. Estas órdenes breves permiten crear fá­ci­l­me­n­te un archivo co­m­pri­mi­do de, por ejemplo, do­cu­me­n­tos HTML, con el que ahorrar espacio en la memoria, así como ancho de banda durante su tra­n­s­fe­re­n­cia. Si no se está habituado a trabajar con la consola, también se puede recurrir a in­te­r­fa­ces gráficas creadas para estas he­rra­mie­n­tas, así como a los de­no­mi­na­dos gestores de archivos, que combinan múltiples programas de co­m­pre­sión en una única interfaz -aunque deben estar también in­s­ta­la­dos en el sistema. Esta opción necesita, ló­gi­ca­me­n­te, más recursos del sistema, por lo que comprimir archivos en Linux desde la interfaz de línea de comandos sigue siendo la opción más sencilla y asequible. Los di­fe­re­n­tes programas se di­fe­re­n­cian entre sí por el grado de co­m­pre­sión, lo cual va ligado a una velocidad diferente, aunque, por lo general, es posible se­le­c­cio­nar di­fe­re­n­tes modos dentro de cada he­rra­mie­n­ta con el fin de pro­po­r­cio­nar, por ejemplo, un mejor re­n­di­mie­n­to en cuanto a la memoria de al­ma­ce­na­mie­n­to o si­m­ple­me­n­te para comprimir archivos lo más rá­pi­da­me­n­te posible. Otra ca­ra­c­te­rí­s­ti­ca di­fe­re­n­cia­do­ra en los programas de co­m­pre­sión es el formato de salida. Debido a la variedad de al­go­ri­t­mos uti­li­za­dos, los archivos co­m­pri­mi­dos obtienen di­fe­re­n­tes formatos y requieren el uso de di­fe­re­n­tes programas para poder ex­trae­r­los.

gzip

gzip (GNU zip) es uno de los métodos más uti­li­za­dos para comprimir en Linux. Es­pe­cia­l­me­n­te relevante en el de­sa­rro­llo web, gzip está basado en el algoritmo de deflación y fue de­sa­rro­lla­do ori­gi­na­ria­me­n­te para la pla­ta­fo­r­ma GNU como sucesoro del veterano compress. Gracias a diversas variantes, hoy esta apli­ca­ción pro­gra­ma­da en C puede no solo uti­li­zar­se para comprimir y de­s­co­m­pri­mir archivos en Linux, sino también en sistemas Windows y macOS. Gzip genera bloques de datos de un tamaño de 32.000 bytes (32kB), lo que le ha llevado a quedarse algo obsoleto frente a programas de co­m­pre­sión más modernos.

Imagen: Terminal de Ubuntu: compresión de un archivo con gzip
Terminal de Ubuntu: co­m­pre­sión de un archivo con gzip

En velocidad, por otro lado, este programa libre aventaja a todos los demás, razón por la cual los programas de servidor web más ha­bi­tua­les como Apache, IIS o NGINX lo han im­ple­me­n­ta­do en forma de módulos propios con el objetivo de responder a las pe­ti­cio­nes de los usuarios en el tiempo más breve posible con paquetes de archivos co­m­pri­mi­dos. Si quieres saber más sobre el fu­n­cio­na­mie­n­to y el uso de esta he­rra­mie­n­ta de co­m­pre­sión GPL, dirígete a este artículo donde pro­fu­n­di­za­mos en gzip.

Ventajas In­co­n­ve­nie­n­tes
Alta velocidad de co­m­pre­sión Los bloques de datos tienen un tamaño reducido
Software estándar en los se­r­vi­do­res web ha­bi­tua­les Escaso grado de co­m­pre­sión

bzip2

bzip2, di­s­tri­bui­do con una licencia similar a BSD, permite comprimir archivos en Linux sin pérdidas con una gran calidad. La apli­ca­ción utiliza una co­m­pre­sión en tres fases: primero tiene lugar una cla­si­fi­ca­ción de los datos entrantes en di­fe­re­n­tes bloques mediante la tra­n­s­fo­r­ma­ción de Burrows-Wheeler. Estos bloques, con un tamaño de hasta 900.000 bytes (900 kB), son sometidos a co­n­ti­nua­ción a una tra­n­s­fo­r­ma­ción Move-to-front, para ser fi­na­l­me­n­te co­m­pri­mi­dos uti­li­za­n­do la co­di­fi­ca­ción de Huffman. Los archivos em­pa­que­ta­dos con bzip2 obtienen la extensión .bz2.

Imagen: Listado de comandos de bzip2 en la consola de UbuntuKha­ki­mu­llin AleksandrShu­t­te­r­s­to­ck
Listado de comandos de bzip2 en la consola de Ubuntu

El programa de­sa­rro­lla­do por Julian Seward supera con creces a otras he­rra­mie­n­tas en cuanto a co­m­pre­sión, aunque requiere más tiempo que las demás para su ejecución. Una de sus grandes ventajas al de­s­co­m­pri­mir con bzip2 es que se puede trabajar, incluso, con archivos pa­r­cia­l­me­n­te dañados. Con el bzip2recover se pueden extraer al menos todos los bloques legibles y de­s­co­m­pri­mi­r­los a co­n­ti­nua­ción. Bzip2 es el sucesor oficial de bzip, que utilizaba la co­di­fi­ca­ción ari­t­mé­ti­ca, pero cuyo de­sa­rro­llo no se pudo continuar por motivos de derechos de patente.

Ventajas In­co­n­ve­nie­n­tes
Elevado grado de co­m­pre­sión Muy lento
De­s­co­m­pre­sión de archivos dañados (pa­r­cia­l­me­n­te)

p7zip

En el caso de p7zip nos en­co­n­tra­mos ante una ada­p­ta­ción para pla­ta­fo­r­mas POSIX del programa libre de archivado 7-zip con licencia LGPL. La po­r­ta­bi­li­dad re­pre­se­n­ta la única solución para poder soportar el formato .7z en Linux. El programa recurre al algoritmo de cadena de Lempel-Ziv-Markov o LZMA, de­sa­rro­lla­do en 1998 por Igor Wi­k­to­ro­wits­ch Pawlow, que utiliza un método basado en di­c­cio­na­rio y puede co­n­si­de­rar­se, en general, un de­sa­rro­llo ulterior del algoritmo de deflación (alrededor de un 50 % más de co­m­pre­sión). El archivo creado se podría, en caso necesario, su­b­di­vi­dir en partes de cualquier tamaño, pro­te­ge­r­las con co­n­tra­se­ña y cifrarlas op­cio­na­l­me­n­te por AES de 256 bits (el en­ca­be­za­do).

Imagen: Compresión p7zip en el gestor de archivos de Ubuntu
Co­m­pre­sión p7zip en el gestor de archivos de Ubuntu

Gracias a su elevada tasa de co­m­pre­sión, con el algoritmo Lempel-Ziv-Markow se obtienen re­su­l­ta­dos ex­ce­le­n­tes, además de sacar buena nota también en cuanto a velocidad. Sin embargo, como co­n­tra­pa­r­ti­da, esta he­rra­mie­n­ta requiere mucha potencia, lo que tiene como co­n­se­cue­n­cia que, es­pe­cia­l­me­n­te para fases de co­m­pre­sión más altas, sea necesario disponer de un buen pro­ce­sa­dor de mínimo 2 GHz y de memoria su­fi­cie­n­te (2 GB o más).

Además de poder uti­li­zar­la en la interfaz de línea de comandos o con el gestor de archivos, con p7zip-gui 7-Zip cuenta también con una interfaz gráfica.

Ventajas In­co­n­ve­nie­n­tes
Excelente pro­po­r­ción entre co­m­pre­sión y tiempo de ejecución Altas exi­ge­n­cias al sistema
Pro­te­c­ción con co­n­tra­se­ña y cifrado del en­ca­be­za­do op­cio­na­les

lzop

El programa de co­m­pre­sión lzop (Lempel-Ziv-Oberhumer Packer) está es­pe­cia­li­za­do, como gzip, en la velocidad de la co­m­pre­sión y de­s­co­m­pre­sión, llegando incluso a obtener mejores re­su­l­ta­dos que la he­rra­mie­n­ta libre. Su fu­n­da­me­n­to lo co­n­s­ti­tu­ye el algoritmo de Lempel-Ziv-Oberhumer (LZO) que le da nombre, publicado en 1996 con una licencia GNU General Public. Esta he­rra­mie­n­ta, no ex­ce­si­va­me­n­te exigente en cuanto a recursos del sistema, lleva a cabo una co­m­pre­sión por di­c­cio­na­rio: aquellas se­cue­n­cias de ca­ra­c­te­res que se repiten se su­s­ti­tu­yen por un símbolo que remite a la entrada en el di­c­cio­na­rio de esa misma secuencia pre­via­me­n­te re­gi­s­tra­da en él. Los datos se comprimen en bloques de 256.000 bytes (256 kB) y el archivo original se mantiene in­va­ria­ble por defecto.

Imagen: Menú de inicio de lzop en la interfaz de línea de comandos de Ubuntu
Menú de inicio de lzop en la interfaz de línea de comandos de Ubuntu

Durante el de­sa­rro­llo de lzop, además de la velocidad de co­m­pre­sión y la co­m­pa­ti­bi­li­dad con gzip, también se trató de conseguir una elevada po­r­ta­bi­li­dad. Este es el motivo por el que existen versiones para casi todas las pla­ta­fo­r­mas, incluidos los sistemas macOS y Windows. Los datos co­m­pri­mi­dos con lzop obtienen la extensión .lzo.

Ventajas In­co­n­ve­nie­n­tes
Co­m­pre­sión muy rápida Debido a su alta velocidad, el grado de co­m­pre­sión es menor
Elevada po­r­ta­bi­li­dad

He­rra­mie­n­tas y formatos más ha­bi­tua­les para comprimir en Linux

gzip bzip2 p7zip lzop
Sistema operativo Mu­l­ti­pla­ta­fo­r­ma Linux/Unix, Windows Sistemas Unix-like Mu­l­ti­pla­ta­fo­r­ma
Licencia GNU GPL BSD GNU LGPL GNU GPL
Pro­ce­di­mie­n­to de co­m­pre­sión Algoritmo de deflación Tra­n­s­fo­r­ma­ción de Burrows-Wheeler y Move-to-front, co­di­fi­ca­ción de Huffman Algoritmo de LZMA Algoritmo de LZO
Formato de archivo .gz .bz2 .7z .lzo
Cifrado AES de 256 bits
Modos de co­m­pre­sión 1–9 1–9 0–9 1, 3, 7–9
Puntos fuertes Muy rápido Muy buen grado de co­m­pre­sión Grado de co­m­pre­sión excelente, se pueden comprimir di­re­c­to­rios Muy rápido, se pueden comprimir di­re­c­to­rios
Puntos débiles Solo se pueden comprimir archivos in­di­vi­dua­les Velocidad media, solo se pueden comprimir archivos in­di­vi­dua­les Emplea mucha potencia del sistema Grado de co­m­pre­sión débil

La tabla anterior revela que no existe la he­rra­mie­n­ta de em­pa­que­ta­do im­pre­s­ci­n­di­ble y, además, que es im­po­r­ta­n­te co­n­si­de­rar el escenario de apli­ca­ción a la hora de elegir el programa de co­m­pre­sión más adecuado. P7zip, por ejemplo, ofrece claras ventajas en términos de tasa de co­m­pre­sión, pe­r­mi­tie­n­do, a la vez, el cifrado de datos AES de 256 bits, una ca­ra­c­te­rí­s­ti­ca altamente valorada en cualquier entorno donde la seguridad sea prio­ri­ta­ria. Adi­cio­na­l­me­n­te, con p7zip, así como con lzop, es posible comprimir di­re­c­to­rios completos, mientras que gzip y bzip2 solo permiten comprimir archivos in­de­pe­n­die­n­tes. Por otra parte, este tipo de ventajas exigen ciertos re­qui­si­tos del sistema, una ca­ra­c­te­rí­s­ti­ca que hace de p7zip un programa menos adecuado para la co­m­pre­sión a menor escala.

Comprimir archivos en Linux: manual de uso

Los programas me­n­cio­na­dos revelan grandes di­fe­re­n­cias en lo que respecta a la tasa y a la velocidad de co­m­pre­sión, aunque, cuando se trata de su sintaxis y de su apli­ca­ción, saltan a la vista los elementos en común. Todas pueden uti­li­zar­se a través de la línea de comandos y no requieren ne­ce­sa­ria­me­n­te una interfaz gráfica o un gestor de archivos. Los más in­e­x­pe­r­tos, por su parte, se fa­mi­lia­ri­za­rán rá­pi­da­me­n­te con los diversos pa­rá­me­tros y comandos ne­ce­sa­rios. A modo de ejemplo, ilu­s­tra­mos a co­n­ti­nua­ción cómo comprimir archivos con bzip2 y cómo de­s­co­m­pri­mi­r­los en .bz2. La sintaxis general de bzip2 tiene la siguiente forma:

bzip2 opciones fichero(s)

Para una co­m­pre­sión estándar no es necesario indicar opciones. Estas son solo ne­ce­sa­rias en caso de modificar la co­n­fi­gu­ra­ción de la co­m­pre­sión, abrir el menú general o querer de­s­co­m­pri­mir un archivo .bz2. Para comprimir el documento test.txt solo hace falta este comando:

bzip2 test.txt

Con él se elimina el documento original y se sustituye por el archivo co­m­pri­mi­do test.txt.bz2. Si se desean comprimir varios archivos, es su­fi­cie­n­te con es­cri­bi­r­los uno detrás del otro:

bzip2 test.txt test2.txt test3.txt

Para de­s­co­m­pri­mir un documento, solo hay que añadir la opción co­rre­s­po­n­die­n­te (-d):

bzip2 -d test.txt

A co­n­ti­nua­ción, pre­se­n­ta­mos un listado con el resto de comandos en bzip2:

Opción De­s­cri­p­ción
-1 … -9 Indica el grado de co­m­pre­sión en una escala del 1 al 9, donde 1 re­pre­se­n­ta el más bajo y 9 el más alto. El valor es­ta­ble­ci­do por defecto es el 5.
-f Inicia la co­m­pre­sión, incluso en el caso de que ya exista un archivo .bz2 con el mismo nombre. En este caso, el archivo anterior se so­bre­s­cri­be.
-c Escribe el fichero co­m­pri­mi­do en la salida estándar (stdout), ge­ne­ra­l­me­n­te el es­cri­to­rio
-q Bloquea todas las no­ti­fi­ca­cio­nes de bzip2
-v Muestra in­fo­r­ma­ción adicional, como la tasa de co­m­pre­sión de cada archivo co­m­pri­mi­do
-t Comprueba la in­te­gri­dad del archivo se­le­c­cio­na­do
-k Aña­dié­n­do­lo a un comando de co­m­pre­sión, el archivo original no se pierde
-h Abre el menú general

El programa de archivado tar se utiliza desde hace más de 30 años y su uso sigue estando vigente. Esto se debe, en parte, a que con esta he­rra­mie­n­ta el usuario conserva los derechos de uso, aun después del em­pa­que­ta­do, pero también a la po­si­bi­li­dad de comprimir di­re­c­to­rios completos. Esta ca­ra­c­te­rí­s­ti­ca hace de tar el co­m­ple­me­n­to perfecto de he­rra­mie­n­tas de co­m­pre­sión como gzip y bzip2, los cuales solo pueden comprimir archivos in­di­vi­dua­les. En un primer paso, el programa reúne todos los archivos del di­re­c­to­rio se­le­c­cio­na­do en un único fichero, en el que los archivos se encadenan unos a otros sin ser mo­di­fi­ca­dos. A co­n­ti­nua­ción, se lleva a cabo el em­pa­que­ta­do con la ayuda de un programa es­pe­cí­fi­co. Como resultado de este proceso, de­no­mi­na­do em­pa­que­ta­mie­n­to pro­gre­si­vo, pero también compacto o sólido, los archivos co­m­pri­mi­dos reciben ex­te­n­sio­nes de formato como .tar.gz (.tgz) y tar.bz2 (.tbz2). El programa de co­m­pre­sión de archivos tar también puede de­s­co­m­pri­mir este tipo de archivos.

Cómo (des)comprimir archivos en Linux

No es obli­ga­to­rio combinar tar con una he­rra­mie­n­ta de co­m­pre­sión, de tal modo que también es posible em­pa­que­tar diversos archivos sin comprimir en un único fichero. Si, por ejemplo, queremos em­pa­que­tar dos do­cu­me­n­tos no co­m­pri­mi­dos, test.txt y test2.txt, en un solo archivo de­no­mi­na­do archivo.tar, es su­fi­cie­n­te con utilizar el siguiente comando:

tar -cf archivo.tar test.txt test2.txt

Para de­s­co­m­pri­mi­r­lo, se su­b­s­ti­tu­ye el parámetro -c, con el que se genera un archivo nuevo, por -x, con el que se extraen los archivos de un fichero co­m­pri­mi­do. Si no se tiene que extraer un archivo es­pe­cí­fi­co, no hace falta indicar de qué archivos se trata:

tar -xf archivo.tar

Si se quiere comprimir un archivo ya co­m­pri­mi­do, por ejemplo, con gzip, con la extensión de formato .tar.gz, tar también incluye la opción adecuada. Como el programa ha im­ple­me­n­ta­do opciones para la co­m­pre­sión y la de­s­co­m­pre­sión con bzip2, xz, compress y gzip, es su­fi­cie­n­te igua­l­me­n­te con un único comando:

tar -czf archivo.tar.gz test.txt test2.txt

La ex­tra­c­ción de un archivo .tar.gz se di­fe­re­n­cia de su equi­va­le­n­te para archivos no co­m­pri­mi­dos, asimismo, en el parámetro del programa de co­m­pre­sión:

tar -xzf archivo.tar.gz
Consejo

el parámetro -f, con cuya ayuda se se­le­c­cio­na el archivo que queremos de­s­co­m­pri­mir, siempre se ha de indicar en la última posición, porque todos los ca­ra­c­te­res que le siguen se in­te­r­pre­tan como el nombre del archivo:

Los comandos más im­po­r­ta­n­tes para el archivado con tar en Linux

Además de estos comandos básicos que permiten el archivado de di­re­c­to­rios, también existe una serie de pa­rá­me­tros que permiten es­pe­ci­fi­car el proceso de co­m­pre­sión y ex­tra­c­ción. Entre ellos se cuentan, por ejemplo, los me­n­cio­na­dos métodos de co­m­pre­sión, pero también algunas opciones de co­n­fi­gu­ra­ción para di­re­c­to­rios u opciones de co­m­pro­ba­ción y vista previa de los archivos tar, como muestra la siguiente tabla:

Opción De­s­cri­p­ción
--help Abre el menú de tar
-c Crea un nuevo archivo
-d Permite comparar archivos en el di­re­c­to­rio y en el sistema de archivos
-f Escribe los do­cu­me­n­tos se­le­c­cio­na­dos en un archivo con el nombre pro­po­r­cio­na­do; lee los datos del archivo con el nombre pro­po­r­cio­na­do
-j Comprime archivos con bzip2 o los extrae
-J Comprime archivos con xz o los extrae
-k Evita que, al extraerse un archivo, se so­bre­s­cri­ban los ficheros exi­s­te­n­tes
-p Se encarga de mantener los permisos de acceso en la ex­tra­c­ción
-r Añade carpetas a un archivo ya existente
-t Muestra el contenido del archivo se­le­c­cio­na­do
-u Agrega a un archivo solo aquellas carpetas más recientes que las versiones exi­s­te­n­tes
-x Extrae do­cu­me­n­tos de un archivo
-z Comprime archivos con gzip o los extrae
-Z Comprime archivos con compress o los extrae
-A Im­ple­me­n­ta el contenido de un archivo en otro diferente
-C Se cambia al di­re­c­to­rio indicado para se­gui­da­me­n­te de­s­co­m­pri­mir aquí el archivo se­le­c­cio­na­do
-M Opción para depositar, mostrar o extraer un archivo con varias partes
-W Comprueba el archivo tras el proceso de archivado
Consejo

algunas opciones, como agregar carpetas a archivos exi­s­te­n­tes (-r) no funcionan con archivos co­m­pri­mi­dos. Para poder hacerlo, se tienen que extraer antes.

Ejemplos: Mostrar el contenido de un archivo:

tar -tf archivo.tar

Ac­tua­li­zar el contenido de un archivo (no tiene en cuenta los su­b­di­re­c­to­rios):

tar -uf archivo.tar documento(s)

Ampliar el contenido de un archivo:

tar -rf archivo.tar documento nuevo

Comparar el contenido de un archivo con el sistema de archivos (ejecutar en el di­re­c­to­rio de archivos):

tar -dvf archivo.tar

File Roller: el gestor de archivos para GNOME

File Roller es una interfaz gráfica para di­fe­re­n­tes he­rra­mie­n­tas de em­pa­que­ta­mie­n­to y co­m­pre­sión que se ejecutan de forma pre­de­te­r­mi­na­da en la terminal. Este gestor de archivos está di­s­po­ni­ble para entornos de es­cri­to­rio GNOME y Unity, y se di­s­tri­bu­ye desde 2001 bajo la licencia GNU GPL. File Roller permite vi­sua­li­zar el contenido de di­fe­re­n­tes ficheros, así como extraer, añadir o eliminar archivos. También facilita la creación de nuevos archivos co­m­pri­mi­dos o sin modificar, así como su co­n­ve­r­sión a otros formatos. Para este propósito, la ventana principal del programa cuenta con di­fe­re­n­tes botones y menús, así como con la función drag and drop. Además de los formatos de archivo tar, como .tar.gz, File Roller soporta los si­guie­n­tes formatos:

  • .7z
  • .tar
  • .gzip
  • .bzip2
  • .ar
  • .jar
  • .cpio

Por defecto, File Roller está instalado en algunas de las di­s­tri­bu­cio­nes Linux, como Ubuntu, pero también puede ser instalado po­s­te­rio­r­me­n­te con ayuda del gestor de paquetes o se puede descargar di­re­c­ta­me­n­te desde su página web oficial. Una al­te­r­na­ti­va para el entorno de es­cri­to­rio KDE es Ark.

Ir al menú principal