Cómo extraer archivos de un archivo .tar.gz o .tar.bz2 en Linux

¿Qué significa .tar.gz y .tar.bz2? Los archivos que tienen una extensión .tar.gz o .tar.bz2 son archivos comprimidos. Un archivo con solo una extensión .tar no está comprimido, pero serán muy raros.

Fatmawati Achmad Zaenuri/Shutterstock.com

Los archivos tar son archivos comprimidos. Los encontrará con frecuencia mientras usa una distribución de Linux como Ubuntu o incluso mientras usa la terminal en macOS. Aquí se explica cómo extraer, o descomprimir, el contenido de un archivo tar, también conocido como tarball.

¿Qué significa .tar.gz y .tar.bz2?

Los archivos que tienen una extensión .tar.gz o .tar.bz2 son archivos comprimidos. Un archivo con solo una extensión .tar no está comprimido, pero serán muy raros.

La parte .tar de la extensión del archivo significa t ape ar chive, y es la razón por la que ambos tipos de archivos se denominan archivos tar . Los archivos tar datan de 1979 cuando se creó el comando tar para permitir a los administradores del sistema archivar archivos en cinta. Cuarenta años después todavía estamos usando el comando tar para extraer archivos tar en nuestros discos duros. Alguien en algún lugar probablemente todavía esté usando tar con cinta.

El sufijo de extensión .gz o .bz2 indica que el archivo comprimido ha sido comprimido, utilizando gzip o bzip2 algoritmo de compresión El comando tar funcionará correctamente con ambos tipos de archivo, por lo que no importa qué método de compresión se haya utilizado, y debería estar disponible en todos los lugares donde tenga un shell Bash. Solo necesita usar las opciones de línea de comando tar apropiadas.

Extraer archivos de archivos Tar

Supongamos que ha descargado dos archivos de partituras. Un archivo se llama ukulele_songs.tar.gz , el otro se llama guitar_songs.tar.bz2 . Estos archivos están en el directorio de descargas.

Extraigamos las canciones del ukelele:

 tar -xvzf ukulele_songs.tar.gz

A medida que se extraen los archivos, se enumeran en la ventana del terminal.

Las opciones de línea de comando que utilizamos son:

  • -x : Extraiga, recupere los archivos del archivo tar.
  • -v : detallado, enumere los archivos a medida que se extraen.
  • -z : Gzip, use gzip para descomprimir el archivo tar.
  • -f : Archivo, el nombre del archivo tar con el que queremos que trabaje tar . Esta opción debe ir seguida del nombre del archivo tar.

Enumere los archivos en el directorio con ls y verá que se ha creado un directorio llamado Ukulele Songs. Los archivos extraídos están en ese directorio. ¿De dónde vino este directorio? Estaba contenido en el archivo tar y se extrajo junto con los archivos.

Ahora vamos a extraer las canciones de guitarra. Para hacer esto, usaremos casi exactamente el mismo comando que antes pero con una diferencia importante. El sufijo de extensión .bz2 nos dice que se ha comprimido usando el comando bzip2. En lugar de usar la opción -z (gzip), usaremos la opción -j (bzip2).

 tar -xvjf guitar_songs.tar.bz2 

Una vez más, los archivos se enumeran en el terminal a medida que se extraen. Para ser claros, las opciones de línea de comando que utilizamos con tar para el archivo .tar.bz2 fueron:

  • -x : Extraiga, recupere los archivos del archivo tar.
  • -v : detallado, enumere los archivos a medida que se extraen.
  • -j : Bzip2, use bzip2 para descomprimir el archivo tar.
  • -f : archivo, nombre del archivo tar con el que queremos que trabaje tar.

Si enumeramos los archivos en el directorio de descargas, veremos que se ha creado otro directorio llamado Guitar Songs.

Elegir dónde extraer los archivos a

Si deseamos extraer los archivos a una ubicación que no sea el directorio actual, podemos especificar un directorio de destino utilizando la opción -C (directorio especificado).

 tar -xvjf guitar_songs.tar.gz -C ~/Documentos/Canciones/

Mirando en nuestro directorio Documentos/Canciones, veremos que se ha creado el directorio Guitar Songs.

Tenga en cuenta que el directorio de destino ya debe existir, tar no lo creará si no está presente. Si necesita crear un directorio y hacer que tar extraiga los archivos en un solo comando, puede hacerlo de la siguiente manera:

 mkdir -p ~/Documentos/Canciones/Descargado && tar -xvjf guitar_songs.tar.gz -C ~/Documentos/Canciones/Descargado/

La opción -p (parent) hace que mkdir cree cualquier directorio padre que sea necesario, asegurando que se cree el directorio de destino.

Mirar dentro de los archivos Tar antes de extraerlos

Hasta ahora, hemos dado un salto de fe y extraemos los archivos a simple vista. Es posible que desee mirar antes de saltar. Puede revisar el contenido de un archivo tar antes de extraerlo utilizando la opción -t (lista). Por lo general, es conveniente canalizar la salida a través del comando less .

 tar -tf ukulele_songs.tar.gz | menos 

Tenga en cuenta que no necesitamos usar la opción -z para enumerar los archivos. Solo necesitamos agregar la opción -z cuando estamos extrayendo archivos de un archivo .tar.gz . Del mismo modo, no necesitamos la opción -j para enumerar los archivos en un archivo tar.bz2 .

Desplazándonos por la salida podemos ver que todo en el archivo tar se encuentra dentro de un directorio llamado Ukulele Songs, y dentro de ese directorio, hay archivos y otros directorios.

Podemos ver que el directorio Ukulele Songs contiene directorios llamados Random Songs, Ramones and Possibles.

Para extraer todos los archivos de un directorio dentro de un archivo tar, use el siguiente comando. Tenga en cuenta que la ruta está entre comillas porque hay espacios en la ruta.

 tar -xvzf ukulele_songs.tar.gz "Canciones de ukelele/Ramones /" 

Para extraer un solo archivo, proporcione la ruta y el nombre del archivo.

 tar -xvzf ukulele_songs.tar.gz "Canciones de ukelele/023 - My Babe.odt" 

Puede extraer una selección de archivos utilizando comodines, donde * representa cualquier cadena de caracteres y ? representa cualquier carácter individual. El uso de comodines requiere el uso de la opción --wildcards .

 tar -xvz --wildcards -f ukulele_songs.tar.gz "Canciones/Posibles Ukulele/B *" 

Extraer archivos sin extraer directorios

Si no desea que la estructura del directorio en el archivo tar se vuelva a crear en su disco duro, use la opción --strip-components . La opción --strip-components requiere un parámetro numérico. El número representa cuántos niveles de directorios ignorar. Los archivos de los directorios ignorados aún se extraen, pero la estructura de directorios no se replica en su disco duro.

Si especificamos --strip-components = 1 con nuestro archivo tar de ejemplo, el directorio superior de Ukulele Songs dentro del archivo tar no se crea en el disco duro. Los archivos y directorios que se habrían extraído a ese directorio se extraen en el directorio de destino.

 tar -xvzf ukulele_songs.tar.gz --strip-components = 1 

Solo hay dos niveles de anidamiento de directorios dentro de nuestro archivo tar de ejemplo. Entonces, si usamos --strip-components = 2 , todos los archivos se extraen en el directorio de destino y no se crean otros directorios.

 tar -xvzf ukulele_songs.tar.gz --strip-components = 2 

Si observa la página de manual de Linux, verá que tar tiene que ser un buen candidato para el título de «comando que tiene la mayor cantidad de opciones de línea de comando». Afortunadamente, para permitirnos extraer archivos de archivos .tar.gz y tar.bz2 con un buen grado de control granular, solo necesitamos recordar un puñado de estas opciones .

Rate article
labsfabs.com
Add a comment