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, le indicamos cómo extraer, o destar, el contenido de un archivo tar, también conocido como tarball.
¿De qué vamos a hablar?
¿Qué significa .tar.gz y .tar.bz2?
Archivos que tienen un .tar.gz
o un .tar.bz2
son archivos comprimidos. Un archivo con solo un .tar
la extensión no está comprimida, pero serán muy raras.
El .tar
parte de la extensión de archivo significa tmono Archive, y es la razón por la que ambos tipos de archivos se llaman archivos tar. Los archivos Tar se remontan a 1979 cuando el tar
se creó para permitir a los administradores del sistema archivar archivos en cinta. Cuarenta años después seguimos utilizando el tar
para extraer archivos tar en nuestros discos duros. Alguien en algún lugar probablemente todavía está usando tar
con cinta.
El .gz
o .bz2
El sufijo de extensión indica que el archivo se ha comprimido, utilizando el gzip
o bzip2
algoritmo de compresión. El tar
funcionará felizmente 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 cualquier lugar donde tenga un shell Bash. Solo necesita usar el apropiado tar
opciones de línea de comandos.
Extracción de archivos de archivos Tar
Digamos que has descargado dos archivos de partituras. Se llama a un archivo ukulele_songs.tar.gz
, el otro se llama guitar_songs.tar.bz2
. Estos archivos se encuentran en el directorio Descargas.
Extraigamos las canciones de 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 comandos que utilizamos son:
- -x: Extraer, recuperar los archivos del archivo tar.
- -v: Detallado, enumere los archivos a medida que se extraen.
- -z: Gzip, usa gzip para descomprimir el archivo tar.
- -f: Archivo, el nombre del archivo tar que queremos
tar
para trabajar. Esta opción debe ir seguida del nombre del archivo tar.
Enumere los archivos en el directorio con ls
y verás que se ha creado un directorio llamado Ukulele Songs. Los archivos extraídos están en ese directorio. ¿De dónde viene este directorio? Estaba contenido en el tar
y se extrajo junto con los archivos.
Ahora extraigamos las canciones de guitarra. Para ello usaremos casi exactamente el mismo comando que antes pero con una diferencia importante. El .bz2
el sufijo de extensión nos dice que se ha comprimido usando el comando bzip2. En lugar de utilizar el-z
(gzip) opción, usaremos la opción -j
(bzip2) opción.
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 comandos que usamos con tar
para el .tar.bz2
archivo fueron:
- -x: Extraer, recuperar 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 queremos extraer los archivos a una ubicación distinta al directorio actual, podemos especificar un directorio de destino utilizando el -C
(directorio especificado) opción.
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Buscando en nuestro directorio Documentos/Canciones veremos que se ha creado el directorio De Canciones de Guitarra.
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 tiene tar
extraiga los archivos en todo en un solo comando, puede hacerlo de la siguiente manera:
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
El -p
(padres) causas de la opción mkdir
para crear los directorios primarios que sean necesarios, asegurándose de que se crea el directorio de destino.
Mirar dentro de los archivos Tar antes de extraerlos
Hasta ahora hemos just dio un salto de fe y extrajo los archivos a la vista sin ser vistos. Es posible que desee mirar antes de saltar. Puede revisar el contenido de un tar
antes de extraerlo mediante el cuadro de registro -t
(lista) opción. Por lo general, es conveniente canalizar la salida a través del less
mandar.
tar -tf ukulele_songs.tar.gz | less
Tenga en cuenta que no necesitamos usar el -z
para enumerar los archivos. Solo necesitamos agregar el -z
opción cuando estamos Extracción archivos de un .tar.gz
archivo. Del mismo modo, no necesitamos el -j
opción para enumerar los archivos en un tar.bz2
archivo.
Desplazándose 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 y Possibles.
Para extraer todos los archivos de un directorio dentro de un archivo tar, utilice el siguiente comando. Tenga en cuenta que el trazado está entre comillas porque hay espacios en el trazado.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Para extraer un solo archivo, proporcione la ruta de acceso y el nombre del archivo.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
Puede extraer una selección de archivos mediante comodines, donde *
representa cualquier cadena de caracteres y ?
representa cualquier carácter individual. El uso de comodines requiere el uso de la --wildcards
opción.
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
Extracción de archivos sin extraer directorios
Si no desea que la estructura de directorios del archivo tar se vuelva a crear en el disco duro, utilice el comando --strip-components
opción. El --strip-components
requiere un parámetro numérico. El número representa cuántos niveles de directorios se deben ignorar. Los archivos de los directorios ignorados aún se extraen, pero la estructura de directorios no se replica en el disco duro.
Si especificamos --strip-components=1
con nuestro archivo tar de ejemplo, el directorio más alto de Ukulele Songs dentro del archivo tar no se crea en el disco duro. Los archivos y directorios que se habrían extraído en 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. Así que 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 nos fijamos en el Linux página de man verás que tar
tiene que ser un buen candidato para el título de “comando que tiene la mayoría de las opciones de línea de comandos”. Afortunadamente, para permitirnos extraer archivos de .tar.gz
y tar.bz2
archivos con un buen grado de control granular, solo necesitamos recordar un puñado de estas opciones.