Archivadores y compresores desde la terminal

¿Que son los archivadores y los compresores?

Los archivadores y los compresores son cosas distintas aunque nos tengan acostumbrados a que vengan todas juntas en uno solo, como los formatos rar y zip.

Los archivadores sirven para agrupar varios archivos en uno solo, como el formato tar.

Y los compresores sirven para comprimir un solo archivo mediante algoritmos que permiten conservar toda la información para luego ser restaurada, como los formatos gzip y bzip2.

Archivos Rar

Vamos a empezar por los mas conocidos. El formato rar es un formato propietario y permite tanto la archivación como la compresión. Esta basado en el algoritmo LZSS, que no voy a desarrollar y no es el objetivo del post.

Es un formato mas lento que el zip, pero que a su vez logra una mayor compresión y tiene un mejor sistema de redundancia de datos para prevenir errores.

El formato rar permite lo que se conoce como compresión solida, que permite comprimir varios ficheros juntos, de manera que un mismo diccionario se aplica a toda la información, lo que resulta en una compresión mayor. En otras palabras, primero archiva y luego comprime el resultado.

La desventaja de este sistema es que para extraer un archivo especifico de un grupo de archivos hay que descomprimir todo el archivo, lo que lo vuelve mas lento.

Unrar

Esta es la herramienta que vamos a usar para manejar este tipo de archivos.

En sistemas derivados de Debian se instala con el conocido.

sudo apt-get install unrar

La sinopsis para usarlo es

unrar <command> -<switch 1> -<switch N> <archive> <file...> <path>

<archive> es el rar que queremos descomprimir

<path> es el directorio en el que lo queremos descomprimir

<file> es una lista de archivos que queremos descomprimir, tienen que estar con la ruta completa que figura en el rar. Osea el rar tiene una carpeta y adentro esta el archivo que queremos tenemos que poner “carpeta/archivo”

<command> puede ser uno de los siguientes

e → Extrae los archivos en el directorio, osea sin tener en cuenta las subcarpetas dentro del rar.
l → Lista los archivos que contiene el rar.
p → Imprime los archivos en la salida estandar, osea la consola.
t → Testea los archivos y que el rar sea correcto.
v → Es parecido a l, pero muestra la ruta completa del archivo.
x → Extrae los archivos con la ruta completa


El comando que mas vamos a usar para extraer es x

<switch> Los switch son opciones extra de las cuales no conseguí mucha información, estaría bueno que los desarrolladores pongan mas información de estas cosas, pero ya saben como son los desarrolladores de software propietario. Pero algunas interesantes que se pueden usar son estas.

-inul → No te muestra ninguna salida, ojo que si pregunta algo como remplazar un archivo no se va a ver y va a esperar una respuesta de todos modos.
-o+ → Sobreescribe todos los archivos sin preguntar.
-o- → No sobreescribe ningún archivo.
-y → Asume que si a todas las solicitudes.


Zip

Zip es un formato bastante simple, y a diferencia de rar comprime cada archivo por separado. Esto permite recuperar archivos independientes sin necesidad de leer todo el archivo, lo que lo hace mas rapido. Como contrapartida logra una menor compresión que rar.

Las especificaciones dicen que se puede almacenar varios archivos sin compresión o con una variedad de algoritmos de compresión, por lo general usa el algoritmo de Phil Kats.

Unzip

Esta es la herramienta para descomprimir los archivos zip. Permite una inmensa variedad de opciones, pero vamos a ver solo las mas simples y comunes.

unzip archivo

Descomprime el archivo con el directorio completo. También se le pueden agregar opciones como

-l → Para ver los archivos dentro del zip.
-v → Lo mismo que -l pero muestra menos información.
-n → No sobreescribe los archivos.
-o → Sobreescribe los archivos.


Estas opciones se agregan antes del nombre del archivo, de esta manera.

unzip -l archivo

Tambien se puede agregar un -d directorio para especificar el directorio donde queremos extraerlo

unzip archivo -d directorio

Tar

Tar es un archivador muy común en los sistemas Unix. Y originalmente se usaba para almacenar archivos en cintas magnéticas.

Su uso es muy sencillo y flexible. Por lo que voy a proceder a desarrollarlo de manera mas completa que los anteriores.

El comando que se usa tar y la sinopsis es la siguiente.

tar

Los archivos son los archivos que queremos archivar. Es posible también usar el * para referirnos a todos los archivos de la carpeta, o *.ogg si queremos referirnos a todos los archivos con esa extensión. Los que tengan mas experiencia con la consola van a saber varios trucos extras, pero no vienen al caso.

Las opciones se deben introducir así: primero con un “-” luego un carácter que diga la acción que queremos realizar y luego otras opciones. Es aconsejable siempre al final poner una f y dejando un espacio el nombre del archivo tar al que nos referimos, ya que de otra manera va a usar la entrada/salida estandar.

Las acciones que podemos realizar son las siguientes:

c → Crea un nuevo archivo tar que contiene los archivos especificados en .
r → Agrega un archivo a un tar ya existente.
t → Muestra el contenido de un tar.
A → Agrega a un tar el contenido de otro tar.
d → Busca diferencias entre un archivo y el sistema de ficheros.
u → Agrega solamente ficheros mas recientes a la copia del archivo.
x → Extrae el contenido del tar.


Otras opciones

k → No remplaza archivos.
U → Borra cada archivo antes de extraer sobre el.
f → Utiliza un archivo. Como dije mas arriba esta opción va siempre.
v → Lista los ficheros procesados detalladamente.


Algunos ejemplos

tar -cf test.tar *

Crea un test.tar y agrega todos los archivos del directorio en que estamos situados.

tar -rf test.tar archivo1.ext archivo2.ext

Agrega a test.tar los archivos 1 y 2.

tar -xf test.tar

Extrae los archivos de test.tar en el directorio que estamos situados.

Gzip

Gzip es un compresor de archivos libre y muy popular en sistemas Unix. Gzip solo se reduce a comprimir y no archiva.

Para facilitar el desarrollo de software se creo la biblioteca zlib que resulta pequeña, eficiente y versátil.

La extensión mas común es la .gz pero también se pueden ver .tgz o .tar.gz que son archivos empaquetados con tar y comprimidos con gzip (ver mas adelante).

Su uso es sumamente sencillo y la sinopsis es la siguiente.

gzip

Las opciones pueden ser.

-d, --decompress → Descomprime los archivos.
-f, --force → Sobreescribe en caso de ser necesario.
-h, --help → Muestra la ayuda.
-l, --list → Muestra información sobre el archivo comprimido.
-t, --test → Testea la integridad del archivo comprimido.
-v, --verbose → Amplia la información de salida.
-1, --fast → Hace una compresión rápida pero menor.
-9, --best → Hace una compresión mas lenta pero mayor.


Unos ejemplos serian.

gzip -1 test.tar

Comprime el archivo test.tar y devuelve un archivo test.tar.gz. El archivo original se borra.

gzip -d test.tar.gz

Descomprime el archivo test.tar.gz y devuelvo el archivo test.tar. El archivo original se borra.

Bzip2

Bzip2 es otro formato de compresión libre que suele dar mejores compresiones que los que usan algoritmos basados en LZ77/LZ78, como gzip o winzip. Por contrapartida emplea mas memoria y emplea mas tiempo para la ejecución.

La extensión es .bz2 y si esta empaquetado con tar seria .tar.bz2.

La herramienta bzip2 es muy parecida a gzip, y sin mas preámbulo voy a la sinopsis.

bzip2

Donde las opciones pueden ser.

-h, --help → Muestra la ayuda.
-d, --descompress → Descomprime el archivo.
-f, --force → Sobreescribe de ser necesario.
-t, --test → Testea la integridad del archivo comprimido.
-v, --verbose → Muestra mas información de salida.
-1 .. -9 → Hace compresiones mayores cuanto mayor sea el numero que ponemos, pero mas lentas.


Los ejemplos serian iguales que con gzip así que los salteo, solo aclaro que también borra los archivos originales.

Bonus Track

Para terminar quiero agregar que con la herramienta tar podemos también agregar compresión con los formatos que vimos, gzip y bzip2 entre otros mas.

Solo basta agregar entre las opciones alguna de las siguientes.

z → Para gzip.
j → Para bzip2.
J → Para lzma.
Z → Para compress.


Para comprimir seria algo como.

tar -cjf test.tgz *

Podemos poner tanto .tgz como .tar.gz.

Y para descomprimir seria.

tar -xf test.tgz

No hace falta especificar el algoritmo de compresión ya que lo reconoce automáticamente.

Bueno eso es todo por hoy y espero que sea de su agrado. Estén atentos que seguramente siga subiendo tutoriales de herramientas para la consola.

5 comentarios - Archivadores y compresores desde la terminal

@adicto_al_cafe
para descomprimir archivos grande x terminal vuela xarchiver y fille roller se arrastran
@hernnmaster1
algun dia... de algun mes.... de algun año...

lo leo completo
@angel3071 +1
apack y aunpack hacen lo que todos estos sin tener que recordar sus banderas