
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 tbz2
Es 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 PATTERN
utilizando --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.