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últiples —
lz4(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
| Modo | Ubicación de clave | Caso de uso |
|---|---|---|
repokey-blake2 | Dentro del repositorio | El más sencillo; recomendado para la mayoría |
keyfile-blake2 | Solo en el cliente | Máxima seguridad; la clave nunca sale del cliente |
none | N/A | Solo 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ón | Velocidad | Ratio | Ideal para |
|---|---|---|---|
lz4 | Más rápida | Moderado | Copias automáticas diarias |
zstd,3 | Rápida | Bueno | Uso general |
zstd,11 | Moderada | Excelente | Entornos con poco almacenamiento |
lzma,6 | Lenta | Máximo | Archivado; 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
- Instala BorgBackup en el sistema de reemplazo.
- Transfiere la clave del repositorio exportada al nuevo sistema.
- Define las credenciales:
export BORG_PASSPHRASE='tu-contraseña' export BORG_REPO='borg@servidorcopia:/backup/borg-repo' - Lista los archivos disponibles:
borg list "$BORG_REPO" - Extrae el archivo más reciente:
cd / borg extract "$BORG_REPO::webserver-2026-03-22T03:00" - 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ística | BorgBackup | Restic | Duplicati | rsync | Timeshift |
|---|---|---|---|---|---|
| Deduplicación | Sí | Sí | No | No | Sí (hard links) |
| Cifrado | AES-256 | AES-256 | AES-256 | No (nativo) | No |
| Compresión | lz4/zstd/lzma | zstd | Deflate | No | No |
| Backends remotos | SSH, BorgBase | S3, B2, SFTP, muchos | S3, FTP, WebDAV | SSH | Solo local |
| Interfaz gráfica | No | Vorta (tercero) | Sí (web) | No | Sí |
| Ideal para | Servidores, DevOps | Flexibilidad multicloud | Usuarios desktop | Espejado simple | Restauració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 pruney libera espacio conborg compacttras cada ejecución. - Automatiza con temporizador systemd para programación fiable con registro en journald.
- Restringe las claves SSH con
command="borg serve ..."enauthorized_keys. - Usa Borgmatic para sustituir scripts de shell por configuración YAML mantenible.
- Prueba restauraciones trimestralmente — una copia nunca probada no es una copia.