Saltar al contenido

2.6 Embalaje, Compresión y Respaldos (Archiving)

¡Prepárate!

  • Entenderás la diferencia crítica entre archivar (empaquetar) y comprimir. - Aprenderás la sintaxis histórica (y moderna) del sagrado comando tar. - Conocerás los diferentes algoritmos de compresión (gzip, bzip2, xz). - Explorarás el rey de las copias de seguridad de red incrementales: rsync.

En Linux, a diferencia de Windows o Mac donde un archivo “zip” hace ambas cosas a la vez de forma invisible, el empaquetado y la compresión son dos operaciones mental y técnicamente distintas que se pueden apilar.

  • Archivar (Empaquetar): Tomar 50 archivos distintos y juntarlos en un solo bloque sólido (como meterlos en una caja de cartón). El tamaño resultante es la suma exacta de los 50 archivos.
  • Comprimir: Tomar ese bloque sólido y aplicarle un algoritmo matemático para que ocupe menos megabytes en el disco duro.

tar proviene del inglés Tape ARchive porque se inventó para respaldar datos en cintas magnéticas físicas. Es el responsable de “empaquetar”. La extensión estándar que genera es un .tar (conocido coloquialmente como un tarball de datos).

Para dominar tar, debes recordar sus banderas principales:

  • c (Create): Para crear un archivo nuevo.
  • x (eXtract): Para extraer un archivo existente.
  • t (Table of contents): Para ver qué hay dentro de un archivo sin extraerlo.
  • f (File): Le indica a tar que el siguiente texto que escribas es el nombre del archivo. Debe ser siempre la última bandera.
  • v (Verbose): Mueve rápido por la pantalla los archivos que está procesando.

Ejemplos:

ventana terminal
# Empaquetar dos carpetas enteras en un solo archivo "backup.tar"
tar -cvf backup.tar /var/log/ /etc/ssh/
# Extraer el contenido de ese "backup.tar" en mi carpeta actual
tar -xvf backup.tar

Ya sabemos empaquetar. Ahora queremos que ese paquete ocupe el mínimo espacio posible en disco. tar modernos permiten inyectar algoritmos de compresión directamente sobre la marcha. Las extensiones de los archivos cambiarán para reflejar esta doble naturaleza.

  • gzip (-z): La compresión estándar. Rápida y eficiente. Crea archivos .tar.gz o la abreviación .tgz.

    ventana terminal
    # El comando más famoso de Linux: "tar equis zeta ube efe"
    # (Extraer tar.gz)
    tar -xzvf archivo.tar.gz
    # Comprimir una carpeta usando gzip
    tar -czvf archivo.tar.gz /mi_carpeta_pesada/
  • bzip2 (-j): Mucho más lento que gzip, pero comprime algo más de tamaño. Crea .tar.bz2.

    ventana terminal
    tar -cjvf archivo.tar.bz2 /carpeta/
  • xz (-J): Extremadamente lento al comprimir, extremadamente rápido al descomprimir. Es el algoritmo moderno que más tamaño salva a costa de exprimir tu CPU. Crea .tar.xz. (El Kernel de Linux se distribuye oficialmente en este formato).


Mientras que tar es ideal para preparar un archivo y enviarlo por correo o guardarlo en frío, al hacer copias de seguridad de terabytes de servidores en producción de disco a disco, tar repetiría todo desde cero cada día.

rsync (Remote Sync) resuelve esto. Analiza matemáticamente el origen y el destino, confirmando qué ha cambiado a nivel de byte. Si de un archivo de 10GB solo cambió una línea de texto de 1KB, rsync transmite solo ese kilobyte de diferencia a través de la red.

ventana terminal
# Sincroniza la carpeta local hacia una carpeta de backup
# -a (Archive): Copia recursivamente, preservando dueños, permisos y fechas (Vital)
# -v (Verbose): Muestra progreso
rsync -av /mis_datos/ /media/disco_backup/mis_datos_respaldo/
# Enviar una copia de seguridad directa a un servidor remoto a través del puerto seguro SSH
# -z (Zip): Comprime los datos temporalmente durante la transferencia de red
rsync -avz /mis_datos/ usuario@192.168.1.50:/home/usuario/backup/

  1. Trabajas en el servidor de base de datos. Quieres descargar el repositorio principal del proyecto, el cual se llama ventas01.tar.gz. ¿Cuál es el comando y los modificadores (banderas) correctas para desencriptar (revertir la compresión Gzip) y desempaquetar el Tape Archive simultáneamente en tu directorio actual?

  2. Analizando las extensiones de distintos instaladores en Linux, te encuentras con kernel.tar.xz, kernel.tar.bz2 y kernel.tar.gz. Te han pedido que descargues para el servidor IoT la versión que ocupará absolutamente el MENOR espacio en megabytes de tráfico al descargarse, sin importar si demora más en procesarse en tu terminal. ¿Cuál técnica de compresión cumple esto?

  3. Quieres hacer una copia de seguridad de la carpeta /etc hacia un disco externo en /mnt/respaldo. Sin embargo, es vital que los archivos que copies no pierdan accidentalmente la propiedad estricta del usuario root y sigan conservando sus fechas de modificación reales. ¿Qué comando te asegura eso de serie?