Por qué respaldar su VPS con BorgBackup
Borg lleva la deduplicación a un nivel notable: divide los ficheros en chunks de fronteras variables, lo que permite detectar datos idénticos aunque estén desplazados dentro de un fichero. El resultado es que semanas de archivos diarios caben en una fracción del espacio de una sola copia completa. A ello se suman una compresión configurable (lz4, zstd, zlib), un cifrado autenticado (el repositorio resiste la falsificación, no solo la lectura) y un formato de repositorio robusto. Autoalojar Borg en el VPS, enviando los archivos a un repositorio remoto (idealmente un servicio compatible con BorgBackup), le da copias de seguridad económicas y totalmente bajo su control criptográfico, sin confiar sus claves a un tercero.
Los puntos fuertes de BorgBackup
- Deduplicación por chunks de fronteras variables, tremendamente eficaz con datos que evolucionan poco.
- Cifrado autenticado: confidencialidad y garantía de integridad frente a cualquier alteración del repositorio.
- Compresión a elegir (zstd, lz4, zlib) para equilibrar tamaño y velocidad.
- Archivos con nombre y marca de tiempo, montables por FUSE para recorrer una copia como una carpeta.
- Política de retención granular mediante
borg prune(diarios, semanales, mensuales, anuales). - Transferencia eficiente hacia un repositorio remoto por SSH, enviando solo los chunks nuevos.
Requisitos previos para este despliegue
Borg es ligero en CPU, pero su deduplicación mantiene un índice en memoria: prevea un VPS con 1 a 2 GB de RAM, ya que el consumo crece con el número de chunks del repositorio. Instale el paquete borgbackup (y borgmatic para orquestar de forma más sencilla). Del lado del destino, necesita o bien un servicio de almacenamiento compatible con Borg, o bien un segundo servidor accesible por SSH donde Borg también esté instalado. Un par de claves SSH para la transferencia no interactiva y un lugar fuera del VPS para conservar la passphrase del repositorio completan los requisitos. Borgmatic, controlado por un fichero YAML, simplifica notablemente la automatización.
Configurar copias de seguridad Borg con borgmatic
Instalar Borg y borgmatic
En el VPS, instale los dos paquetes (
apt install borgbackup borgmatic). Compruebe la versión conborg --version. Borgmatic añade una capa de configuración declarativa por encima de los comandos Borg en bruto.Inicializar el repositorio cifrado remoto
Con una clave SSH ya desplegada, inicialice el repositorio:
borg init --encryption=repokey-blake2 ssh://user@backup-host/./borg-repo. El modorepokeyalmacena la clave cifrada en el repositorio; conserve imperativamente la passphrase en un lugar seguro y fuera del VPS.Redactar el fichero de configuración de borgmatic
En
/etc/borgmatic/config.yaml, declare lossource_directories(por ejemplo/etc,/var/www,/opt), elrepositoriesremoto, la passphrase mediante una variable de entorno y la compresiónzstd. Borgmatic encadenará create, prune y check en una sola llamada.Añadir hooks de base de datos
Borgmatic puede volcar sus bases antes de la copia. Declare un hook
postgresql_databasesomariadb_databases: el dump se genera, se incluye en el archivo y luego se limpia automáticamente, lo que garantiza una copia coherente de la base.Definir la retención y lanzar una ejecución
Configure
keep_daily: 7,keep_weekly: 4,keep_monthly: 6en la sección retention y luego ejecuteborgmatic --verbosity 1. Borg solo transfiere los chunks inéditos, lo que hace que las ejecuciones siguientes sean muy rápidas.Programar y comprobar las restauraciones
Active el timer systemd que proporciona borgmatic (
systemctl enable --now borgmatic.timer) para una ejecución diaria. Pruebe una restauración conborgmatic extract --archive latesthacia una carpeta de prueba, y deje queborgmatic checkvalide la integridad con regularidad.
BorgBackup o Restic: ¿cuál elegir?
Desplace la tabla
| Criterio | BorgBackup | Restic |
|---|---|---|
| Modelo de almacenamiento | Repositorio de una sola máquina, acceso SSH | Multiorigen hacia un mismo repositorio de objetos |
| Backends nativos | Local y SSH (requiere servidor Borg) | S3, B2, Azure, SFTP, rest-server |
| Deduplicación | Chunks variables, muy densa | Chunks variables, eficaz |
| Compresión | Configurable (zstd, lz4, zlib) | Limitada (históricamente sin compresión) |
| Cifrado | Autenticado (antifalsificación) | AES-256 del lado del cliente |
| Concurrencia de acceso | Un solo cliente a la vez en el repositorio | Varios clientes en paralelo |
| Almacenamiento de objetos (S3) | Indirecto (mediante una capa de terceros) | Nativo y directo |
| Herramienta de orquestación | borgmatic (YAML) | Scripts o wrappers de terceros |
El talón de Aquiles de Borg es que solo admite un cliente a la vez en un repositorio y que puede dejar un bloqueo residual si una ejecución se interrumpe: vigile y automatice la liberación de los bloqueos atascados con borg break-lock en su script, pero únicamente después de comprobar que ningún otro proceso está escribiendo. Para protegerse de un compromiso del VPS, cree en el servidor de copias una clave SSH restringida con command="borg serve --append-only": el atacante solo podrá añadir archivos, nunca destruir el historial existente.