Sunteți pe pagina 1din 3

LINUX USER Lnea de Comandos

gzip, bzip2 y tar

PAQUE-EXPRESS
Un escueto comando es todo lo que se necesita para empaquetar los datos o extraerlos de un archivo. POR HEIKE JURZIK

l empaquetar y comprimir ficheros reporta numerosos beneficios. El empaquetado y la compresin de ficheros ocupa menos espacio en el disco y requiere menos ancho de banda de Internet. Linux posee programas a tal efecto basados en GUI, como son File Roller o Ark, as como herramientas de la lnea de comandos para crear y empaquetar varios tipos de archivo. Este artculo examina algunas herramientas de la shell para el archivado de ficheros y demuestra el tipo de empaquetado experto que las inteligentes combinaciones de los comandos de Linux ofrecen al usuario de la lnea de comandos.

Empaquetado gzip

fino

con

El programa gzip (GNU Zip) es el empaquetador por defecto de Linux. Comprime ficheros simples, pero no crea directorios de archivos completos. En su forma ms simple, el comando gzip tiene el siguiente aspecto:
gzip fichero

Lnea de Comandos
A pesar de que los GUIs como KDE y GNOME son tiles para muchas tareas, si quieres sacar el mximo partido de tu instalacin Linux, tendrs que volver a la vieja y fiable lnea de comandos de vez en cuando. Adems, habr ocasiones cuando te enfrentes a situaciones en las que un conocimiento prctico de las instrucciones del shell puede ahorrarte tiempo o sacarte de un apuro. Esta seccin pretende ser tu gua en la jungla de instrucciones de los terminales de texto.

gzip sustituye el fichero original con una versin comprimida aadiendo la extensin .gz. Las propiedades del fichero, como el acceso y la marca del tiempo de modificacin se guardan en el proceso de empaquetado. Si se prefiere usar una extensin diferente, puede establecerse el parmetro -S (sufijo) para especificarlo. Por ejemplo, el comando
gzip -S .z imagen.bmp

los ficheros comprimidos que usan formatos comprimidos para el original, como es el caso de MP3 o JPEG. La lista 1 muestra la diferencia en la compresin entre un fichero bitmap y un fichero JPEG. Adicionalmente puede especificarse un factor de compresin entre 1 y 9 para influenciar la compresin: gzip -1 es rpido y gzip -9 es lento pero tiene un ndice de compresin superior. El predeterminado es -6. Si se quiere cambiar

Listado 1: Compresin Comparada


01 $ <B>ls -l<B> 02 -rw-r--r-- 1 daisy daisy 2313894 Sep 3 22:47 screenie.bmp 03 -rw-r--r-- 1 daisy daisy 169862 Sep 5 12:41 screenie.jpg 04 $ <B>gzip screenie*<B> 05 $ <B>ls -l<B> 06 -rw-r--r-- 1 daisy daisy 9547 Sep 3 22:47 screenie.bmp.gz 07 -rw-r--r-- 1 daisy daisy 130524 Sep 5 12:41 screenie.jpg.gz

crea un fichero comprimido llamado image.bmp.z El tamao del fichero comprimido depende de la distribucin de entradas idnticas en el fichero original. gzip comprimir un fichero de manera ms eficiente si contiene patrones que se repiten frecuentemente. No funciona bien para

86

Nmero 14

WWW.LINUX- MAGAZINE.ES

Lnea de Comandos LINUX USER

este ltimo puede hacerse configurando la variable de entorno gzip en el fichero ~/.bashrc
export GZIP="-9"

Un fichero puede desempaquetarse usando bien gunzip o bien gzip -d. Si la herramienta descubre un fichero del mismo nombre en el directorio de trabajo, informa al usuario para asegurarse de que se sepa que se est sobreescribiendo este fichero:
gunzip screenie.jpg.gz gunzip: screenie.jpg U already exists: do you wishU to overwrite (y or n)?

peracin. En la compresin, la herramienta divide los ficheros en bloques individuales. Si un fichero est daado, puede ser posible rescatar los otros ficheros no daados. Para hacerlo, hay que correr bzip2recover para desempaquetar los elementos no daados. Aparte de estas pocas diferencias menores, la mayora de las opciones bzip2 son como las de su equivalente gzip. De nuevo, hay que especificar simplemente el nombre del fichero para comprimirlo:
bzip2 fichero

Listado 2: gzip y bzip2 Comparados


01 $ <B>ls -l bild.bmp*<B> 02 -rw-r--r-- 1 daisy daisy 2313894 Sep 5 13:35 image.bmp 03 -rw-r--r-- 1 daisy daisy 2534 Sep 5 13:35 image.bmp.bz2 04 -rw-r--r-- 1 daisy daisy 9547 Sep 5 13:35 image.bmp.gz

Para cambiar el predeterminado, se configura nuevamente la variable de entorno BZIP2 aadiendo a ~/.bashrc lo siguiente
export BZIP2="-6"

Si se dice [n], gzip aborta la operacin. Si no interesa el chequeo de seguridad, puede deshabilitarse configurando la opcin -f (por force). El parmetro tiene un efecto colateral adicional: por defecto, gzip se niega a comprimir enlaces simblicos. Pero si se configura el parmetro -f antes de apuntar gzip al symlink, la herramienta comprimir el fichero al cual apunta el enlace y asigna el nombre del symlink (ms la extensin normal). Cuando se desempaqueta el fichero, no ofrece un symlink sino un fichero normal (Figura 1). No es necesario desempaquetar ficheros de texto comprimidos, tales como los HOWTOs localizados en /usr/ share/doc/, antes de usar los paginadores less o more para verlos. Corriendo gzip con la opcin -c (que da una salida a stdout) y redireccionando la salida a un paginador es mucho ms rpido, por ejemplo:
gzip -dc /usr/share/doc/U iptables/README:Debian.gz | less

El fichero comprimido tendr despus del evento una extensin .bz2 y guarda las propiedades del fichero original, al igual que en la compresin con gzip. En contraste con gzip, bzip2 tiene una opcin para crear una copia del original. Para hacerlo, simplemente se especifica el parmetro -k (por keep guardar):
bzip2 -k file

Para hacer lo mismo con gzip, se tendra que sacar el fichero comprimido a una salida estndar, para redireccionar luego la salida a un nuevo fichero: gzip -c file > file.gz. Sin embargo, la versin comprimida del fichero no guardar en este caso las propiedades del fichero original. Al igual que con gzip,los parmetros 1 a -9 (valor por defecto) le dicen a bzip2 el nivel de compresin a usar.

Para desempaquetar un fichero comprimido, hay que establecer el parmetro -d de bzip2 o usar la herramienta especial de desempaquetado bunzip2. Al igual que gzip, bzip2 ofrece alguna proteccin contra la sobreescritura que inadvertidamente se produce en los ficheros existentes, pero en contraposicin con gzip, esta herramienta no ofrece libertad de eleccin. En su lugar, presenta el siguiente mensaje y sale de la operacin:
$ bunzip2 peggy.jpg.bz2 bunzip2: Output fileU peggy.jpg already exists.

El parmetro -f deshabilita este comportamiento.

Puede abreviarse, an ms usando zless file.gz. Este comando, de hecho, es un pequeo script que ofrece un resultado similar pero con menos tecleos.

Nuevo, bzip2

Rpido,

Mejor:

La herramienta bzip2 emplea un algorito de compresin diferente, lo que hace que comprima los ficheros ms efectivamente. El listado 2 muestra una comparativa entre gzip y bzip2. Adicionalmente, bzip2 posee un modo de recu-

Figura 1:Hay que tener cuidado cuando se comprimen enlaces simblicos. Puede usarse el parmetro -f para forzar esta operacin, pero desempaquetando el fichero, no se obtendr un enlace simblico.

WWW.LINUX- MAGAZINE.ES

Nmero 14

87

LINUX USER Lnea de Comandos

Cuando tar incluye el nombre de la carpeta, pueden manejarse directorios y subdirectorios completos de la misma manera, en lugar de especificar

backup_2005_10_05.tar). Este backup incluir todos los directorios desde el root/ , pero sin el directorio /proc, el cual no contiene ningn dato real.

Todos Juntos!
Como se ha mencionado previamente, tar dispone de un nmero de parmetros para crear archivos comprimidos gzip o bzip2 de una vez. La sintaxis para la variante del comando tar es:
tar -cvzf archive.tar.gzU fichero(s)

En el Archivo
El programa tar almacena mltiples ficheros en un archivo. El nombre del programa (tar es la forma reducida para tape archiver) indica su original uso para la administracin de archivos de grabacin. Pero tar puede hacer ms que concatenar ficheros; tiene opciones para comprimir archivos directamente usando gzip o bzip2 y esto es lo que ofrece los nombres de los archivos tar.gz y tar.bz2. Para colocar mltiples ficheros en un archivo, escribimos
tar -cvf archivo.tar fichero1U fichero2

nombres de ficheros individuales:


$ tar -cvf archivo.tar carpeta/ test/ test/screenie.bmp test/link.bmp test/new/ test/new/screenie.jpg test/new/new/ ...

Si se prefiere usar bzip2 en lugar de gzip con tar, reemplazar la opcin -z en el comando precedente con -j:
tar -cvjf U archive.tar.bz2 fichero(s)

por ejemplo. Las opciones -c, -v y -f, las cuales se encuentran en su forma corta en este comando, le dicen a tar que cree el archivo (c por crear), que informe de lo que est ocurriendo por detrs (v por verboso) y que interprete el primer argumento (archive.tar) como el nombre del archivo (f por fichero). Si se nos ha olvidado de incluir algn fichero, no es necesrio rehacer el archivo completo. Se puede simplemente concatenar al fichero usando la opcin -r.
tar -rf archivo.tar file

Pueden establecerse los parmetros -z y -j apropiadamente cuando se desempaqueta el archivo para evitar un paso extra. Por ejemplo, en lugar de
bunzip2 archive.tar.bz2 tar -xvf archive.tar

Puede tener sentido excluir algunos directorios del archivo, especialmente si se est usando tar para backups. El parmetro --exclude ofrece esta posibilidad. El parmetro --rsh-command tambin resulta til en este contexto, ya que sirve para decirle a tar que use SSH para enviar el backup a otra mquina. El comando completo podra ser algo como:
tar -cvf user@host:/scratchU /tmp/backup_$U (date '+%Y_%m_%d').tar U --rsh-command=/usr/bin/ssh U --exclude=/proc /

se puede escribir
tar -xvjf archive.tar.bz2

para invocar la opcin -j para desempaquetar un archivo bzip2. I


Heike Jurzik estudi alemn, ingls y Ciencia Informtica en la Universidad de Colonia, Alemania. Descubri Linux en 1996 y desde entonces ha estado fascinada con la lnea de comando de Linux. En su tiempo libre se le puede encontrar en sesiones de folk irlands o visitando Irlanda.

PAaa desempaquetar un archivo, se realiza con la opcin -x (x por extraer):


tar -xvf archivo.tar

Para asegurarse de que tar no sobreescriba ficheros existentes con contenido desde el archivo, es una buena idea desempaquetar el archivo en un directorio temporal, o usar -t en vez de -x para ver el proceso de prueba (t por trial) y ver los ficheros y directorios que contiene el archivo.

Este extenso comando da las siguientes instrucciones: usar SSH para crear una copia de backup en el directorio /scratch/ tmp/ en la mquina host, basando el nombre del archivo en el prefijo del backup, la fecha actual y en la extensin .tar (por ejemplo,

88

Nmero 14

WWW.LINUX- MAGAZINE.ES

LA AUTORA

S-ar putea să vă placă și