Empaquetar y Comprimir en Linux

Es muy probable que en sistemas operativos como MSDOS o Windows hayamos utilizado programas compresores de ficheros como pueden ser arj o winzip. Estas aplicaciones almacenan un conjunto de ficheros, manteniendo la estructura jerárquica de directorios y subdirectorios, en un único fichero, y los comprimen para reducir el espacio que utilizan. Es decir, realizan dos funciones: Empaquetar y comprimir.

El sistema operativo Linux dispone de comandos diferenciados para realizar cada una de estas tareas. El comando tar realiza únicamente la función de archivar, es decir, crea un fichero que contiene a su vez uno o varios ficheros guardando la estructura de directorios; y, por otro lado, disponemos de programas compresores, como pueden ser gzip y bzip, que normalmente se utilizan conjuntamente con el comando tar. De esta manera nos podemos encontrar ficheros con las siguientes extensiones:

  • .tar - Fichero en formato tar.
    .tar.gz - Fichero tar que ha sido comprimido con gzip.
    .tar.bz2 - Fichero tar que ha sido comprimido con bzip2.
    .tar.Z - Fichero tar que ha sido comprimido con compress.

Estos comandos son de uso muy extendido, ya que la mayoría de las aplicaciones se distribuyen utilizando estos formatos.

TAR

El comando tar exclusivamente realiza la función de empaquetar en un archivo un conjunto de ficheros respetando su estructura de directorios. Además, puede reconocer y conserva todas las peculiaridades del sistema de ficheros de Linux, como el propietario y grupo de los ficheros, permisos y enlaces duros y simbólicos. El formato del comando tar es el siguiente:

tar ...

El comando tar tiene asociado una serie de opciones que nos permite determinar su comportamiento. La primera opción que se debe especificar es la que indica la acción que debe realizar el comando tar, pudiendo elegir entre:

  • c - Crea un fichero en formato tar.
    t - Lista el contenido de un fichero tar.
    x - Extrae el contenido de un fichero tar.
    r - Añade archivos a un fichero tar.
    Las opciones más utilizadas que podemos incluir posteriormente son las siguientes:
    v - Muestra el nombre de los ficheros que se archivan al ejecutar el comando.
    p - Conserva los permisos de los ficheros.
    M - Para trabajar con ficheros tar multivolumen, es decir, cuando archivamos en disquetera y debemos utilizar un conjunto de discos.
    f fich_tar - Nombre del fichero tar que queremos utilizar

Ejemplos de utilización del comando tar

tar -cvf comprimo.tar /home - Creará un fichero denominado comprimo.tar donde se archivarán los ficheros del directorio /home. La opción v permite visualizar una lista de los archivos que se van insertando.

tar -xvf comprimo.tar - El siguiente comando extrae los ficheros contenidos en comprimo.tar al directorio actual. Hay que tener cuidado con esta operación ya que los ficheros antiguos se sobreescriben.

tar -cvf usuarios.tar /etc/group /etc/passwd - Supongamos que sólo queremos archivar los ficheros group y passwd ubicados en /etc en un fichero tar ubicado en /ejemplo. Ejecutaremos el siguiente comando desde /ejemplo. Ahora bien, a la hora de volver a extraer los ficheros en su ubicación correcta, hay que tener en cuenta que el fichero tar ha almacenado también el directorio /etc, por lo que para su extracción nos deberíamos colocar en el directorio raíz y ejecutar: tar -xvf /ejemplo/usuarios.tar

Por el contrario, podemos encontrar un comportamiento distinto si efectuamos este último ejercicio de la siguiente forma: Nos colocamos en el directorio /etc y ejecutamos: tar -cvf /ejemplo/usuarios.tar group passwd. En este caso se han archivado los dos ficheros pero no almacenan su ubicación, por lo que para su extracción también deberemos estar situados en /etc. Es por ello interesante utilizar la opción t que permite visualizar el contenido de un fichero tar y conocer de esta manera desde donde debemos ejecutarlo: tar tf usuarios.tar

GZIP, BZIP2 Y COMPRESS

Son programas compresores que permiten reducir el tamaño de los ficheros. Normalmente los utilizaremos para comprimir los ficheros tar, pero pueden utilizarse con cualquier fichero.

gzip: Es el más utilizado ya que ofrece un factor de compresión mayor. Su formato es el siguiente:

gzip factor fichero.

Por ejemplo, si deseamos comprimir el fichero comprimo.tar ejecutaríamos:

gzip -9 comprimo.tar

El factor -9 me proporciona el mayor nivel de compresión (de 1 a 9) y es el que se utiliza con más frecuencia. El fichero que obtendremos se denominará comprimo.tar.gz
Para descomprimir utilizaremos el comando gunzip de la siguiente forma:

gunzip comprimo.tar.gz

bzip2: Es otro de los compresores de linux. Su formato es el siguiente:

bzip2 fichero

El fichero que obtendremos tras la comprensión tendrá la extensión bz2. Se puede utilizar también en combinación con ficheros tar, en cuyo caso tendrá la extensión .tar.bz2.
Para descomprimir utilizaremos el comando bunzip2 de la siguiente forma:

bunzip2 fichero.tar.bz2

compress: El comando compress es el compresor original de Unix. Su algoritmo de compresión es bastante primitivo, pero se mantiene por razones históricas de compatibilidad. Los ficheros comprimidos con compress tienen la extensión .Z (backup.tar.Z) y se descomprimen con el comando uncompress. El comando gunzip puede utilizarse también para descomprimir ficheros comprimidos con compress. Este compresor está prácticamente obsoleto, por lo que no lo encontraremos en la distribución que estamos utilizando.

TAR CON GZIP Y BZIP2

Debido a que es muy usual utilizar estos comandos para primero archivar con tar un conjunto de archivos y posteriormente comprimirlos con gzip, existen opciones del comando tar que automáticamente comprimen el fichero obtenido.

gzip: La opción z automáticamente comprime con gzip.

De esta manera, la instrucción: tar cvfz comprimo.tar.gz /home sería equivalente a ejecutar: tar cvf comprimo.tar /home y gzip comprimo.tar

Igualmente se puede utilizar esta opción para descomprimir y desempaquetar un conjunto de archivos.

De esta manera, la instrucción: tar xvfz comprimo.tar.gz sería equivalente a: gunzip comprimo.tar.gz y tar xvf comprimo.tar

bzip2: De igual forma la opción j automáticamente comprime con bzip2, actuando de forma similar a como se ha hecho con gzip.

ENTORNO GRAFICO

Desde el entorno gráfico es muy fácil trabajar con las opciones de empaquetar y comprimir. Su funcionamiento es muy intuitivo y similar a utilidades de compresión del entorno Windows como pueden ser winzip y winrar. Por ejemplo, desde el navegador de archivos siempre podemos pulsar el botón derecho y utilizar el comando Comprimir, que construirá un archivo comprimido con los ficheros que tuviéramos seleccionados. La aplicación que utiliza Ubuntu se denomina File Roller y se encuentra en el directorio /usr/bin/file-roller.
 
Muy completa explicación, aunque no estaría de más algún ejemplo practico dado que es el foro de tutoriales ;)

P.D.: Ya era hora, porque hace tiempo que nadie se anima a postear nada en esta zona

Saludos
 
Arriba