Por lo general uno suele extraer todo el contenido de un archivo tar, sin embargo es posible tanto listar como extraer un único archivo o directorio.
En sistemas Linux, el comando tar
se utiliza para extraer o almacenar archivos. La mayoría de los usuarios suelen dar un uso básico, simplemente para extraer detectando el formato de compresión de forma automática:
$ tar axf archivo.tar.gz
Sin embargo es posible listar el contenido de archivos comprimidos con tar utilizando la opción t
.
De acuerdo al manual de tar
, el último argumento consiste en una lista de rutas a almacenar/extraer. Normalmente se utiliza al momento de almacenar/comprimir, cuando se indican los archivos a compactar. Pero, si se utiliza para extraer o listar, esta es una ruta dentro del archivo. De esta forma es posible listar o extraer sólo algunos archivos dentro del tar.
Ejemplos
Listar sólo el directorio etc/ppp
dentrop del archivo backup.tar.gz
:
root@linuxito:~# tar tzf backup.tar.gz etc/ppp etc/ppp/ etc/ppp/ip-up.d/ etc/ppp/ip-up.d/fetchmail etc/ppp/ip-up.d/sendmail etc/ppp/ip-up.d/bind9 etc/ppp/ip-down.d/ etc/ppp/ip-down.d/fetchmail etc/ppp/ip-down.d/sendmail etc/ppp/ip-down.d/bind9
En lugar de listar todo el contenido del tar, sólo lista el directorio especificado. Si éste no existe dentro del tar, simplemente finaliza con error:
root@linuxito:~# tar tzf backup.tar.gz pepe tar: pepe: Not found in archive tar: Exiting with failure status due to previous errors
Para extraer un único archivo o directorio es exactamente igual:
root@linuxito:~# tar xzf backup.tar.gz etc/ppp/ip-down.d/bind9
Cabe destacar que al extraer, tar respeta la jerarquía de directorios interna y construye la ruta completa:
root@linuxito:~# ls -l etc/ppp/ip-down.d/ total 4 -rwxr-xr-x 1 root root 289 Jul 27 2013 bind9
Si se indica más de una ruta, el funcionamiento es idéntico. De esta forma es posible extraer archivos de forma selectiva en lugar de extraer todo el tar completo, lo cual es muy práctico cuando se trata de archivos de gran tamaño.