Google
Web dns.bdat.net

Agrupar y desagrupar ficheros: tar

En las órdenes anteriores hemos visto como comprimir ficheros individuales, pero en muchas ocasiones nos interesa agrupar en un archivo diferentes ficheros, por ejemplo todos los contenidos en un directorio.

También es habitual en linux distribuir los programas con todos sus ficheros agrupados y comprimido, por lo que será necesario saber como descomprimir y desagrupar los ficheros.

Estas operaciones las realiza la orden tar (tape archive); las extensiones que utiliza esta orden para indicar un archivo de ficheros es .tar.

Agrupar ficheros

Para agrupar una serie de ficheros en un archivo pondremos:

$ tar cf archivo.tar lista de ficheros
              

Si en lugar de poner ?lista de ficheros? ponemos un directorio, agrupará todos los ficheros contenidos en el directorio y conservando la estructura del subárbol de directorios, los propietarios de los ficheros y sus permisos.

La orden ejecutada de esta forma simplemente comprime los ficheros, pero sin realizar ningún tipo de compresión.

Por ejemplo, para hacer una copia de todo el fichero /etc llamda etc.tar podríamos:

tar cf etc.tar /etc
              

Agrupar ficheros y comprimir

Una posibildad mucho más interesane es agrupar una serie de ficheros en un archivo y comprimirlo con gzip simultáneamente. Podemos combinar la agrupación de tar con un sistema de compresión. Para hacer esto pondremos:

$ tar cfz archivo.tar.gz lista de ficheros
              

Por ejemplo, para hacer una copia de seguridad comprimida del directorio /etc podríamos:

$ tar cfz etc.tar.gz /etc
              

Para agrupar una serie de ficheros en un archivo y comprimirlo con bzip2 simultáneamente pondremos:

$ tar cfj archivo.tar.bz2 lista de ficheros.
              

Como veíamos antes, si en lugar de poner ?lista de ficheros? ponemos un directorio agrupará todos los ficheros contenidos en el directorio y conservando la estructura del subárbol de directorios, permisos y propietarios en el fichero comprimido.

Desagrupar ficheros

Para desagrupar una serie de ficheros en un archivo pondremos:

$ tar xvf archivo.tar
              

Si el archivo contiene directorios, al desagruparlo estos directorios se crean en el directorio activo. Por ejemplo, agrupamos el directorio /etc como veíamos antes:

tar cf etc.tar /etc
              

Ahora si nuestro directorio activo es /home/usuario y ejecutamos:

tar xvf etc.tar
              

creará el directorio /home/usuario/etc y alí guardará el resto del contenido del archivo. Resumiendo , al agrupar se elimina el directorio raíz de la ruta de los ficheros contendos por lo que siempre resultan rutas relativas al directorio activo.

Desagrupar ficheros y descomprimir

El siguiente paso lógico es manipular los ficheros agupados y comprimidos (los llamare tar.gz). Igual que creábamosun fichero tar.gz en una sola operación, ahora también vamos a extraer su contenido en una sola operación.

Para desagrupar una serie de ficheros en un archivo comprimido con gzip pondremos:

$ tar xvfz archivo.tar.gz

Si el archivo estuviera comprimido con bzip2 pondríamos:

$ tar xvfI archivo.tar.bz2

En ambos casos podríamos descomprimir el fichero con gunzip o con bunzip2, según el caso y luego desagrupar el archivo no comprimido como se indicaba más arriba.

Otras opciones de tar

tar tiene además otras opciones que resultan interesantes, por ejemplo:

-l Un solo sistema de ficheros. Si tenemos varias particiones y queremos copiar un directorio per no las particiones que tuvier montadas en su interior tendríamos que usar la opción -l. Por ejemplo, para hacer una copia de seguridad de la partición raíz excluyendo el resto de particiones y dispositivos pondríamos:

tar cflz raiz.tar /
              

-k No borra los ficheros que existan previos a la extracción. Puede resultar útil para añadir ciertos ficheros que puedieran faltar en un árbol de directorios pero sin borrar ninguno de los que ya existe.

Por ejemplo, estamos trabajando con unos ficheros de texto en un directorio del que tenemos una copia de seguridad comprimida. Si hemos borrado un accidentalmente podremos reponerlo con tar xvfkz sin que afecte al resto de los ficheros.