Como es lo común hoy en día, existen varios tipos
de programas que sirven tanto para comprimir y descomprimir archivos. Slackware
Linux posee varias utilidades que cumplen estas funciones y varias otras
además, entre las cuales podemos mencionar el respaldo de archivos
para enviarlos entre las diferentes máquinas que se encuentran conectadas
a internet en el menor tiempo posible. Estas utilidades nos sirven
tanto para manipular los archivos de tipo Unix como para los archivos de
tipo Microsoft Windows.
gzip(1) reduce el tamaño de un archivo
usando el codigo Lempel-Ziv (LZ77). Este es un programa de compresión
GNU. Sencillamente lo que este hace es tomar un archivo y comprimirlo. El
comando sin opciones sería este:
$ gzip prueba1 |
El resultado de este comando es un archivo llamado prueba1.gz el cual
generalmente debería ser algo más pequeño que el archivo
prueba1. Es también conveniente mencionar que el archivo prueba1 ya
no existirá más, ya que a sido reemplazado por prueba1.gz.
Si por ejemplo lo que deceeamos es comprimir alguna imágen 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 comprimirce la diferencia sería despreciable.
Si lo que deceamos es que gzip utilice el mayor factor de compresión
posbile utilizamos la opción -9 de la siguiente forma:
$ gzip -9 archivo1 |
Este tomará un poco más de tiempo que el común para comprimir el archivo1. Para solucionar el problema del tiempo podríams utilizar los valores más bajos desde la línea de comandos, pero esto tendrá como concecuencia un menor tiempo de compresión, pero a la vez una no tan buena compresión del archivo1.
Ahora si lo que deceamos es descomprimir archivos que hayan sido comprimidos con gzip tenemos la opción de utilizar el comando "gzip -d" o el comando gunzip. Este comando basicamente lo que hace es descomprimir cualquier archivo que tenga una extensión reconocible. Entre las extensiones reconocibles por gunzip tenemos : .gz, -gz,.z, -z, .Z, o -Z. Lo más sencillo sería usar el comandpo de la siguiente forma:
$ gunzip archivo1.gz |
Lo que aquí ocurre esque nos descomprime el archivo1.gz dejandonos un archivo llamado archivo1 en el directorio en donde aplicamos el comando. Como mencioné un par de líneas atrás, también podríamos haber usado el comando gzip con la opción -d, lo cual sería de la siguiente forma:
$ gzip -d archivo1.gz |
Con lo que obtendríamos un resultado igual que si aplicaramos
el comando "gunzip archivo1.gz". La explicación para esto esque, gunzip
es nada más y nada menos que un link blando ( o link simbólico)
a /bin/gzip. Esto lo podrémos verificar realizando lo siguiente:
$ whereis gunzip |
Como ya sabemos que gunzip simplemente es un link blando a gzip, podremos
deducir facilmente que podemos descomprimir cualquier archivo gzipeado tanto
con gunzip como con gzip.
bzip2 comprime archivos usando el algoritmo de la compresión
del texto, el clasificar de bloque del Madriguera-Rodador, y la codificación
de Huffman. La compresión es generalmente considerablemente mejor
que la alcanzada por compresores mas convencionales como los basados en LZ77/LZ78,
y se aproxima al rendimiento de un compresor estatistico de la familia PPM
lo que es realmente una gran ventaja para los usuarios desdichados( como
yo) que solo poseemos una conexión dial up convencional :( .
Uno de los puntos "debiles" de bzip2 es que requiere
de una intensidad mayor de CPU, lo uqe significa que necesitaremos más
tiempo para realizar la compresión que si utilizaramos gzip, pero
obviamente el resultado es superior en la gran mayoría de los casos.
La forma básica de utilizar bzip2 es bastante sencilla, esta es así :
$ bzip2 archivo1 |
El resultado obviamente será un archivo de menor tamaño
llamado archivo1.bz2. Este es igual a gzip en
lo que a procedimiento se refieres, ya que el archivo inicial ( osea archivo1
) ya no existirá, porque fué reemplazado por el nombre del
archivo seguido de la extensión .bz2.
Como es de imaginar, ya que, bzip2 y gzip funcionan de forma parecida, también podemos modificar lla fuerza de compresión y hacer más rápida su ejecución. Esto sería de la siguiente forma:
$ bzip2 -9 archivo1 |
Ahora bien para descomprimir archvios con la extensión .bz2, tenemos la opción de utilizar bzip2(1) o bunzip2(1). La primera opción es usar bzip2 con la opción adecuada ( de igual forma que sucedía con gzip ) la cual es esta:
$ bzip2 -d archivo1.bz2 |
Lo que descomprimirá el archivo y reeemplazará por el nombre del archivo sin la extensión .bz2. Ahora bien si lo que deceamos es utilizar la opción bunzip(1) la forma sería la siguiente:
$ bunzip2 archivo1.bz2 |
Con lo cual obtenemos el mismo resultado. Esto es porque bunzip(1) es un link blando a gzip2(1) al igual como lo es gunzip(1) a gzip(1). Esto lo podemos verificar de igual forma que hicimos con gzip anteriormente, osea así:
$ whereis bunzip2 |
tar(1) es una de las utilidades que nos permite archivar y guardar diferentes
ficheros en un solo archivo, a este proceso se le conoce como empaquetar.
Un ejemplo practico de esto sería si decearamos guardar el contenido
de todo un directorio incluyendo subdirectorios en un único archivo,
al cual posteriormente realizado este proceso quedará con la extensión
.tar. Este proceso de empaquetar es bastante útil, ya que ni con gzip(1)
o bzip2(1) podríamos lograr semejante resultado. Pero nosotros podemos
usar conjuntamente tar y gzip o bzip2 para lograr un empaquetamiento/compresión
o desempaquetamient/descompresión de un directorio grande ( denominado
arbol) el cual podría ser /etc o el mismisimo / .
Para lograr un empaquetamiento basado en tar(1) más gzip(1) tipeamos
lo siguiente:
tar cvzf directorio1.tar /home/slacky/
Lo que aquí sucede, esque tar toma todo el contenido del directorio
/home/slacky/ ( tanto subdirectorios o archivos) y los deja en un archivo
llamado directorio1.tar.gz. Si te fijas usamos la opción c, que le
indica a tar que cree un nuevo fichero. Luego tenemos la opción z
que hace que gzip gzipee el archivo.tar, despúes tenemos v la cual
nos deja ver el proceso de empaquetación ( osea el output) y finalmente
tenemos la opción f que es para que tar tome el siguiente argumento
dado el cual será el nombre de nuestro nuevo archivo tar gzipeado
( osea directorio1.tar.gz).
SI deceamos tener un mejor resultado de compresión, lo que podemos
hacer es utilizar tar(1) más bzip2(1) de la siguiente forma:
tar cvjf directorio1.tar.bz2 /home/slacky/
Lo que sucede es basicamente lo mismo que con gzip(1), pero el nivel
de compresión es mayor. La opción c es para desirle a tar que
vamos a comprimir, la v es para que nos deje ver el proceso de empaquetación,
la j es para indicarle que vamos a utilizar bzip2(1) para comprimir el archivo
empaquetado con tar(1) y finalmente la f que nos servirá para designar
el nombre del archivo con extensión .tar.bz2 creado.
Una de las cosas más comunes con las que nos encontramos en la
red a la hora de bajar algún programa es la alternativa de descargarnos
el tarball, que no es nada mas que el source ( el codigo fuente) del programa
para que nosotros mismos lo configures/compilemos e instalemos en nuestro
sistema. Para poder ver ese tarball lo que primerpo debemos hacer es descomprimirlo/desempaquetarlo
si se encuentra con una extensión como .tar.gz , .tar.bz o .tar.bz2.
Es para esto que también usamos otra de las caracteristicas de tar(1)
la cual es descomprimir y desempaquetar un tarball. Si se tratace de un tarball.tar.gz
el comando es el siguiente:
tar zxfv tarball.tar.gz
Aquí usamos basicamente las mismas opciones, pero con alguna pequeña
diferencia, esta diferencia es la opción x, la cual le indica a tar
que vamos a extraer un archivo gzipeado ( designado por la opción
z).
Si deceamos descomprimir/desempaquetar un archivo de estensión
.tar.bz2 utilizamos lo siguiente:
tar xjfv tarball.tar.bz2
La explicación es la misma, pero con la diferencia que usamos
la opción j en vez de la z, ya que esta vez estamos extrallendo varios
archivos que fueron bzipeados.
También es interesante mencionar que podemos obtener estos mismo
resultados mediante un comado más largo y con la ayuda de "|" ( tubería
) para filtrar el resultado de un comando y posteriormente enviarlo a otro,
lo que en este caso sería de bzip a tar, veámos un ejemplo
de esto:
bzip2 -dc tarball.tar.bz2 | tar xvf -
Y lo equivalente de esto, pero para un archivo con extensión .tar.gz
es lo siguiente:
gzip -dc tarball.tar.gz | tar xfv -
zip(1) es una utilidad de compresión para Unix, VMS, MSDOS, OS/2,
Windows NT, Minix, Atari y Machintosh, Amiga y Acorn RISC OS. Su combinación
es análoga con el comando tar(1) de UNIX y es compatible con
PKZIP (Phil Katz's ZIP) para el sistema MSDOS. Obviamente esta utilidad tiene
su programa acompañante que complementa esta utilidad, esta se llama
unzip(1) el cual nos sirve para descomprimir los archivos zipeados con zip(1).
Estas utilidades son de un uso bastante sencillo. Por ejemplo, si deceamos
comprimir todos los archivos del directorio en el que nos encontramos simplemente
tecleamos:
$ zip zipeado *
Esto nos creará un archivo llamado zipeado.zip el cual conteandrá todos archivos que se encuentren en el directorio actual. Ahora si lo que deceabamos es incluir todos los directorios que se encuentran el el directorio actual usamos la opción -r de la siguiente forma:
$ zip -r zipeado * |
Para poder descomprimir los archvivos con la extensión .zip bastará teclear lo siguiente:
$ unzip zipeado |
En este capítulo hemos descrito a grandes rasgoz las principales
utilidades que posee nuestro Slackware Linux tanto para comprimir/descomprimir
y empaquetar/desempaquetar archivos. En estos momentos usted debería
tener nosiones básicas de la manipulación de archivos a través
de las utilidades tar(1), gzip2(1), bzip2(1) y zip(1) para lograr una compresión
o descompresión de un archivo y además de como manipular archivos
basads en Widows, ya que lo queramos o no es un conocimiento necesario en
estos tiempos de "monopolio" microsoft.
Comandos Basicos de Red | Indice | Manejo de Paquetes de Slackware |