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

Bash shell en el concepto de escritorio Unity
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 el terminal en macOS. A continuación se explica cómo extraer (o descomprimir) el contenido de un archivo tar, también conocido como tarball.

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

Los archivos que tienen una extensión .tar.gzo .tar.bz2son archivos comprimidos. Un archivo con solo una .tarextensión no está comprimido, pero esos serán muy raros.

La .tarparte 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 se remontan a 1979 cuando tarse creó el comando para permitir a los administradores del sistema archivar archivos en cinta. Cuarenta años después, todavía estamos usando el tarcomando para extraer archivos tar en nuestros discos duros. Alguien en algún lugar probablemente todavía esté usando tarcinta.

El  sufijo de extensión .gzo .bz2indica que el archivo se ha comprimido, utilizando el algoritmo de compresión gzipo bzip2. El tarcomando funcionará a la perfección con ambos tipos de archivos, 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 tar opciones de línea de comando apropiadas .

Extraer archivos de archivos Tar

Supongamos que ha descargado dos archivos de partituras. Se llama a un archivo, se llama ukulele_songs.tar.gzal otro guitar_songs.tar.bz2. Estos archivos están en el directorio de Descargas.

Relacionado:  Cómo usar SUID, SGID y Sticky Bits en Linux

Dos archivos tar 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.

Extracción de todos los archivos del archivo tar

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

  • -x : Extraer, recuperar los archivos del archivo tar.
  • -v : detallado, enumera 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 tartrabajar. Esta opción debe ir seguida del nombre del archivo tar.

Enumere los archivos en el directorio con lsy 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 tararchivo y se extrajo junto con los archivos.

Directorio de canciones de ukelele creado en el directorio de descargas

Ahora extraigamos las canciones de guitarra. Para hacer esto, usaremos casi exactamente el mismo comando que antes pero con una diferencia importante. El .bz2sufijo de la extensión nos dice que se ha comprimido usando el comando bzip2. En lugar de usar la -zopción (gzip), usaremos la -jopción (bzip2).

tar -xvjf guitar_songs.tar.bz2

Extracción del archivo tar de canciones de guitarra en la carpeta Descargas

Una vez más, los archivos se enumeran en la terminal a medida que se extraen. Para ser claros, las opciones de línea de comando que usamos tarpara el .tar.bz2archivo fueron:

  • -x : Extraer, recuperar los archivos del archivo tar.
  • -v : detallado, enumera 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.

Si listamos los archivos en el directorio de Descargas veremos que se ha creado otro directorio llamado Guitar Songs.

Directorio de canciones de guitarra creado en el directorio Descargas

Elección de dónde extraer los archivos

Si queremos extraer los archivos a una ubicación que no sea el directorio actual, podemos especificar un directorio de destino usando la -Copción (directorio especificado).

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

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

Relacionado:  Cómo montar unidades extraíbles y ubicaciones de red en el subsistema de Windows para Linux

Directorio de canciones de guitarra creado en el directorio Documentos / Canciones

Tenga en cuenta que el directorio de destino ya debe existir, tarno lo creará si no está presente. Si necesita crear un directorio y tarextraer 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 -p opción (padres) hace mkdirque se creen los directorios principales necesarios, lo que garantiza que se cree el directorio de destino.

Mirar dentro de los archivos de alquitrán antes de extraerlos

Hasta ahora hemos hecho un acto de fe y hemos extraído los archivos sin ser vistos. Es posible que desee mirar antes de saltar. Puede revisar el contenido de un tararchivo antes de extraerlo mediante la -topción (lista). Por lo general, es conveniente canalizar la salida a través del lesscomando.

tar -tf ukulele_songs.tar.gz | Menos

Tenga en cuenta que no necesitamos usar la -zopción para listar los archivos. Solo necesitamos agregar la -zopción cuando estamos extrayendo archivos de un .tar.gzarchivo. Asimismo, no necesitamos la -jopción de listar los archivos en un tar.bz2archivo.

Contenido del archivo tar enviado a través de less

Al desplazarnos 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.

Segunda vista del contenido del archivo tar canalizado a través de less

Podemos ver que el directorio Ukulele Songs contiene directorios llamados Random Songs, Ramones y 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 /"

Extrayendo una sola carpeta del archivo tar

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"

Extrayendo un solo archivo del archivo tar

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 --wildcardsopción.

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

Extrayendo canciones de tar con comodines

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 --strip-componentsopción. La --strip-componentsopción 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 del directorio no se replica en su disco duro.

Relacionado:  Cómo pausar un script Bash con el comando de suspensión de Linux

Si especificamos --strip-components=1con nuestro archivo tar de ejemplo, el directorio superior de canciones de Ukulele 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

Extrayendo archivos del archivo tar con --strip-components = 1

Solo hay dos niveles de anidación 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

Extrayendo archivos del archivo tar con --strip-components = 2

Si observa la página de manual de Linux  , verá que tartiene 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 .tar.gzy tar.bz2archivos con un buen grado de control granular, solo necesitamos recordar algunas de estas opciones.