Extraer parte de un archivo tar

Llevo años usando TAR (junto con Gzip o con Bzip2) para empaquetar y comprimir directorios, pero de repente empiezo a usarlo para crear copias de seguridad de forma manual y me doy cuenta de que no sé como extraer sólo parte de los archivos que he empaquetado.

No escribiré aquí como comprimir y descomprimir en *.tar.gz o en *.tar.bz2 (aunque tampoco tiene mucho secreto). Supongamos que tenemos esta estructura de directorios y archivos:

directorio/
|-- subdirectorio-1
|   |-- archivo-11.txt
|   `-- archivo-12.dat
|-- subdirectorio-2
|   `-- archivo-20.ogg
`-- subdirectorio-3

Hemos creado un archivo TAR que contiene este árbol, y lo hemos guardado con el nombre directorio.tar, Posteriormente queremos mostrar el contenido de ese archivo *.tar, lo hacemos de la siguiente forma:

$ tar tvf directorio.tar
drwxr-xr-x usuario/grupo   0 2008-12-05 16:51 directorio/
drwxr-xr-x usuario/grupo   0 2008-12-05 16:51 directorio/subdirectorio-3/
drwxr-xr-x usuario/grupo   0 2008-12-05 16:52 directorio/subdirectorio-1/
-rw-r--r-- usuario/grupo   0 2008-12-05 16:51 directorio/subdirectorio-1/archivo-11.txt
-rw-r--r-- usuario/grupo   0 2008-12-05 16:51 directorio/subdirectorio-1/archivo-12.dat
drwxr-xr-x usuario/grupo   0 2008-12-05 16:52 directorio/subdirectorio-2/
-rw-r--r-- usuario/grupo   0 2008-12-05 16:52 directorio/subdirectorio-2/archivo-20.ogg

Y finalmente, si lo que queremos realmente es extraer sólo uno de los subdirectorios, haremos lo siguiente:

$ tar xvf directorio.tar directorio/subdirectorio-1
directorio/subdirectorio-1/
directorio/subdirectorio-1/archivo-11.txt
directorio/subdirectorio-1/archivo-12.dat

En este caso hemos extraido un subdirectorio entero, pero podemos extraer archivos concretos, además podemos usar wildcards como * o ? en el comando.

¿Y que pasa con los archivos comprimidos con Gzip o con Bzip2? Pues los comandos son prácticamente los mismos, sólo tenemos que añadir la letra z en caso de *.tar.gz o la letra j en el caso de *.tar.bz2.

3 thoughts on “Extraer parte de un archivo tar

  1. juan

    Muy útil, preciso y escueto.

    ¡ Mira que uso veces el comando tar, y siempre se me olvidan los parámetros para extraer un directorio completo, o ver el contenido del archivo !

    ¡ Tengo menos memoria que un Spectrum con las teclas de goma ! ;)

    Otro tema interesante, que utilizo todas las semanas, es la combinación del “tar” con “split”, y “rsync” para la sincronización de copias de seguridad.

    Salu2.

  2. Eber

    Hola!!. Disculpa, he estado intentando extraer de un archivo.tar un solo directorio pero a lo que he observado es que tengo que conocer la estructura de mi archivo.tar, es decir, tengo que especificar bien la ruta del subdirectorio que deseo extraer (tar xvf directorio.tar >>>>>>directorio/subdirectorio-1<<<<<), y lo que me interesa saber es si puedo conocer esa ruta con algún comando. He estado usando el comando find pero solo me funciona para directorios no me funciona para la busqueda en un archivo.tar.
    En otras palabras es que si yo como usuario deseo extraer un directorio de un archivo.tar pero no se mucho de comandos como me facilitarían esta tarea, que yo solo escriba nombres de archivos y no rutas?

Comments are closed.