Búsqueda de sitios web

Cómo crear y extraer archivos tar en la línea de comandos de Linux


Tar es una de las herramientas más comunes utilizadas para archivar archivos en Linux. Aprenda cómo crear un tarball y cómo extraerlo en el tutorial para principiantes.

¿Qué es el alquitrán? Tar significa "archivo en cinta" y se refiere a una práctica de los primeros días de la informática cuando se realizaban copias de seguridad de los datos en cintas. A pesar del origen nostálgico del nombre, tar es muy potente y utiliza tecnologías modernas para archivar y comprimir archivos.

Actualice los conceptos básicos: archivo versus compresión

Es importante que los usuarios de Linux comprendan el comando tar. Antes de profundizar demasiado en el tema, comencemos con una pequeña aclaración.

  • Archivado: el acto de almacenar varios archivos como un solo archivo.

  • Compresión: el acto de reducir uno o varios archivos más grandes.

Tar es una herramienta de archivo. Crea un único archivo a partir de varios archivos. Esto ahorra ancho de banda de la red, tiempo y potencia de procesamiento al transferir los archivos. Un solo archivo de 100 MB requiere mucho menos que transferir 100 archivos de 1 MB debido a la sobrecarga del archivo.

Es por eso que a menudo encontrará software disponible en un 'tarball'. Tarball es el término común utilizado para un archivo tar.

Aunque tar por sí solo no puede comprimir archivos, puedes usar uno de los algoritmos de compresión comunes para comprimir los archivos mientras creas un tarball. Te lo mostraré Le explicaremos cómo hacerlo más adelante en este tutorial básico de tar.

Archivos tar comunes

Estos son algunos de los "archivos tar" comunes que encontrará:

.Tar: Este es un archivo tarball. Es sólo un archivo y no se realiza ninguna compresión.

.Tar.Gz o .tgz: Esta es la extensión de un archivo comprimido que ha sido comprimido con Gzip.

.Tar.Bz2 o .tbz: Esta es la extensión de un archivo comprimido que ha sido comprimido con Bz2. Esta es una tecnología relativamente nueva. Presenta una relación de compresión más alta, pero ese mayor poder de contracción significa que tarda un poco más en completarse.

.Tar.xz o .txz, etc.: Tar también cuenta con soporte integrado para xz, lzip y más. Estas herramientas utilizan principalmente el mismo algoritmo de compresión, LZMA. El popular 7z, que se ha vuelto bastante común en entornos Windows, también utiliza este algoritmo. Otras diferencias en los archivos se deben a la estructura y los metadatos. No entraré en estos detalles en nuestros ejemplos, pero quería mencionarlos.

Es importante recordar que las extensiones no son necesarias en Linux y otros sistemas basados en Unix. Su sistema Unix normalmente puede identificar archivos por sus encabezados independientemente de su extensión, pero usar el esquema de nombres común puede ayudar a evitar confusiones. Puede utilizar el comando de archivo en Linux para saber el tipo de archivo.

Ejemplos de comando tar

Para este artículo, quiero demostrar algunos de los métodos comunes para archivar y comprimir archivos usando tar.

He reunido algunos archivos de diferentes tipos en mi carpeta Documentos. Hay imágenes de archivo y algunos archivos de texto. Veremos cómo la compresión cambia el tamaño del archivo a través de varios ejemplos.

Aquí hay una lista completa de los documentos que se utilizarán.

christopher@linux-handbook:~/Documents$ ll
total 7404
drwxr-xr-x  2 christopher christopher    4096 May  5 10:55 ./
drwxr-xr-x 17 christopher christopher    4096 May  5 10:59 ../
-rw-r--r--  1 christopher christopher 5094932 Apr 30 23:54 aerial-view-of-bushes-on-sand-field-3876435.jpg
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:57 lorem1.txt
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:57 lorem2.txt
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:57 lorem3.txt
-rw-r--r--  1 christopher christopher   13268 Apr 30 23:56 lorem.txt
-rw-r--r--  1 christopher christopher 2411919 Apr 30 23:54 mountain-range-2397645.jpg

Ya mencioné las capacidades de tar. Es una herramienta poderosa con muchas opciones. Las distintas opciones y tipos de archivos pueden hacer que el comando parezca más complicado de lo que realmente es. Como siempre, mi objetivo es desmitificar la línea de comando. Así que dividamos las cosas en partes más pequeñas antes de combinar varias opciones en los ejemplos.

A continuación se muestra una tabla de opciones utilizadas habitualmente. Tenga en cuenta que esto es sólo el comienzo. Recomiendo revisar la documentación de ayuda usted mismo para encontrar aún más posibilidades una vez que se sienta cómodo.

Switch Expansive Options Description
-c, –create create a new archive
-d, –diff, –compare find differences between archive and file system
-r, –append append files to the end of an archive
-t, –list list the contents of an archive
-u, –update only append files newer than copy in archive
-x, –extract, –get extract files from an archive
-j, –bzip2 filter the archive through bzip2
-z, –gzip, –gunzip, –ungzip filter the archive through gzip

1) Crea un archivo tar

Anteriormente mencioné los tipos de archivos comunes asociados con el comando tar. Este es quizás el más básico.

tar cvf output_tarball.tar source_directory

No se aplicará compresión, por lo que el archivo ocupará al menos tanto espacio como los archivos de la carpeta de documentos.

christopher@linux-handbook:~$ tar cvf doc.tar ~/Documents

tar cvf (crear, detallado, archivar archivos): crea un nuevo archivo tar llamado doc.tar a partir de todos los archivos en ~/Documentos.

christopher@linux-handbook:~$ ll doc.tar
-rw-r--r-- 1 christopher christopher 7567360 May  5 11:00 doc.tar

Tenga en cuenta que el tarball tendrá la misma estructura de directorios que el directorio fuente del tarball.

2) Crea un tarball gzip

Probemos la compresión gzip mientras creamos el tarball.

christopher@linux-handbook:~$ tar cvzf doc.tar.gz ~/Documents

tar cvzf (crear, detallado, g-zip, archivo-archivo): crea un nuevo archivo tar llamado doc.tar.gz a partir de todos los archivos en ~/Documentos. Utiliza compresión gzip (con la opción z) mientras crea el tarball.

christopher@linux-handbook:~$ ll doc.tar.gz 
-rw-r--r-- 1 christopher christopher 7512498 May  5 11:01 doc.tar.gz

Como puede ver, el tamaño del archivo tar comprimido con gzip es 54862 bytes (53 MB) menos que el de un archivo tar normal sin comprimir.

Preste atención al usar guiones – con opciones de alquitrán

Por lo general, cuando usas opciones con un comando de Linux, agregas un guión (-) antes de las opciones.
El guión antes de las opciones no es obligatorio y es mejor evitarlo. Es por eso que no lo he usado en los ejemplos.
Si usas un guión antes de las opciones, siempre debes mantener la f al final de las opciones. Si usa tar -cvfz, z se convierte en un argumento para la opción z. Y luego verá un error como este:

tar: doc.tar.gz: No se puede establecer: No existe tal archivo o directorio

Por eso es una buena práctica utilizar el opción f al final de todas las demás opciones para que incluso si usa un guión por costumbre, no creará un problema.

3) Crea un tarball bz2

Digamos que quieres crear un tarball bz2. Los pasos son los mismos que el anterior. Sólo necesitas cambiar la opción z (gzip) a j (bz2). Consulte la tabla de opciones que mencioné anteriormente.

christopher@linux-handbook:~$ tar cvjf doc.tar.bz2 ~/Documents

tar cvfj (crear, detallado, tipo bz2, archivar archivos).

christopher@linux-handbook:~$ ll doc.tar.bz2
-rw-r--r-- 1 christopher christopher 7479782 May  5 11:04 doc.tar.bz2

¿Notas el tamaño? Es incluso menos que el tarball comprimido con g.

4) Enumerar el contenido de un tarball

Puede utilizar la opción -t (en lugar de -c) para ver el contenido de un archivo comprimido. Esto funciona igual ya sea que el archivo esté comprimido o no. Enumerará el tamaño real del archivo, no el tamaño comprimido.

christopher@linux-handbook:~$ tar tvf doc.tar
drwxr-xr-x christopher/christopher 0 2020-05-05 10:55 home/christopher/Documents/
-rw-r--r-- christopher/christopher 5094932 2020-04-30 23:54 home/christopher/Documents/aerial-view-of-bushes-on-sand-field-3876435.jpg
-rw-r--r-- christopher/christopher   13268 2020-04-30 23:57 home/christopher/Documents/lorem1.txt
-rw-r--r-- christopher/christopher   13268 2020-04-30 23:56 home/christopher/Documents/lorem.txt
-rw-r--r-- christopher/christopher 2411919 2020-04-30 23:54 home/christopher/Documents/mountain-range-2397645.jpg
-rw-r--r-- christopher/christopher   13268 2020-04-30 23:57 home/christopher/Documents/lorem3.txt
-rw-r--r-- christopher/christopher   13268 2020-04-30 23:57 home/christopher/Documents/lorem2.txt

5) Agregar más archivos a un tarball

Puede agregar archivos a un archivo tarball usando -r. No puede agregar archivos a un archivo comprimido sin extraerlos primero usando el comando tar.

También puede agregar usando la opción -u para actualizar. Se supone que esta opción solo agrega los archivos nuevos de acuerdo con los documentos de ayuda, pero en mi práctica, funcionó igual que agregar, agregando nuevas copias de todos los archivos.

christopher@linux-handbook:~$ tar rvf doc.tar ~/Documents/

6) Extraer un tarball

Ahora que ha visto cómo los diferentes tipos de compresión afectan el tamaño general del archivo, veamos cómo extraer esos archivos.

christopher@linux-handbook:~$ cd docs
christopher@linux-handbook:~/docs$ tar xvf ~/doc.tar.gz 

Cambié a un nuevo directorio llamado docs. Luego usé tar xvf (extraer, detallado, archivar archivos) para descomprimir el contenido aquí.

christopher@linux-handbook:~/docs/home/christopher/Documents$ ls
aerial-view-of-bushes-on-sand-field-3876435.jpg  lorem1.txt  lorem2.txt  lorem3.txt  lorem.txt  mountain-range-2397645.jpg

Es importante tener en cuenta que tar conserva la estructura de archivos, por lo que cuando extraigo los archivos, están en /home/christopher/Documents. Para evitar esto, puede cambiar al directorio deseado (~/Documentos) y copiar todos los archivos usando el comodín * en lugar de la estructura del directorio.

7) Extraiga el tarball a un directorio específico

De forma predeterminada, el contenido de un archivo tar se extrae en el directorio actual. Eso no siempre es deseable.

Puede extraer un archivo tar a un directorio específico de la siguiente manera:

tar xvf tar_file -C destination_directory

El directorio de destino debe existir, así que asegúrese de utilizar el comando mkdir para crear uno de antemano.

Resumen

Esto es lo que debe tener en cuenta al usar tar en Linux:
Casi siempre se usa en formato tar cf o tar xvf. Recuerda esto:

  • c significa crear: lo usas para crear un tarball

  • x significa extraer: lo usas para extraer un tarball

  • f significa archivo: lo usa para el nombre del archivo tar (tanto para crear como para extraer). Intenta usarlo al final de las opciones.

  • v significa detallado: es opcional pero muestra lo que está sucediendo con el comando.

    Por supuesto, no puedes usar las opciones c y x en el mismo comando tar.

Conclusión

¿Disfrutaste nuestra guía del comando tar? Espero que todos estos consejos te hayan enseñado algo nuevo.

Si te gusta esta guía, compártela en las redes sociales. Si tiene algún comentario o pregunta, déjelo a continuación.

Si tiene alguna sugerencia sobre temas que le gustaría que se cubran, no dude en dejarla también. Gracias por leer.

Artículos relacionados: