trabajo de compresion de archivos

13
Aprender a Comprimir y Descomprimir en GNU/Linux. Jonathan Ruiz Gallardo.

description

Un trabajo propio en el que explico lo básico para entender las maneras de empaquetar, comprimir descomprimir ... etc en Linux. Espero que os ayude :)

Transcript of trabajo de compresion de archivos

Page 1: trabajo de compresion de archivos

Aprender a Comprimir y Descomprimir en GNU/Linux.

Jonathan Ruiz Gallardo.

Page 2: trabajo de compresion de archivos

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.

Page 3: trabajo de compresion de archivos

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

Page 4: trabajo de compresion de archivos

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:

Page 5: trabajo de compresion de archivos

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

Page 6: trabajo de compresion de archivos

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.

Page 7: trabajo de compresion de archivos

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

Page 8: trabajo de compresion de archivos

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.

Page 9: trabajo de compresion de archivos

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.tarVer contenido tar -tf archivo.tar

Ficheros gz

Comprimir: gzip -9 ficheroDescomprimir: gzip -d fichero.gz

Page 10: trabajo de compresion de archivos

Ficheros bz2

Comprimir: bzip ficheroDescomprimir: bzip2 -d fichero.bz2

Ficheros tar.gz

Comprimir: tar -czfv archivo.tar.gz ficherosDescomprimir: tar -xzvf archivo.tar.gzVer 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 ficherosDescomprimir: unzip archivo.zip

Ver contenido: unzip -v archivo.zip

Ficheros lha

Comprimir: lha -a archivo.lha ficherosDescomprimir: lha -x archivo.lhaVer contenido: lha -v archivo.lhaVer contenido: lha -l archivo.lha

Ficheros arj

Comprimir: arj a archivo.arj ficherosDescomprimir: unarj archivo.arjDescomprimir: arj -x archivo.arjVer contenido: arj -v archivo.arj

Page 11: trabajo de compresion de archivos

Ver contenido: arj -l archivo.arj

Ficheros zoo

Comprimir: zoo a archivo.zoo ficherosDescomprimir: zoo -x archivo.zooVer contenido: zoo -L archivo.zooVer 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 ficherosDescomprimir: rar -x archivo.rarVer contenido: rar -l archivo.rarVer contenido: rar -v archivo.rar