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 sistemas basados ​​en Unix y Linux.

El nombre en sí se deriva de Tmono Arkansascebollino, diseñado para escribir datos secuenciales en dispositivos de cinta. A veces también se lo conoce como tarball.

De forma predeterminada, tar archiva los archivos solo sin compresión, pero con algunas partes. Podemos utilizar varias técnicas de compresión para obtener una salida comprimida. La utilidad tar generalmente se incluye 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 varias herramientas y utilidades.

Cubriremos algunos de los ejemplos más comunes y el uso del comando tar y sus indicadores compatibles en este artículo.

Así que comencemos …

Índice de contenido

Crear archivo tar

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

$ tar cvf <tar-file-name> <files-to-archive>

Banderas aquí c representa la creación, v para una salida detallada y f para especificar el nombre del archivo tar. Incluya el nombre del archivo tar de forma predeterminada. a .tar Renovación. Los archivos que se van a archivar se pueden especificar con comodines o como nombres / rutas de archivo únicos o múltiples.

Como ejemplo, tengo tres archivos en mi directorio:

$ ls -ltotal 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$

Y quiero hacer uno tar El archivo que contiene los tres archivos se puede ejecutar de la siguiente manera:

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

También puedo especificar solo ciertos archivos para archivar, como:

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

Crear archivo comprimido (GZ)

tar no solo permite archivar archivos, sino que también permite comprimirlos para ahorrar espacio. Uno de los formatos de compresión más populares es gunzip, generalmente representado por la extensión .gz después .tar o como tgz. Nosotros podemos usar z Marcar para indicar que los archivos deben comprimirse con gunzip. Aquí hay un ejemplo:

$ tar cvzf archive.tar.gz file*file1.txtfile2.txtfile3.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 encontrar que el tamaño de los dos archivos de almacenamiento es significativamente diferente, aunque ambos contienen los mismos tres archivos. Esto se debe al uso de compresión con z Bandera.

Crear archivo comprimido (BZ2)

tar admite varios otros formatos de compresión. Uno de ellos es bz2 o bzip2 que está representado por expansión tar.bz2 o a veces como tbz2. Puede resultar en 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 lento que gz Archivo.

Ejemplo:

$ tar cvjf archive.tar.bz2 file*file1.txtfile2.txtfile3.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 = 900karchive.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 10240$

Extrae todos los archivos

Un archivo tar (ya sea comprimido o sin comprimir) se puede agregar fácilmente al x Oportunidad. Los siguientes ejemplos ilustran el uso:

$ tar xvf archive.tarfile1.txtfile2.txtfile3.txt$ ls -ltotal 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$

Eso funciona para un gz archivo comprimido como:

$ tar xvf archive.tar.gzfile1.txtfile2.txtfile3.txt$ ls -ltotal 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$

O incluso por un bz2 archivo comprimido como:

$ tar xvf archive.tar.bz2file1.txtfile2.txtfile3.txt$ ls -ltotal 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$

Mostrar contenido de alquitrán

Para enumerar el contenido de un archivo tar, puede t Marcar como se muestra a continuación:

$ 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$

Extrae ciertos archivos

Solo se puede extraer un archivo de un tar o tar.gz o tar.bz2 archive ingresando el nombre del archivo como:

$ tar xvf archive.tar.bz2 file1.txtfile1.txt$ ls -ltotal 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$

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

$ tar xvf archive.tar.bz2 file1.txt file3.txtfile1.txtfile3.txt$ ls -ltotal 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$

Extraer con comodín

Cómo extraer uno o más archivos con un marcador de posición PATTERN, usar –wildcards Bandera:

$ tar xvf archive.tar.bz2 --wildcards "file*"file1.txtfile2.txtfile3.txt$ ls -ltotal 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 archivos al archivo

Se pueden agregar / adjuntar nuevos archivos con archivos tar sin comprimir existentes r o –append Marcar con un nuevo nombre de archivo o patrón comodín (recuerde, esto solo se puede hacer sin comprimir .tar Archivos y no con tar.gz o tar.bz2 formatos comprimidos):

$ tar rvf archive.tar file-new*file-new.txtfile-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$

Puede observar el contenido de la colección de archive.tar muestra los dos archivos recién agregados nuevamente.

Eliminar archivos del archivo

Es posible eliminar ciertos archivos de un archivo tar con –delete Marque como se muestra a continuación (compare la lista de alquitrán antes y después de eliminar archivos):

$ 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$

Nuevamente, esto solo funciona con archivos tar sin comprimir y falla con formatos de archivo comprimidos.

Crear con Verify

Mientras crea archivos tar sin comprimir, puede verificar el contenido del archivo con W Marcar como:

$ tar cvfW archive.tar file*.txtfile1.txtfile2.txtfile3.txtVerify file1.txtVerify file2.txtVerify file3.txt$

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

Extraer alquitrán a la carpeta

Si desea extraer el contenido de su tarball a una carpeta específica en lugar del directorio actual, use -C Marque con la ruta del directorio como se muestra a continuación:

$ tar xvf archive.tar -C new-directory/file1.txtfile2.txtfile3.txtfile2.txtfile4.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$

Usar indicador de diferencia

Puedes usar –diff o d Marcar para buscar todos los cambios entre los archivos del archivo tar y los del sistema de archivos. A continuación se muestra un ejemplo de que diff una vez cuando el archivo era el mismo dentro y fuera de la tarifa. Una vez actualizado el archivo, se volvió a ejecutar para ver la diferencia en la salida.

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

Excluir archivos

La exclusión de ciertos archivos puede ser un requisito al crear archivos tar. Esto se puede lograr con –exclude Bandera.

$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/dir/dir/file1.txtdir/file3.txt$ ls -l dirtotal 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.gzdrwxr-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 puede ver en la salida anterior, podemos usar el –exclude Marque varias veces para especificar varios nombres de archivo o patrones en AND Estado. Observe que de los seis archivos en el dir En el ejemplo anterior, solo dos archivos cumplieron la condición para su inclusión en archive.at.gz.

Muestra el tamaño del contenido de alquitrán

Podemos averiguar el tamaño del contenido de un 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 -c56$

Similar 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 -c56$

Conservar los permisos

El valor predeterminado es tar El comando conserva el permiso para los archivos y directorios que archiva, aunque puede especificarlo explícitamente -p Marcar o –preserve-permissions Como se muestra abajo:

$ tar cvpzf archive.tar.gz *.txtfile1.txtfile2.txtfile3.txt$

resumen

tar ha sido durante mucho tiempo una utilidad útil en sistemas Unix / Linux y se utilizó principalmente para tareas de archivo y copia de seguridad. La utilidad ha evolucionado con el tiempo con muchas opciones. Se puede utilizar para tareas que van desde simples hasta complejas, siempre que comprenda las capacidades que ofrece. Este artículo ha cubierto algunas de las operaciones básicas que puede utilizar tar Comando y muestra cómo puede ayudarlo con sus tareas diarias de administración del sistema.

Ver la página del manual man tar o usar tar –help o tar –usage Comando para más detalles.