TL;DR — Resumen Rápido

Guía BorgBackup: copias deduplicadas, cifradas en Linux. Instalación, systemd, repositorios SSH remotos, Borgmatic y recuperación ante desastres.

BorgBackup (borg) es una herramienta de copia de seguridad deduplicada, comprimida y cifrada para Linux que puede reducir el almacenamiento entre el 50 y el 90% respecto a las copias completas tradicionales. Esta guía abarca desde la instalación hasta la automatización con Borgmatic, copias remotas por SSH y pruebas de recuperación ante desastres.

Requisitos Previos

  • Sistema Linux (Ubuntu 22.04+, Debian 12+, RHEL 9+ o Fedora 38+).
  • Acceso root o sudo en la máquina a respaldar.
  • Destino de copia: disco local, unidad externa o servidor remoto con acceso SSH.
  • Para copias remotas: BorgBackup instalado tanto en el cliente como en el servidor de copias.

Por Qué BorgBackup

Las herramientas de copia tradicionales copian ficheros sin cambios. BorgBackup usa chunking definido por contenido — divide cada fichero en bloques de longitud variable, calcula el hash de cada bloque y almacena únicamente los que nunca se han visto antes:

  • Deduplicación — 10 copias diarias de 100 GB pueden usar solo ~110 GB en total.
  • Cifrado AES-256-CTR — Los datos se cifran antes de salir de la máquina origen.
  • MACs autenticados — BLAKE2b o SHA-256 garantizan que las copias no han sido manipuladas.
  • Opciones de compresión múltipleslz4 (rápido), zstd (equilibrado), lzma (mínimo tamaño).
  • Transporte SSH — Copia a cualquier servidor remoto sin daemon especial.
  • Montaje FUSE — Navega los archivos de copia como un sistema de ficheros normal.

Instalación

Debian / Ubuntu

sudo apt update && sudo apt install borgbackup -y

Fedora / RHEL / Rocky Linux

sudo dnf install borgbackup -y

Última versión con pip

pip install --user borgbackup
borg --version

Inicializar un Repositorio

Un repositorio BorgBackup es el contenedor de almacenamiento que aloja todos tus archivos de copia.

Repositorio local

borg init --encryption=repokey-blake2 /backup/borg-repo

Repositorio remoto por SSH

borg init --encryption=repokey-blake2 borg@servidorcopia:/backup/borg-repo

Exportar la clave de repositorio inmediatamente

borg key export /backup/borg-repo ~/borg-repo-key.txt

Guarda borg-repo-key.txt y la contraseña en una ubicación separada del repositorio de copias — un gestor de contraseñas, USB offline o copia impresa. Perder ambos equivale a pérdida permanente de datos.

Comparativa de modos de cifrado

ModoUbicación de claveCaso de uso
repokey-blake2Dentro del repositorioEl más sencillo; recomendado para la mayoría
keyfile-blake2Solo en el clienteMáxima seguridad; la clave nunca sale del cliente
noneN/ASolo redes internas; sin cifrado

Crear Copias de Seguridad

Archivo básico

export BORG_PASSPHRASE='tu-contraseña-fuerte'
export BORG_REPO='/backup/borg-repo'

borg create \
  --stats \
  --progress \
  --compression lz4 \
  "$BORG_REPO::{hostname}-{now:%Y-%m-%dT%H:%M}" \
  /etc /home /var/www /opt \
  --exclude '*.log' \
  --exclude '*.tmp' \
  --exclude '/home/*/.cache' \
  --exclude '/home/*/.local/share/Trash'

Opciones de compresión

OpciónVelocidadRatioIdeal para
lz4Más rápidaModeradoCopias automáticas diarias
zstd,3RápidaBuenoUso general
zstd,11ModeradaExcelenteEntornos con poco almacenamiento
lzma,6LentaMáximoArchivado; acceso poco frecuente

Listar y Montar Archivos

Listar todos los archivos del repositorio

borg list /backup/borg-repo

Montar un archivo para navegar con FUSE

mkdir -p /mnt/borg-restaurar
borg mount /backup/borg-repo::webserver-2026-03-22T03:00 /mnt/borg-restaurar

# Navega y copia ficheros normalmente
ls /mnt/borg-restaurar/home/usuario/

# Desmonta al terminar
borg umount /mnt/borg-restaurar

Extraer Ficheros

Restauración de rutas específicas

cd /tmp/restaurar
borg extract /backup/borg-repo::webserver-2026-03-22T03:00 \
  home/usuario/documentos \
  etc/nginx

Simulacro (listar sin extraer)

borg extract --dry-run --list /backup/borg-repo::webserver-2026-03-22T03:00

Purgar Archivos Antiguos

borg prune elimina archivos que ya no cumplen la política de retención. Ejecútalo después de cada copia.

borg prune \
  --keep-daily=7 \
  --keep-weekly=4 \
  --keep-monthly=6 \
  --keep-yearly=2 \
  --list \
  /backup/borg-repo

Después de purgar, ejecuta compactación para liberar espacio en disco:

borg compact /backup/borg-repo

Automatización con Temporizador systemd

/etc/systemd/system/borg-backup.service

[Unit]
Description=Copia de seguridad diaria BorgBackup
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
User=root
Environment=BORG_PASSPHRASE=tu-contraseña-fuerte
Environment=BORG_REPO=/backup/borg-repo
ExecStart=/usr/bin/borg create --stats --compression lz4 \
  $BORG_REPO::{hostname}-{now:%%Y-%%m-%%dT%%H:%%M} \
  /etc /home /var /opt \
  --exclude '*.log' --exclude '/home/*/.cache'
ExecStartPost=/usr/bin/borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 $BORG_REPO
ExecStartPost=/usr/bin/borg compact $BORG_REPO

/etc/systemd/system/borg-backup.timer

[Unit]
Description=Temporizador diario BorgBackup

[Timer]
OnCalendar=daily
RandomizedDelaySec=30min
Persistent=true

[Install]
WantedBy=timers.target

Activar y arrancar

systemctl daemon-reload
systemctl enable --now borg-backup.timer
journalctl -u borg-backup.service --since today

Copias Remotas por SSH

Restringir la clave SSH en el servidor de copias

En ~/.ssh/authorized_keys del servidor de copias, antepón un comando forzado para que la clave solo pueda usarse para borg:

command="borg serve --restrict-to-path /backup/borg-repo",restrict ssh-rsa AAAA...tuclave...

La opción restrict deshabilita reenvío de puertos, de agente y X11.

Configuración del cliente

export BORG_REPO='borg@servidorcopia:/backup/borg-repo'
export BORG_RSH='ssh -i /root/.ssh/borg_ed25519 -o StrictHostKeyChecking=yes'

borg create "$BORG_REPO::{hostname}-{now:%Y-%m-%dT%H:%M}" /etc /home

Borgmatic: Envoltorio de Alto Nivel

Instalación

pip install borgmatic

/etc/borgmatic/config.yaml

repositories:
  - path: /backup/borg-repo
    label: local

source_directories:
  - /etc
  - /home
  - /var/www

exclude_patterns:
  - '*.log'
  - /home/*/.cache

encryption_passphrase: "tu-contraseña-fuerte"
compression: lz4
keep_daily: 7
keep_weekly: 4
keep_monthly: 6

hooks:
  on_error:
    - echo "Copia fallida en $(date)" | mail -s "Error Borg en $(hostname)" admin@ejemplo.com
  healthchecks:
    ping_url: https://hc-ping.com/tu-uuid

Ejecutar borgmatic manualmente

borgmatic --verbosity 1

Procedimiento de Recuperación ante Desastres

  1. Instala BorgBackup en el sistema de reemplazo.
  2. Transfiere la clave del repositorio exportada al nuevo sistema.
  3. Define las credenciales:
    export BORG_PASSPHRASE='tu-contraseña'
    export BORG_REPO='borg@servidorcopia:/backup/borg-repo'
  4. Lista los archivos disponibles:
    borg list "$BORG_REPO"
  5. Extrae el archivo más reciente:
    cd /
    borg extract "$BORG_REPO::webserver-2026-03-22T03:00"
  6. Verifica la restauración antes de redirigir el tráfico de producción.

Realiza pruebas de restauración de forma regular (mínimo trimestralmente). Una copia que nunca has probado no es una copia fiable.


Comparativa: Borg vs Restic vs Duplicati vs rsync vs Timeshift

CaracterísticaBorgBackupResticDuplicatirsyncTimeshift
DeduplicaciónNoNoSí (hard links)
CifradoAES-256AES-256AES-256No (nativo)No
Compresiónlz4/zstd/lzmazstdDeflateNoNo
Backends remotosSSH, BorgBaseS3, B2, SFTP, muchosS3, FTP, WebDAVSSHSolo local
Interfaz gráficaNoVorta (tercero)Sí (web)No
Ideal paraServidores, DevOpsFlexibilidad multicloudUsuarios desktopEspejado simpleRestauración desktop

Resumen

  • La deduplicación almacena solo bloques únicos — 10 copias diarias de 100 GB usan ~110 GB.
  • Exporta siempre la clave del repositorio y guárdala separada de las copias.
  • Usa cifrado repokey-blake2 para protección AES-256 autenticada.
  • Purga con borg prune y libera espacio con borg compact tras cada ejecución.
  • Automatiza con temporizador systemd para programación fiable con registro en journald.
  • Restringe las claves SSH con command="borg serve ..." en authorized_keys.
  • Usa Borgmatic para sustituir scripts de shell por configuración YAML mantenible.
  • Prueba restauraciones trimestralmente — una copia nunca probada no es una copia.

Artículos Relacionados