Comando tar en Linux: Crear, Extraer y Listar .tar y .tar.gz
El comando tar en Linux sirve para crear archivos de archivos en Linux. Estos archivos provienen de la época en que se usaban cintas de backup para crear copias de seguridad de los datos.
Con el fin del uso de cintas de backup, el uso de crear archivos utilizando el mismo software continuó en el mundo Unix y Linux, a través del comando tar, que crea los archivos conocidos como "tarball".
Los archivos tarball son empaquetados de archivos y directorios que mantienen la estructura de directorios y archivos original en un archivo tar, con la posibilidad de compresión de datos.
El comando para empaquetar archivos y directorios es el tar. El nombre de este comando proviene de "Tape-ARchive". Él lee archivos y directorios y los guarda en cinta o archivo.
Juntamente con los datos, él guarda información importante como la última modificación, permisos de acceso y otros. Esto lo hace capaz de restaurar el estado original de los datos.
Las opciones del comando tar no son tan opcionales después de todo. Él recibe al menos dos argumentos:
- opciones: Dice lo que tar debe hacer
- [fuente]: Si el tar se utiliza para hacer backup, este parámetro puede ser un archivo, un dispositivo, un directorio a ser copiado;
- [destino]: Si el comando se utiliza para backup, esta opción especificará el destino para los datos. Puede ser un archivo tarball o un dispositivo. Si se utiliza para restaurar los archivos, ella especificará un archivo tarball y un dispositivo de donde los datos serán extraídos.
Primero se debe elegir lo que tar debe hacer a través de las opciones:
- -c: Crea un nuevo archivo .tar;
- -u: Agrega más archivos al archivo .tar solamente si estos son nuevos o modificados;
- -r: Agrega los archivos especificados al final del archivo .tar;
- -g: Crea un backup incremental;
- -t: Lista el contenido de un archivo .tar;
- -x: Extrae los archivos del archivo .tar;
Él además tiene opciones auxiliares:
- -j: Utiliza bzip2 para comprimir y descomprimir los archivos .tar.bz2;
- -J: Utiliza xz para comprimir y descomprimir los archivos .tar.xz
- -z: Utiliza gzip para comprimir y descomprimir los archivos .tar.gz;
- -v: Lista todos los archivos procesados;
- -f: Indica que el destino es un archivo en disco, y no una unidad de cinta magnética;
Las opciones del tar pueden combinarse en un único parámetro como "cvzf".
Por ser un comando que originalmente fue hecho para leer/escribir en cinta, para crear un archivo tar o leer un archivo tar en disco, se debe siempre usar la opción "f".
Ejemplos:
Para guardar un determinado directorio /var/lib/mysql en un archivo /var/backup/mysql.tar.gz:
$ tar cvzf /var/backup/mysql.tar.gz /var/mysql
Para extraer el mismo paquete:
$ tar xvzf /var/backup/mysql.tar.gz –C /
Usted podrá abrir el contenido de un archivo tarball con extensión .tar.gz:
$ tar xvzf arquivo.tar.gz
Si el archivo está comprimido con bzip2, él debe ser descomprimido por bunzip2:
$ tar xvjf arquivo.tar
En el caso de los archivos comprimidos con xz, se puede utilizar:
$ tar xvJf linux.tar.xz
En el entorno gráfico, usted puede descomprimir y extraer un archivo tarball sin mucho esfuerzo, simplemente haciendo clic en el archivo. De esta forma, Linux invocará en segundo plano el compresor de datos apropiado, conjuntamente con tar para extraer el paquete de datos en el directorio actual.
Vea la comparación entre la compresión realizada por los compresores gzip, bzip2 y xz y un archivo tar sin compresión:
$ ls -1shS linux*
895M linux.tar
165M linux.tar.gz
126M linux.tar.bz2
105M linux-5.4.3.tar.xz
En el día a día, es recomendado memorizar la siguiente tabla para descomprimir archivos:
| Extensión | Compresor Utilizado | Opción del Tar |
| .tar.gz | Gzip | $ tar xvzf archivo.tar.gz |
| .tar.bz2 | Bzip2 | $ tar xvjf archivo.tar.bz2 |
| .tar.xz | Xz | $ tar xvJf archivo.tar.xz |
Para crear un paquete a partir de una lista de directorios en un archivo y con fecha superior a 01/05/2020:
$ cat listabackup.txt/etc /var/lib/mysql/usr/local/apache2/conf
$ tar czPf backup.tar.gz -N 01/05/2020 -T listabackup.txt
Para guardar el directorio /etc en cinta SCSI en el dispositivo /dev/st0:
$ tar cvz /dev/st0 /etc
Para listar el contenido de una cinta SCSI en el dispositivo /dev/st0:
$ tar tfz /dev/st0
Para extraer solamente el archivo de contraseñas:
$ tar xvfz /dev/st0 etc/passwd
El tar permite hacer backups incrementales con facilidad, a través de la opción "-g":
$ tar cvfz backup-full.tar.gz –g arquivo_controle.txt /dir1 /dir2
En este ejemplo, tar creará un primer backup full llamado backup-full.tar.gz de los directorios dir1 y dir2. Una lista de control será generada por tar con el nombre de archivo_control.txt.
Para hacer backups incrementales, que contendrán solamente los archivos modificados desde el último backup (sea él full o incremental), se utiliza el mismo comando, solamente alterando el nombre del archivo tar:
$ tar cvfz backup-incremental.tar.gz –g arquivo_controle.txt /dir1 /dir2
De esta forma, tar solamente colocará en backup-incremental.tar.gz los archivos modificados desde el último backup.
Para restaurar el backup hecho de esta forma, se debe abrir el archivo backup-full.tar.gz:
$ tar xvzf backup-full.tar.gz
Y todos los backups incrementales hechos desde el backup full, en el orden que fueron creados:
$ tar xvzf backup-incremental.tar.gz
Aprenda mucho más sobre Linux en nuestro curso en línea. Usted puede realizar la inscripción aquí. Si usted ya tiene una cuenta, o quiere crear una, basta con entrar o crear su usuario aquí.
¿Le gustó? Comparta
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.