BorgBackup: respaldos con deduplicación y cifrado
Dedicated & VPS
23

Qué es BorgBackup

Borg es una herramienta de respaldo en línea de comandos pensada para servidores. Su diferencial no es solo copiar archivos: divide los datos en bloques, los identifica por hash y solo almacena los bloques únicos. Eso se llama deduplicación y hace que los respaldos incrementales ocupen una fracción de lo esperado.

Por qué la deduplicación importa

Imagina un VPS con 40 GB de datos que cambian poco de un día a otro. Un backup tradicional de 30 días te pediría entre 100 y 200 GB de espacio. Con Borg, los primeros 40 GB se guardan tal cual y los días siguientes solo añaden los bloques nuevos: en la práctica el repositorio puede mantenerse en 50 a 70 GB para todo un mes. Eso ahorra espacio y abarata el almacenamiento offsite.

Cifrado y compresión

Borg cifra los bloques de extremo a extremo con una clave que vive en el cliente. El servidor remoto que aloja el repositorio no puede leer los archivos aunque los tenga. Además aplica compresión (lz4, zstd, lzma) antes de escribir, lo que reduce aún más el tamaño.

Instalación básica

En Debian y Ubuntu modernos alcanza con:

apt update && apt install borgbackup

También existen binarios estáticos oficiales para distribuciones donde el paquete esté viejo.

Crear el repositorio

El repositorio es el destino donde vivirán los archives. Puede estar en un disco local, un NAS o un servidor accesible por SSH:

borg init --encryption=repokey-blake2 user@backup.ejemplo.com:/srv/borg/web01

Borg te pedirá una contraseña para proteger la clave. Guárdala en un gestor seguro: sin ella no podrás restaurar.

Primera copia y copias siguientes

borg create --stats --compression zstd,6 \
  user@backup.ejemplo.com:/srv/borg/web01::\{hostname\}-\{now:%Y-%m-%d\} \
  /etc /home /var/www /var/lib/mysql-dumps

La primera ejecución tarda porque sube todo. Las siguientes son muy rápidas porque solo transfieren bloques nuevos.

Listar y restaurar

Para ver los archives disponibles:

borg list user@backup.ejemplo.com:/srv/borg/web01

Para ver qué hay dentro de uno:

borg list user@backup.ejemplo.com:/srv/borg/web01::web01-2026-04-10

Para restaurar un archivo o carpeta concreta:

borg extract user@backup.ejemplo.com:/srv/borg/web01::web01-2026-04-10 var/www/html/index.php

Incluso puedes montar un archive como sistema de archivos y navegarlo con borg mount.

Pruning automático

Borg trae una política de retención integrada para no llenar el disco:

borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 12 \
  user@backup.ejemplo.com:/srv/borg/web01

Esa línea guarda 7 diarios, 4 semanales y 12 mensuales, descartando el resto. Se recomienda ejecutarla en el mismo cron que borg create.

Buenas prácticas

  • Ejecuta borg check de forma periódica para verificar la integridad del repositorio.
  • No borres nunca archives manualmente desde el sistema de archivos: usa borg delete.
  • Exporta la clave (borg key export) y guárdala fuera del servidor.
  • Limita el usuario SSH remoto con borg serve --restrict-to-repository para que no pueda salir del directorio del repositorio.