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 250 € 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.

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.

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).

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.

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

Tar y Linux: por qué es tan popular este programa de co­m­pre­sión

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