Tutoriales

15 ejemplos de comandos tar para administradores de sistemas y desarrolladores

tar es uno de los formatos de archivo de archivos más populares disponibles en los sistemas basados ​​en Unix y Linux.

El nombre en sí proviene de Toneladamono Realidad aumentadachive, ya que fue desarrollado para escribir datos secuenciales en dispositivos de cinta. A veces también se le llama tarball.

Por defecto, tar solo archiva archivos sin comprimir pero usa algunas partes. Podemos usar diferentes técnicas de compresión para obtener una salida comprimida. La utilidad tar suele incluirse de forma predeterminada en la mayoría de las distribuciones de Linux, y el formato en sí es compatible con otros sistemas operativos, incluidos Windows y macOS, a través de diferentes herramientas y utilidades.

En este artículo, cubriremos algunos ejemplos y usos comunes del comando tar y las banderas que admite.

Entonces empecemos…

Crear archivo tar

Para crear un archivo simple sin comprimir, la sintaxis es tar El comando es:

$ tar cvf  

Firma aqui c representa la creación, v para salida detallada y f Se utiliza para especificar el nombre del archivo de almacenamiento tar.Por convención, especifique el nombre del archivo tar .tar posponer. Los archivos para archivar se pueden especificar mediante comodines o rutas/nombres de archivo únicos o múltiples.

Por ejemplo, tengo tres archivos en mi directorio:

$ ls -l
total 12
-rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt
$

quiero crear un tar Un archivo que contiene los tres archivos se puede hacer así:

$ tar cvf archive.tar *
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar
-rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar
$

También puedo especificar archivos específicos para archivar, por ejemplo:

$ tar cvf archive1.tar file1.txt file2.txt
file1.txt
file2.txt
$ ls -l archive1.tar
-rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive1.tar
$

Crear un archivo comprimido (GZ)

tar no solo permite archivar archivos, sino que también los comprime para ahorrar espacio.Un formato de compresión popular es gunzip, generalmente indicado por la extensión .gz Trasero .tar o como tgz. Nosotros podemos usar z bandera para especificar que necesitamos usar gunzip para comprimir el archivo. Aquí hay un ejemplo:

$ tar cvzf archive.tar.gz file*
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar archive.tar.gz
-rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar
-rw-r--r-- 1 abhisheknair abhisheknair   188 Sep 12 20:21 archive.tar.gz
$

Puede observar que los dos archivos de almacenamiento tienen un tamaño muy diferente, aunque ambos contienen los mismos tres archivos.Esto se debe al uso de compresión usando z bandera.

Crear un archivo comprimido (BZ2)

tar admite varios otros formatos de compresión.Uno de ellos es bz2 o bzip2 representada por la extensión tar.bz2 o a veces como tbz2Es posible que le dé un tamaño de archivo más pequeño, pero a su vez consume más CPU, por lo que el proceso de compresión/descompresión puede ser más rápido que . gz Archivo.

ejemplo:

$ tar cvjf archive.tar.bz2 file*
file1.txt
file2.txt
file3.txt
$ ls -l archive.tar archive.tar.gz archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar
-rw-r--r-- 1 abhisheknair abhisheknair   212 Sep 12 20:25 archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair   188 Sep 12 20:21 archive.tar.gz
$ file archive.tar*
archive.tar:     POSIX tar archive (GNU)
archive.tar.bz2: bzip2 compressed data, block size = 900k
archive.tar.gz:  gzip compressed data, from Unix, original size modulo 2^32 10240
$

descomprimir todos los archivos

Los archivos tar (comprimidos o sin comprimir) se pueden crear simplemente usando x opciones El siguiente ejemplo ilustrará su uso:

$ tar xvf archive.tar
file1.txt
file2.txt
file3.txt
$ ls -l
total 24
-rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 19 18:25 archive.tar
-rw-r--r-- 1 abhisheknair abhisheknair    13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair    19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair    24 Sep 12 20:08 file3.txt
$

Esto aplica a gz El archivo comprimido es:

$ tar xvf archive.tar.gz
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 19 18:27 archive.tar.gz
-rw-r--r-- 1 abhisheknair abhisheknair  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair  19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair  24 Sep 12 20:08 file3.txt
$

incluso para un bz2 El archivo comprimido es:

$ tar xvf archive.tar.bz2
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair  19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair  24 Sep 12 20:08 file3.txt
$

Listar el contenido de alquitrán

Para enumerar el contenido de un archivo tar, puede usar t El logotipo es el siguiente:

$ tar tvf archive.tar.bz2
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
$

Descomprimir un archivo específico

solo puede extraer uno de un archivo tar o tar.gz o tar.bz2 Al especificar el nombre de archivo como el archivo:

$ tar xvf archive.tar.bz2 file1.txt
file1.txt
$ ls -l
total 8
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair  13 Sep 12 20:08 file1.txt
$

Asimismo, puede especificar varios nombres de archivo separados por espacios para extraerlos todos a la vez.

$ tar xvf archive.tar.bz2 file1.txt file3.txt
file1.txt
file3.txt
$ ls -l
total 12
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair  24 Sep 12 20:08 file3.txt
$

Descomprimir con comodines

Extrae uno o más archivos usando comodines PATTERNutilizando --wildcards bandera:

$ tar xvf archive.tar.bz2 --wildcards "file*"
file1.txt
file2.txt
file3.txt
$ ls -l
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2
-rw-r--r-- 1 abhisheknair abhisheknair  13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair  19 Sep 12 20:08 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair  24 Sep 12 20:08 file3.txt
$

Agregar archivo al archivo

Puede agregar/agregar a un tarball sin comprimir existente con nuevos archivos r o --append Marcar con nuevo nombre de archivo o patrón comodín (recuerde que esto solo funciona para archivos sin comprimir) .tar archivo en lugar de tar.gz o tar.bz2 Formato de compresión):

$ tar rvf archive.tar file-new*
file-new.txt
file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
-rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt
-rw-r--r-- abhisheknair/abhisheknair  9 2021-09-19 19:10 file-new.txt
-rw-r--r-- abhisheknair/abhisheknair  9 2021-09-19 19:10 file-new2.txt
$

Puedes observar lo que se enumera archive.tar Los dos archivos recién agregados se muestran nuevamente.

Eliminar archivos del archivo

Los archivos específicos se pueden eliminar de un archivo tar usando --delete La bandera se ve así (compare la lista tar antes y después de la eliminación del archivo):

$ tar tvf archive.tar
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
-rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt
-rw-r--r-- abhisheknair/abhisheknair  9 2021-09-19 19:10 file-new.txt
-rw-r--r-- abhisheknair/abhisheknair  9 2021-09-19 19:10 file-new2.txt
$ tar --delete -f archive.tar file-new.txt file-new2.txt
$ tar tvf archive.tar
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
-rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt
$

Una vez más, esto solo funciona con tarballs sin comprimir y fallará con formatos de archivo comprimidos.

Crear con validación

Al crear un archivo tar sin comprimir, puede verificar el contenido del archivo utilizando W Marcar como:

$ tar cvfW archive.tar file*.txt
file1.txt
file2.txt
file3.txt
Verify file1.txt
Verify file2.txt
Verify file3.txt
$

Esto no se puede usar con el indicador de compresión, aunque puede comprimir el creado tar utilizar el archivo más tarde gzip u otras herramientas.

Extrae el tar a una carpeta.

Si desea extraer el contenido del tarball a una carpeta específica en lugar del directorio actual, use -C Utilice la notación de ruta de directorio de la siguiente manera:

$ tar xvf archive.tar -C new-directory/
file1.txt
file2.txt
file3.txt
file2.txt
file4.txt
$ ls -l new-directory/
total 16
-rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair 15 Sep 19 18:59 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt
-rw-r--r-- 1 abhisheknair abhisheknair 10 Sep 19 18:58 file4.txt
$

Usa la bandera de diferencias

puedes usarlo --diff o d Marque para buscar cualquier cambio entre los archivos en el archivo tar y los archivos en el sistema de archivos.esto es una carrera diff Una vez, cuando los archivos tar y externos eran lo mismo. Después de actualizar el archivo, se ejecuta nuevamente para mostrar la diferencia en la salida.

$ tar dvf archive.tar file4.txt
file4.txt
$
$ echo newline > file4.txt
$
$ tar dvf archive.tar file4.txt
file4.txt
file4.txt: Mod time differs
file4.txt: Size differs
$

Excluir archivos

Ciertos archivos pueden necesitar ser excluidos al crear un archivo tar.Esto se puede hacer por --exclude bandera.

$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/
dir/
dir/file1.txt
dir/file3.txt
$ ls -l dir
total 24
-rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new.txt
-rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new2.txt
-rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:20 file-new3.txt
-rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:27 file1.txt
-rw-r--r-- 1 abhisheknair abhisheknair 6 Sep 19 19:27 file2.txt
-rw-r--r-- 1 abhisheknair abhisheknair 8 Sep 19 19:27 file3.txt
$ tar tvf archive.tar.gz
drwxr-xr-x abhisheknair/abhisheknair 0 2021-09-19 19:30 dir/
-rw-r--r-- abhisheknair/abhisheknair 5 2021-09-19 19:27 dir/file1.txt
-rw-r--r-- abhisheknair/abhisheknair 8 2021-09-19 19:27 dir/file3.txt
$

Como se puede ver en la salida anterior, podemos especificar --exclude Marque varias veces para especificar varios nombres de archivo o patrones AND situación.Tenga en cuenta que en dir En el ejemplo anterior, solo dos archivos cumplen la condición para ser incluidos archive.at.gz.

Ver el tamaño del contenido de alquitrán

Podemos obtener el tamaño del contenido del archivo tar comprimido con el siguiente comando:

$ tar tvf archive.tar.gz
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
$ tar -xzf archive.tar.gz --to-stdout|wc -c
56
$

lo mismo para bz2 Archivo:

$ tar tvf archive.tar.bz2
-rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt
-rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt
-rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt
$ tar -xjf archive.tar.bz2 --to-stdout|wc -c
56
$

permisos reservados

por defecto, tar El comando conserva los permisos de los archivos y directorios que está archivando, aunque puede especificar explícitamente los mismos permisos usando -p firmar o --preserve-permissions Como sigue:

$ tar cvpzf archive.tar.gz *.txt
file1.txt
file2.txt
file3.txt
$

Resumen 👨‍💻

tar ha sido durante mucho tiempo una utilidad útil en los sistemas Unix/Linux, principalmente para tareas de archivado y copia de seguridad. Con el tiempo, la utilidad ha evolucionado muchas opciones. Se puede usar para tareas simples a complejas si sabe lo que ofrece.Este artículo describe algunas operaciones básicas que puede utilizar tar comando y mostrar cómo puede ayudarlo con las tareas diarias de administración del sistema.

Consulte su página man man tar o usar tar --help o tar --usage Comando para más detalles.

LEER  Cómo controlar el acceso según la dirección IP del cliente en NGINX

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba