6 minuto(s) de lectura

Tar - Tape ARchive

  • Archivador de ficheros
    • (Recopila uno o varios archivos en un solo fichero comprimido)

    • El comando tar crea un archivo .tar que comprime los archivos en uno solo usando como opciones los algoritmos de compresión gzip o bzip2

Funciones Básicas

  • Agrupar archivos para guardarlos y para extraerlos después de comprimirlos dependiendo del algoritmo usado reduciendo el tamaño del contenido

  • Respeta los permisos y demás características de los archivos originales

  • Esta disponible en muchas versiones de Linux y en el firmware de Android

  • Se puede utilizar para transferir gran cantidad de archivos de un servidor a otro

  • Para realizar copias de seguridad

Sintaxis básica del comando

# Cuando se añade un guión a cualquier opción "-c" indica que se usa la versión de UNIX
# Cuando no se añade un guión a cualquier opción "c" indica que se usa la versión de GNU/LINUX
     ← Crear la extensión .tar
     ↓   ← Crear el archivo añadiendole la extensión .tar
     ↓   ↓              ← Agregarle más opciones al comando como el tipo de compresión , etc
     ↓   ↓              ↓         ← Añadir los archivos y directorios que quiero comprimir
     ↓   ↓              ↓         ↓
tar -c [-f archivo] [opciones] [files...]

Archivación de ficheros mediante algoritmos de compresión

  • En términos generales cada archivo comprimido necesita de su mismo descompresor para poder descomprimirlo

  • Existen varias opciones para la compresión de ficheros en Unix/Linux los cuales se pueden combinar con el archivador tar mediante las opciones del comando

    • gzip - Compresor instalado en casi todos los sistemas Linux
      • gunzip - Descompresor estandar
    • zip - Compresor instalado en casi todos los sistemas Linux
      • unzip - Descompresor estandar
    • bzip2 - Compresor más eficiente que gzip por ello tarda más en realizar la compresión y consume más CPU
      • bunzip2 - Descompresor estandar
    • rar - Compresor
      • unrar - Descompresor estandar

Opciones del comando tar

  • c - Crear un nuevo archivo con la extensión .tar

  • x - Extraer archivos comprimidos

  • v - Muestra los detalles del proceso de compresión/descompresión al ejecutar el comando tar
    • Es opcional
  • f - Asigna un nombre y la extensión al archivo creado
    • Sin esta opción no se generará el archivo .tar
      • Ejemplo : archivo-comprimido.tar
  • t - Ver el contenido del archivo

  • h - Preservar el enlace simbolo de los archivos tar que se van a generar

  • C - Indica el directorio donde extraer los archivos

  • j - Comprimir archivo a través del algoritmo bzip2

  • z - Comprimir archivo a través del algoritmo gzip

  • r - Añadir/Actualizar archivos o directorios a los archivos existentes

  • --wildcards - Permite el uso de comodines UNIX/Linux para el comando tar
    • No permite (Expresiones Regulares/Regular expressions)

    • Comodines :

      • ? → Indica que el patrón coincide con cualquier carácter en la cadena coincidente

      • * → Indica que el patrón coincide con cero, uno o más caracteres individuales en la cadena coincidente
        • tar xvf archivos.tar --wildcards '*.php' → Extrae todos los archivos que empiezan por .php
        • tar cvf archivos.tar i* → Todos los archivos que empiecen por i : i , ii , install , insert , intro ,
      • [] → Introduce la clase de caracteres que es una lista de caracteres aceptables para el siguiente carácter de la cadena correspondiente
        • Ejemplo : ‘[abcde]’ → Coincidiría con cualquiera de las primeras cinco letras del alfabeto

Opciones del comando para la compresión

  • t - Lista el contenido de un archivo comprimido

  • z - Comprimir con el compresor gzip
    • Genera la extensión .gz
  • j - Comprimir con el compresor bzip2
    • Genera las extensiones .bz2 , .tar.bz2 , .tbz2, .tb2
  • --exclude - Se usa para excluir archivos en el proceso de compresión
Ejemplo - Opciones de compresión de ficheros
  • Usando la opción -c creará un archivo con la extensión .tar que agrupará un conjunto de archivos y directorios el cual le hayamos indicado
    • El archivo esta sin comprimir lo que significa que no reducirá su peso en memoria
    • Se crea un archivo comprimido .tar pero no tiene aplicado ninguna reducción de tamaño mediante compresores de archivos
                          ← ← ← ← ← ← ← ← 
                          ↓             ↑ 
tar cvf /path/to/archive.tar /path/to/directory/  # La salida genera un archivo comprimido pero sin algoritmo de compresión : archive.tar 
  • Crear un archivo .gz usando el algoritmo de compresión gzip
tar zcvf /path/to/archive.tgz /path/to/directory/ # La salida genera el archivo.tgz 
  • Guarda el contenido de /etc y /var dentro del fichero archivo.tar
                 ← ← ← ← ← ←
                 ↓    ↑    ↑ 
tar cfp archivo.tar /etc /var # La salida genera el archivo : foo.tar 
  • Archivar y comprimir todo el directorio /directorio/subdirectorio con el compresor gzip
tar zcfp archivo.tgz /directorio/subdirectorio
  • Archivar y comprimir con el compresor bzip2 el directorio /directorio/subdirectorio
tar jcfp archivo.tgz /directorio/subdirectorio
Ejemplo - Crear archivo comprimido .tar sin usar algoritmo de compresión
  • No tiene limite a la hora de agregar archivos a la compresión

  • Solo recopila todos los archivos dentro de uno solo

tar cvf archivo.tar archivo1.extension archivo2.extension archivo3.extension
Ejemplo - Comprimir todo el contenido de un directorio y enviar el archivo comprimido a un directorio concreto
  • Copia todo lo que hay dentro del directorio Documentos y lo almacena en el directorio media con el nombre del archivo backup.tar o el que le asignemos
                  ← ← ← ← ← ← ← ← ← ← ← ← ← ←
                  ↓                         ↑    
tar cvf /media/backup.tar /home/usuario/Documentos/
Ejemplo - Añadir archivos o directorios a un archivo tar
  • Añadir archivos o directorios al ficheros comprimido con la extensión .tar existente utilizando la opción r (append)
    • Añadimos el archivo xyz.txt y el directorio archivo.php al archivo prueba.tar existente.
           ←←←←←←←←←←    
           ↓        ↓             
tar rvf prueba.tar xyz.txt
           ←←←←←←←←←←←←←    
           ↓           ↓             
tar rvf prueba.tar archivo.php
Ejemplo - Concantenar archivos
tar --concatenate --file=prueba.tar archivo.tar
Ejemplo - Listar contenido del archivo comprimido (resumen)
tar tf archivo.tar
Ejemplo - Listar contenido del archivo comprimido tar (detalladamente)
tar tvf archivo.tar
Ejemplo - Comparar archivo comprimido con los archivos que lo componen
  • Verificar/Comparar un archivo .tar con los archivos que se han agregado usamos la opción –compare
tar v --compare --file=archivo.tar -C /directorio/subdirectorio-archivos-sin-comprimir/
Ejemplo - Hacer copia de seguridad de los archivos y comprimirlos
  • Hacemos una compresión de los archivos y verificamos su contenido
tar cvpWlf /directorio-queremos-comprimir/ /directorio-donde-almacenar-contenido/
Ejemplo - Comprobar el tamaño del archivo fichero

‘.tar ‘ , ‘ tar.gz ‘ y ‘ tar.bz2 ‘

tar czf - archivo.tar | wc -c # 12820480
tar czf - archivo.tar.gz | wc -c # 112640
tar czf - archivo.tar.bz2 | wc -c # 20480

Untar - Descomprimir archivos tar

  • Descomprimir/Extraer un archivo .tar solamente emitimos el siguiente comando usando la opción x
tar xvf archivo.tar
  • Descomprimir/Extraer todo el contenido del archivo.tar
tar xfp archivo.tar 
  • Descomprimir/Extraer archivos con el algoritmo gzip
tar xvf archivo.tar.gz
  • Descomprimir/Extraer archivos con el algoritmo bzip2
tar xvf archivo.tar.bz2
  • Descomprimir/Extraer el fichero anterior
tar zxfp archivo.tgz 
  • Descomprimir/Extraer en un directorio especifico indicado mediante la opción -C
tar xvf archivo.tar -C /home/usuario/videos/
  • Descomprimir/Extraer un archivo especifico desde un archivo tar en Linux
    • --extract → Opción para descomprimir un archivo
    • --file= → Opción para especificar el archivo especifico
tar xvf --file=script.sh.tar script.sh
# Otra forma más precisa
tar --extract --file=script.sh.tar script.sh
  • Descomprimir/Extraer un archivo especifico desde un archivo tar.gz en Linux
    • --extract → Opción para descomprimir un archivo
    • --file= → Opción para especificar el archivo especifico
tar zxvf archivo.tar.gz archivo.xml
# Otra forma más precisa
tar --extract --file=archivo.tar.gz archivo.xml
  • Descomprimir/Extraer un archivo especifico desde un archivo tar.bz2 en Linux
tar jxvf archivo.tar.bz2 home/php/index.php
# Otra forma más precisa
tar --extract --file=archivo.tar.bz2 /home/php/index.php
/home/php/index.php # Salida
  • Descomprimir/Extraer varios archivos de tar, tar.gz y tar.bz2
    • Para extraer múltiples ficheros del archivo tar, tar.gz y tar.bz2
      • Ejemplo : el siguiente comando extraerá el “archivo 1” y el “archivo 2” del archivo.
tar xvf archivo.tar "archivo1" "archivo2"
tar zxvf archivo.tar.gz "archivo1" "archivo2" # Algoritmo de compresión gzip 
tar jxvf archivo.tar.bz2 "archivo1" "archivo2" # Algoritmo de compresión bzip2

Deja un comentario