Descomprimir en GNU/Linux.
Jonathan Ruiz Gallardo.
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
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
l: Muestra información sobre los archivos que están comprimidos,
no los descomprime.
t: Chequea la integridad del archivo comprimido.
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 6070% 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