You are on page 1of 13

Aprender  a Comprimir y

 Descomprimir en GNU/Linux.
Jonathan Ruiz Gallardo.

 

  La   mayoría   de   los   usuarios   de   otros   Sistemas   Operativos   están 
familiarizados   con   el   concepto   “Archivos   Comprimidos”.   Un   archivo 
Comprimido   es  un  archivo  que  contiene   uno  o   varios  archivos   en   forma 
comprimida. Los archivos comprimidos son la forma habitual de distribuir 
software a través de Internet, normalmente en formato ZIP. Aunque Linux 
incluye el comando  UNZIP  para acceder a los contenidos de los archivos 
ZIP,   en   el   mundo   UNIX   los   archivos     suelen   usar   el   formato  tar,   y   se 
comprimen con el gzip, que comprime archivos individuales.  

  En este trabajo, procederé a explicar los diferentes comandos usados en el 
Sistema   Operativo   GNU/Linux   para   comprimir,   descomprimir   y 
empaquetar un fichero ó ficheros. Empezaré por una breve explicación de 
cada uno de ellos y después indicaré su manera de utilizarlos incluso junto 
a otros comandos expuestos aquí. 

También incluyo distintas “Notas” personales para explicar varias maneras  
de realizar algo, o a tener en cuenta.
Tar:

*Tar nunca comprime*

 Este comando (uno de los más potentes y complejos en GNU/Linux, por su 
gran   cantidad   de   opciones   que   presenta)   sirve   normalmente   para 
empaquetar o desempaquetar ficheros, con los de empaquetar me refiero al 
simple hecho de guardar en un único fichero una lista de varios ficheros; o 
el   contenido   de   todo   un   directorio   (o   varios   directorios).   Con   tar 
preservamos las estructuras de directorios y permisos de los mismos. Para 
comprimir usaremos otros comandos.
 
       Si realizamos un “man tar” en la shell de Linux, encontramos esto:
 

Aquí nos explica su utilidad, la manera correcta de usarlo y 
las posibles combinaciones que se nos dán.

El formato del comando tar sería:
“tar ­[OPCIONES] [Fichero1] [Fichero2] .... [FicheroN]”

Nota: todo los comandos libres de “comillas”.

En las posibles opciones podemos utilizar las siguiente:

c: Crea un nuevo archivo tar.

v: Modo “verbose”, que esto quiere decir que se nos mostrará por 
pantalla los operaciones que va realizando archivo por archivo, si 
no se pone esta opción se ejecutara la acción pero en pantalla no 
veremos el proceso. En resumidas cuentas, no hay ningún 
problema en no ponerla.
x:  Extrae los archivos. ( Desempaqueta los ficheros que se 
encuentran dentro del archivo .tar     ).
t: Nos muestra el contenido del archivo tar. Cuando deseas saber lo 
que contiene ese archivo sin tener que desempaquetándolo se 
utiliza esta opción. 
u: Sólo añade ficheros que son más recientes que la copia en el 
archivo.
r: Agregar ficheros a un archivo.tar

p: Mantiene los permisos originales de los archivos.

f:   Cuando se usa con la opción ­c, usa el nombre del archivo 
especificado para la creación del archivo tar; cuando se usa con 
la opción ­x, retira del archivo el archivo específico. Esto sería 
para nombrar los tar. 

z: Comprime el archivo tar con gzip. (Hablaré de él después).

j: Comprime el archivo tar con bzip2. (Hablaré de él más adelante).

k: Mantiene los ficheros existentes; no los sobreescribe en el 
archivo.

Usos del tar

Por ejemplo, Imaginemos que tenemos 4 carpetas(vacías o no) y las 
queremos empaquetar en un archivo .tar que contengan éstas.

Carpetas:
­­hola0
­­hola1
­­hola2
­­hola3

En la shell pondríamos:

$tar   ­cvf    NombreQueQueramos.tar    hola0  hola1  hola2  hola3
ó también  poniendo al final       hola*   ; utilizando el comodín.

Así de fácil.
Para volver a desempaquetarlas:

$tar ­xvf   NOMBREqueLePusimos.tar 

Si lo queremos descomprimir sin tener que estar en ese directorio:

$tar  ­xvf NombreQueLePusimos.tar   /directorio/a/descomprimir/
 Las opciones básicas del comando tar son esas, nada más. Ahora bien, si 
queremos  empaquetarlos   y  comprimirlos  para  que  no  ocupen   demasiado 
espacio; deberemos aplicar otros comandos junto al tar. Para eso tenemos 
disponibles el “Gzip” y “Bzip2”.  Para descomprimirlos usaremos “Gunzip” 
y “Bunzip2” respectivamente. 

  
Nota: gzip ó bzip2 sólo comprimen ficheros (no directorios, para eso existe tar). Para comprimir y archivar al 
mismo tiempo hay que combinar el tar y el gzip o el bzip2.

Gzip:
  Una   herramienta   especializada   en   la   compresión   y   descompresión.   El 
fichero   a   comprimir   se   reemplaza   por   otro   con   la  “extensión.gz”, 
manteniéndose   los   mismos   permisos,   propietarios   y   tiempos   de 
modificación. 

  Así de fácil. El resultado de este comando es un archivo terminado en la 
extensión  .gz  el  cual  generalmente  debería   ser   algo  más pequeño   que  el 
original. También hay que saber que el archivo que hicimos ( adios.txt ) ya 
no   existirá   más,   ya   que   a   sido   reemplazado   por   “adios.txt.gz”.  Si 
hubiéramos comprimido alguna imagen o algún archivo “.mp3” u otro de 
este tipo, este no se comprimirá de una forma notoria, ya que estos tipos de 
archivos   ya   están   comprimidos   y   si   llegaran   a   comprimirse   la   diferencia 
sería mínima. Si lo que deseamos es que “gzip”  utilice el mayor factor de 
compresión posible utilizamos la opción “­9” de la siguiente forma:

                            
$gzip ­9 adios.txt 

  Claro   está,   que   para   notar   alguna   diferencia   de   compresión   debemos 
comprimir   a   ser   posibles   directorios   completos   (usando   tar   para  
empaquetar), no  simples ficheros de texto :)

  Al realizar una compresión con la opción “­9” este comando tomará un 
poco   más   de   tiempo   que   el   común   para   comprimir   el   archivo.   Para 
solucionar el problema podríamos usar valores más bajos desde la línea de 
comandos,   pero   esto   tendrá   como   consecuencia   un   menor   tiempo   de 
compresión, pero a la vez una no tan buena compresión del fichero “adios”.

Si ahora queremos descomprimirlo tenemos la opción de utilizar “gzip ­d” 
o   el   comando   “gunzip”.   Este   comando   básicamente   lo   que   hace   es 
descomprimir cualquier archivo que tenga una extensión reconocible. Entre 
las extensiones reconocibles tenemos:  
            .gz           ­gz        .z           ­z          .Z                  ­Z    

Algunas opciones que podemos utilizar con “gzip” son las siguientes:
“gzip ­[opciones]”
d: Se usar para descomprimir

f: Fuerza   la   compresión   o   descompresión.   No   hace   ninguna 
pregunta si desea sobreescribir. 
h: Muestra la pantalla de ayuda.

l: Muestra información sobre los archivos que están comprimidos, 
no los descomprime.
t: Chequea la integridad del archivo comprimido.

r: Comprime   recursivamente,   osea   comprime   el   directorio 
principal y todos sus subdirectorios. 
v: Muestra   el   nombre   y   el   porcentaje   de   reducción   para   cada 
archivo comprimido.
V:  Muestra el número de versión, y las opciones de compilación de 
este.
1 ó 9 El   1   aumenta   la   velocidad   pero   disminuye   el   total   de 
compresión, así se puede ir subiendo hasta 9 donde la velocidad 
de compresión es lenta pero la cantidad de bytes reducidos es 
mayor.
S: Se usa para cambiar el sufijo por defecto que es “.gz” .

name:  El   nombre   de   los   archivos   a   comprimir,   se   puede   usar 
comodines.

Nota: El comando para descomprimir “gunzip” tiene los mismo argumentos, excepto “­d” y los  
números de 1 a 9 que son propios de “gzip”,

Bzip2:
    Bzip2   está   creado   con   una   magnífico   algoritmo   sobre   compresión   de 
datos. Generalmente consigue que los ficheros queden en un 60­70% del 
tamaño   que   tienen   los   ficheros   comprimidos   con   gzip.   La   sintaxis   es 
parecida a la del programa  “gzip”  . Bzip2 esta desarrollado bajo licencia 
BSD, gzip GNU. Al igual que “gzip” no comprime directorios, solo ficheros. 
Para   comprimir   directorios,   tendremos   antes   que   empaquetarlos   en   un 
“archivo.tar” . Por ejemplo, tenemos 4 carpetas, cada una tiene a su vez 
ficheros.   Si   queremos   comprimirlos   tendremos   que   empaquetarlos   con 
“.tar” y una vez hecho esto comprimirlos con “bzip2”.

  Lo primero de todo, es empaquetar las carpetas para ello:
Nota: Todos esto se puede realizar con el comando “tar ­z” para comprimir con “gzip”  ó “tar ­j”  
para comprimir con “bzip2”; y así no tenerlo que hacer en diferentes pasos. En cambio, para  
realizar este ejemplo; lo realizo paso a paso. Quiero decir: primero empaquetaré con tar y  
seguidamente comprimiré, y no directamente empaquetar y comprimir en una sola línea con  
estos comandos:
$tar ­czvf fichero.tar.gz 
             $tar ­cvfj nombredelfichero.tbz2

 Ahora comprobamos el tamaño que ocupan todas esas carpetas con sus 
respectivos ficheros:

Observamos que el “archivo.tar”  ocupa 30720 bytes en total.

Si lo comprimiéramos con “gzip”

Ocuparía 16874 bytes.
Ahora si lo hubiéramos comprimido con “bzip2”:

17767 bytes.

Nota: Generalmente bzip2, comprime más los archivos debido al uso de más recursos y tiempo.

RESUMEN:

Ficheros tar

Empaquetar: tar ­cvf archivo.tar  
/dir/a/comprimir/
Desempaquetar: tar ­xvf archivo.tar
Ver contenido tar ­tf archivo.tar

 Ficheros gz

Comprimir: gzip ­9 fichero
Descomprimir: gzip ­d fichero.gz

Ficheros bz2

Comprimir: bzip fichero
Descomprimir: bzip2 ­d fichero.bz2

Ficheros tar.gz

Comprimir: tar ­czfv archivo.tar.gz ficheros
Descomprimir: tar ­xzvf archivo.tar.gz
Ver contenido: tar ­tzf archivo.tar.gz

Ficheros tar.bz2

Comprimir: tar ­c ficheros | bzip2 > 
archivo.tar.bz2
Descomprimir: bzip2 ­dc archivo.tar.bz2 | tar 
­xv
Ver contenido: bzip2 ­dc archivo.tar.bz2 | tar ­t

Ficheros zip

Comprimir: zip archivo.zip ficheros
Descomprimir: unzip archivo.zip
Ver contenido: unzip ­v archivo.zip

Ficheros lha

Comprimir: lha ­a archivo.lha ficheros
Descomprimir: lha ­x archivo.lha
Ver contenido: lha ­v archivo.lha
Ver contenido: lha ­l archivo.lha

Ficheros arj

Comprimir: arj a archivo.arj ficheros
Descomprimir: unarj archivo.arj
Descomprimir: arj ­x archivo.arj
Ver contenido: arj ­v archivo.arj
Ver contenido: arj ­l archivo.arj

Ficheros zoo

Comprimir: zoo a archivo.zoo ficheros
Descomprimir: zoo ­x archivo.zoo
Ver contenido: zoo ­L archivo.zoo
Ver contenido: zoo ­v archivo.zoo

Rar 
Compresor bastante potente y es muy usual encontrar ficheros 
comprimidos por Internet.

Ficheros rar

Comprimir: rar ­a archivo.rar ficheros
Descomprimir: rar ­x archivo.rar
Ver contenido: rar ­l archivo.rar
Ver contenido: rar ­v archivo.rar