- Dave McKay
@TheGurkha
- 5 de abril de 2019, 8:00 a. m. EDT
Los archivos Tar son archivos comprimidos. Los encontrará con frecuencia al usar una distribución de Linux como Ubuntu o incluso al usar el terminal en macOS. Aquí 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?
Archivos que tienen una .tar.gz
o una .tar.bz2
son archivos comprimidos. Un archivo con solo una .tar
extensión no está comprimido, pero será muy raro.
La .tar
de la extensión de archivo significa archivo de cinta, y es la razón por la que ambos tipos de archivos se denominan archivos tar. Los archivos tar se remontan a 1979 cuando se creó el comando tar
para permitir que los administradores del sistema archiven 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 .gz
o El sufijo de extensión .bz2
indica que el archivo se ha comprimido, utilizando gzip
o bzip2
algoritmo de compresión. El comando tar
funcionará a la perfección 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 las opciones de línea de comando tar
apropiadas.
Extraer archivos de archivos Tar
Digamos 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 de ukelele:
tar -xvzf ukulele_songs.tar.gz
A medida que se extraen los archivos, se enumeran en la ventana de terminal.
Las opciones de línea de comando que usamos son:
- -x: Extraer, recuperar 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 tar archivo 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 un 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 extraigamos 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 listan en el terminal a medida que se extraen. Para ser claros, las opciones de línea de comando que usamos con tar
para el archivo .tar.bz2
fueron:
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
Si queremos extraer los archivos a una ubicación además del directorio actual, podemos especificar un directorio de destino usando la opción -C
(directorio especificado).
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Mirando en nuestro directorio de 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 hacer que tar
extraiga los archivos 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/
La opción -p
(padres) hace que mkdir
cree los directorios principales necesarios, asegurando el directorio de destino
Mirando dentro de los archivos Tar antes de extraerlos
Hasta ahora, hemos dado un salto 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 archivo tar
antes de extraerlo mediante 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 | less
Observe que no necesitamos usar la opción -z
para listar los archivos. Solo necesitamos agregar la opción -z
cuando extraemos archivos de un archivo .tar.gz
. De la misma forma, no necesitamos la opción -j
para listar los archivos en un archivo tar.bz2
.
Desplazarse por la salida podemos ver que todo en el archivo tar se guarda 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 Canciones Aleatorias, Ramones y Posibles.
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 "Ukulele Songs/Ramones/"
Para extraer un solo archivo, proporcione la ruta y el nombre del archivo.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/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 "Ukulele Songs/Possibles/B*"
Extraer archivos sin extraer directorios
Si no desea que la estructura de directorios 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 del directorio no se replica en su disco duro.
Si especificamos --strip-components=1
con nuestro archivo tar de ejemplo, el 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
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
Si miras la página de manual de Linux, verás 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 .tar.gz
y tar.bz2
con un buen grado de control granular, solo necesitamos recordar unos pocos de estas opciones.
Dave McKay usó por primera vez computadoras cuando la cinta de papel perforada estaba de moda, y ha estado programando desde entonces . Después de más de 30 años en la industria de TI, ahora es un periodista de tecnología de tiempo completo. Durante su carrera, ha trabajado como programador independiente, gerente de un equipo internacional de desarrollo de software, gerente de proyectos de servicios de TI y, más recientemente , como oficial de protección de datos. Dave es un evangelista de Linux y defensor del código abierto. Lee la biografía completa «