Cómo descomprimir un archivo .tar.gz

Veamos en este artículo cómo comprimir, crear y extraer archivos tar.

Cada vez que tengo que extraer archivos .tar.gz desde la línea de comandos, nunca recuerdo exactamente cómo hacerlo. En este tutorial aprenderemos cómo hacer de una vez por todas y además muchos otros “hacks” sobre los ficheros .tar.

Este artículo es una adaptación del artículo escrito en inglés por Seth Kenlon aparecido en la web opensource.com que puedes ver en este enlace:

Mediante los gestores de archivos gráficos actuales de GNU/Linux (Dolphin, Thunar, etc) el comprimir y descomprimir archivos es muy sencillo, basta con un simple clic del botón derecho del ratón encima del archivo para que se nos presente el menú y la opción correspondiente.

Pero en este tutorial veremos cómo hacerlo mediante la línea de comandos, desde donde tendremos más opciones y en el caso de que no haya un entorno gráfico no nos encontremos perdidos y seamos capaces de realizar la tarea.

Muchos usuarios creen que los archivos tar están comprimidos igual que los de extensión .zip, pero cabe destacar aquí que un archivo tar no tiene una comprensión notable. El formato tar sólo crea un contenedor para archivos, pero los archivos pueden comprimirse por separado con otras utilidades.

La compresión más común que se utiliza a los archivos .tar suele ser Gzip, bzip2 o xz. Por eso lo más normal es encontrar archivos con extensión .tar.gz o tgz.

Comencemos pues.

Crear un archivo tar (aka tarball)

En el argot, un tarball es un archivo comprimido con tar. Para crear un contenedor tar con un conjunto de archivos, hay que colocarlos dentro de la carpeta que queremos y después ejecutar tar junto con el nombre del archivo que queremos crear y la carpeta que queremos archivar:

tar --create --verbose --file archivo.tar mi_carpeta

La utilidad tar es un caso único entre los comandos, ya que no es necesario poner guiones delante de las opciones cortas, lo que permite abreviar considerablemente el comando anterior en uno similar escribiendo simplemente:

tar cvf archivo.tar mi_carpeta

También cabe destacar que no es necesario poner los archivos dentro de una carpeta antes de crear el archivo tar, pero es algo que está bien visto. Si no lo hacemos así al descomprimir el archivo tendremos un montón de archivos sueltos  en la ruta donde lo hayamos descomprimido.

A esto se le conoce como un “tarbomb“, aunque no siempre es malo. En ocasiones esto resulta útil a la hora de instalar parches de software por ejemplo.

Comprimiendo archivos

Como ya hemos dicho con un archivo .tar no se comprimen los archivos, simplemente se agrupan. Para comprimir deberemos utilizar Gzip o bzip, para ello ejecutaremos algo como esto:

 tar --create --bzip2 --file foo.tar.bz2 mi_carpeta 
 tar --create --gzip --file foo.tar.gz mi_carpeta

Las extensiones más comunes son tar.gz o .tgz para los tar comprimidos con Gzip, y .tbz o .tar.bz2 para los archivos comprimidos con bzip.

Extrayendo los archivos

Para descomprimir un archivo que hayamos descargado o nos hayan enviado es comando es muy sencillo, basta con ejecutar:

tar --extract --file archivo.tar.gz

Y con los comandos reducidos sería:

tar xf archivo.tar.gz

Incluso se puede utilizar para descomprimir archivos .zip

tar --extract --file archivo.zip

Uso más avanzado

Una vez que ya conocemos el uso básico de tar, podemos hackear un poco más y conocer algunas de las opciones avanzadas que esconde.

Añadir un archivo a un fichero tar ya existente

Para ello, no es necesario desempaquetar el archivo tar, añadir el archivo que queremos y volver a empaquetar con tar. Podemos añadir un archivo o una carpeta mientras el archivo tar no este comprimido. Si el archivo ya está comprimido, entonces sí necesitaremos descomprimirlo, pero no desempaquetarlo de tar.

Supongamos que tenemos un archivo comprimido con Gzip:

gunzip archivo.tar.gz
ls
archivo.tar

Ahora que lo tenemos descomprimido vamos a añadirle un archivo y una carpeta al archivo .tar

tar --append --file archivo.tar foo.txt
tar --append --file archivo.tar bar/

Que en versión con las opciones reducidas sería algo como:

tar rf archivo.tar foo.txt
tar rf archivo.tar bar/

Ver la lista de archivos de un archivo tar

Para ver los archivos que están dentro de un archivo tar, ya este éste comprimido o sin comprimir, utilizaremos la opción –list

tar --list --file archivo.tar.gz  
mi_carpeta/
mi_carpeta/uno
mi_carpeta/dos
mi_carpeta/tres
bar/
bar/cuatro
foo.txt

También podremos utilizar la versión reducida de este comando:

tar tf archive.tar.gz

Extraer un archivo o una carpeta

En ocasiones puede que no necesites todos los archivos de un “tarball”, y sólo quieras extraer uno o dos. Después de listar el contenido con el comando anterior, utilizaremos el comando que ya conocemos para extraer, junto con la ruta del archivo que queremos extraer:

tar xvf archive.tar.gz bar/cuatro
bar/cuatro

Con esto el archivo “cuatro” es extraido a una nueva carpeta llamada “bar”. Si la carpeta ya existe en la ruta, entonces el archivo “cuatro”es ubicado dentro de la carpeta.

Para extraer varios archivos o carpetas, básicamente es lo mismo, pero indicando los distintos archivos o carpetas que queramos:

tar xvf archivo.tar.gz mi_carpeta/uno bar/cuatro
mi_carpeta/uno
bar/cuatro

También admite utilizar el uso de comodines a la hora de especificar archivos o carpetas:

tar xvf archivo.tar.gz --wildcards '*.txt
foo.txt

Extraer un archivo tar en otra carpeta

Antes hemos visto que los “tarball” se convierten en “tarbombs” cuando los archivos se “desparraman” por todo el equipo si no están comprimidos dentro de una carpeta. Si al listar un archivo tar, ves que sus archivos no están contenidos en una carpeta, se puede crear una carpeta de destino donde ubicarlos:

tar --list --file archivo.tar.gz
foo
bar
baz
mkdir nuevos_archivos
tar xvf archivo.tar.gz -C nuevos_archivos

Esto hace que todos los archivos del archivo .tar.gz queden dentro de la carpeta nuevos_archivos.

Te animo a que pruebes tu misma a “hackear”, leer la página man y hacer tus pruebas con tar. A ver si la próxima vez que tenga que descomprimir un “tarball” no tengo que buscar por la red cómo se hace.

Yo propongo que para comprimir el comando sea “tar” y para descomprimir sea “untar” 🙂 No dejes de visitar también en el artículo en inglés original de donde he sacado la información.

—————- y GNU —————-

9 pensamientos en “Cómo descomprimir un archivo .tar.gz

  1. Con la !usica de libre de Nino Bravo de fondo

    Lleva apenas veinte horas y ya está
    buscando un Service Pack
    Porque le soltó una pantalla azul
    el Visual C++

    Luego navegando por la World Wide Web
    lo vio con claridad
    un compilador llamado GCC
    rezaba sin parar

    Libre, como el código de Linux yo soy libre
    como el tar
    Libre, como el bison, como el perl y como el cron
    que puedes compilar
    Libre, como Debian que me ofrece herramientas sin pagar
    también tengo Red Hat
    que viene con manual
    ahora sí sé lo que es la libertad

    El código abierto es su nueva fe
    programa en GTK QT
    ahora es un tipo muy muy popular
    en la lista de Bugtraq

    Estaba tan harto de usar NT
    que decidió cambiar
    ya maneja Linux y FreeBSD
    en cualquier terminal

    (ESTRIBILLO)

  2. Muchisímas gracias nuevamente, en todos los blogs veía tar xvf bla bla bla y decía pero que significa xvf, ahora que lo se sera mas fácil la siguiente descompresión.

    Por otro lado tengo una duda como hago para darle mas de una linea a la línea de comandos es decir como puedo dar la siguiente instrucción:

    tar xvf archivo.tar.gz mi_carpeta/uno bar/cuatro
    mi_carpeta/uno
    bar/cuatro

    Si en cuanto le doy la tecla Enter o Return ejecuta la primera linea.

    Ahora respecto a la línea de comandos tengo otra duda, por ejemplo si ejecuto un programa

    por ejemplo firefox.

    [torana@torana-pc]$ firefox

    como puedo hacer para seguir usando la consola sin la necesidad de cerrar firefox con Ctrl + C o abrir otra sesión, es decir quiero abrir firefox y luego seguir usando la línea sin necesidad de ver que esta haciendo en el segundo plano o ver si tiene bugs tal o cual programa, simplemente abrirlo y seguir picando los comandos!

    Saludos!

    • La primera pregunta no la entendí muy bien…

      La segunda puedes hacerlo añadiendo & al final. Siguiendo tu ejemplo, escribe firefox &
      Después podrás seguir utilizando la consola o incluso cerrarla sin que se cierre firefox.

      Saludos.

    • Bueno, después de volver a leer la primera pregunta, quizás lo que te sirva es utilizar &&
      comando1 && comando2
      Se ejecuta el primer comando y cuando termine se ejecutará el segundo…
      no sé si es eso lo que pedías.

      Saludos.

      • Si muchas gracias, me refería a eso, como ingresar varios comandos sin tener que hacer un Bash script.
        Se que es mas incomodo pero para darle 2 o 3 líneas funciona, sin tener que hacer propiamente un script.

        Gracias & es el Santo Grial.
        Ahora mi caracter favorito paso de ser @ a & jajajaja

        Saludos.

  3. Estupendo tutorial. Tenía curiosidad por saber como se manejan los archivos tar.gz y soy más de entorno gráfico, pero he leido todo el artículo con interés y está muy bien explicado y es muy interesante.

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s