bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Configuración de BorgBackup en un VPS

calendar_month Aug 21, 2026 schedule 18 min de lectura visibility 20 vistas
Настройка BorgBackup на VPS для шифрованного и дедуплицированного бэкапирования
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Configuración de BorgBackup en un VPS para copias de seguridad cifradas y deduplicadas

TL;DR

En esta guía detallada, configuraremos paso a paso el sistema de copia de seguridad BorgBackup en su servidor VPS. Aprenderá cómo crear copias de seguridad seguras, cifradas y deduplicadas de datos importantes, así como automatizar el proceso y garantizar su almacenamiento fiable. Esta solución es ideal para proteger configuraciones, bases de datos, archivos de usuario y otros datos críticos con un consumo mínimo de espacio en disco y ancho de banda.

  • Configuración de BorgBackup para crear copias de seguridad cifradas y deduplicadas.
  • Uso de SSH para un acceso seguro al repositorio remoto de Borg.
  • Automatización del proceso de copia de seguridad mediante scripts cron.
  • Implementación de políticas de retención de copias de seguridad (pruning) para ahorrar espacio.
  • Verificación de la integridad y recuperación de datos de las copias de seguridad.
  • Garantizar la seguridad del servidor y los datos en todas las etapas.

¿Qué configuramos y por qué?

Esquema: ¿Qué configuramos y por qué?
Esquema: ¿Qué configuramos y por qué?

La configuración de un sistema de copia de seguridad fiable es la piedra angular de cualquier infraestructura, ya sea un pequeño proyecto personal o un complejo servicio SaaS. En este tutorial, nos centraremos en BorgBackup, una potente herramienta para crear copias de seguridad cifradas y deduplicadas. Permite almacenar eficazmente múltiples versiones de datos, ocupando significativamente menos espacio que los métodos tradicionales, gracias a una inteligente deduplicación a nivel de bloques.

Al final, obtendrá un sistema completamente automatizado que crea regularmente copias de seguridad de sus datos (archivos, bases de datos, configuraciones), los almacena de forma cifrada y permite una fácil recuperación en caso de situaciones imprevistas. Esto es fundamental para protegerse contra la pérdida de datos debido a errores, fallos de hardware, ciberataques o eliminación accidental.

Existen alternativas, como los servicios en la nube (por ejemplo, AWS Backup, Google Cloud Backup) o soluciones gestionadas por proveedores de hosting. Sin embargo, una solución autoalojada en un VPS le da control total sobre los datos, su cifrado, ubicación de almacenamiento y costo. Para muchos desarrolladores, startups y entusiastas de las criptomonedas que valoran la privacidad y el control, esta es la opción preferida. No depende de los planes de precios de servicios de terceros, puede configurar cualquier política de retención y estar seguro de la seguridad de sus datos, ya que las claves de cifrado están solo en su poder.

¿Qué configuración de VPS se necesita para esta tarea?

Esquema: ¿Qué configuración de VPS se necesita para esta tarea?
Esquema: ¿Qué configuración de VPS se necesita para esta tarea?

Los requisitos de VPS para BorgBackup son relativamente bajos si se utiliza como fuente de copias de seguridad (cliente) o como almacenamiento para pequeños volúmenes de datos. Sin embargo, si planea almacenar volúmenes significativos de datos o usarlo como repositorio central para varios servidores, los requisitos aumentan.

Requisitos mínimos para un cliente BorgBackup (servidor desde el que se realizan las copias de seguridad):

  • CPU: 1 núcleo (cualquier procesador x86-64 moderno). El proceso de creación de copias de seguridad puede ser intensivo en CPU debido al cifrado y la deduplicación, pero suelen ser picos de corta duración.
  • RAM: 1 GB. BorgBackup puede consumir hasta varios cientos de megabytes de RAM durante las operaciones de creación y verificación de copias de seguridad, especialmente si se procesan archivos o repositorios muy grandes.
  • Disco: 20-40 GB NVMe/SSD. Suficiente para el sistema operativo, BorgBackup y archivos temporales. Los datos principales se almacenarán en el repositorio remoto.
  • Red: 100 Mbps. Para la transferencia de datos al repositorio remoto. La velocidad puede ser importante si se realiza una copia de seguridad de un gran volumen de datos.

Requisitos mínimos para un servidor de repositorio BorgBackup (servidor donde se almacenan las copias de seguridad):

  • CPU: 1-2 núcleos. Para procesar solicitudes de clientes, deduplicación y cifrado/descifrado.
  • RAM: 2-4 GB. Borg, al trabajar con el repositorio, utiliza activamente la memoria RAM para el almacenamiento en caché de índices. Cuanto mayor sea el repositorio, más RAM puede ser necesaria. Para repositorios de varios terabytes, pueden requerirse 8 GB o más.
  • Disco: De 100 GB a varios TB NVMe/SSD/HDD. El volumen del disco depende completamente del volumen de datos que planee respaldar y de su período de retención. Para un rendimiento óptimo, el SSD es preferible para los índices de Borg, pero los datos en sí pueden almacenarse en HDD. Para la mayoría de las tareas relacionadas con la copia de seguridad de servidores web o pequeñas bases de datos, 200-500 GB serán suficientes.
  • Red: 100 Mbps - 1 Gbps. Un alto ancho de banda de red es crítico para la creación y restauración rápidas de copias de seguridad, especialmente si tiene muchos clientes o grandes volúmenes de datos.

Para una tarea típica de copia de seguridad cifrada y deduplicada de uno o dos VPS con un volumen total de datos de hasta 500 GB, puede optar por un VPS con 2 vCPU, 4 GB de RAM, 200 GB NVMe SSD y un canal de 1 Gbps. Esto garantizará un rendimiento suficiente para las operaciones de Borg y un trabajo cómodo con el repositorio.

Cuándo se necesita un servidor dedicado en lugar de un VPS: Si planea almacenar decenas de terabytes de datos, atender a decenas de clientes, o necesita el máximo rendimiento del subsistema de disco (por ejemplo, para realizar copias de seguridad de bases de datos muy grandes con E/S intensiva), entonces es mejor considerar un servidor dedicado. Ofrece recursos garantizados (CPU, RAM, disco) sin la "vecindad" con otros usuarios, lo cual es crítico para un rendimiento estable bajo altas cargas.

Ubicación: en qué influye: La ubicación del servidor VPS para las copias de seguridad es importante. Es deseable que se encuentre en un centro de datos o incluso en una región diferente en comparación con el servidor principal del que realiza la copia de seguridad. Esto lo protegerá de fallos regionales (por ejemplo, un corte de energía en un centro de datos). Además, debe tener en cuenta la latencia de red (ping) entre sus servidores: cuanto menor sea, más rápidas serán las operaciones de copia de seguridad.

Preparación del servidor

Esquema: Preparación del servidor
Esquema: Preparación del servidor

Antes de instalar BorgBackup, es necesario realizar una preparación básica del servidor. Asumimos que está utilizando una distribución limpia de Ubuntu Server 24.04 LTS (versión actual para 2026). Todos los comandos se ejecutan como usuario root o usando sudo.

1. Actualización del sistema

Primero, actualizaremos todos los paquetes a las versiones más recientes. Esto garantizará la estabilidad y la seguridad.


sudo apt update && sudo apt upgrade -y # Actualización de la lista de paquetes y su actualización
sudo apt autoremove -y # Eliminación de paquetes innecesarios

2. Creación de un nuevo usuario y configuración de claves SSH

Trabajar como root no es seguro. Crearemos un nuevo usuario con derechos limitados y configuraremos el inicio de sesión con claves SSH.


sudo adduser sysadmin # Creación de un nuevo usuario "sysadmin"
sudo usermod -aG sudo sysadmin # Añadir el usuario al grupo sudo
sudo mkdir /home/sysadmin/.ssh # Creación del directorio para claves SSH
sudo chmod 700 /home/sysadmin/.ssh # Establecer permisos correctos
sudo cp ~/.ssh/authorized_keys /home/sysadmin/.ssh/ # Copiar su clave SSH pública
sudo chown -R sysadmin:sysadmin /home/sysadmin/.ssh # Establecer el propietario para el directorio y las claves

Después de esto, salga de root e inicie sesión como el nuevo usuario sysadmin. Después de iniciar sesión correctamente, deshabilite el inicio de sesión con contraseña para root y el inicio de sesión con contraseña en general en /etc/ssh/sshd_config.


sudo nano /etc/ssh/sshd_config # Abrir el archivo de configuración de SSH

Encuentre y modifique las siguientes líneas:


PermitRootLogin no # Prohibir el inicio de sesión para root
PasswordAuthentication no # Prohibir el inicio de sesión con contraseña
ChallengeResponseAuthentication no # Deshabilitar la autenticación por desafío-respuesta
UsePAM no # Deshabilitar PAM para SSH

Guarde los cambios (Ctrl+X, Y, Enter) y reinicie el servicio SSH:


sudo systemctl restart sshd # Reiniciar el servicio SSH

3. Configuración del firewall (UFW)

Activaremos un firewall UFW simple pero efectivo para restringir el acceso a los puertos.


sudo apt install ufw -y # Instalación de UFW
sudo ufw allow OpenSSH # Permitir conexiones SSH
sudo ufw enable # Habilitar el firewall (confirme 'y')
sudo ufw status # Verificar el estado del firewall

Si BorgBackup se va a utilizar para un repositorio remoto, es posible que deba abrir otros puertos, pero por defecto funciona a través de SSH, por lo que OpenSSH será suficiente.

4. Instalación de Fail2ban (protección contra ataques de fuerza bruta)

Fail2ban bloqueará las direcciones IP que intenten adivinar las contraseñas de su servidor.


sudo apt install fail2ban -y # Instalación de Fail2ban
sudo systemctl enable fail2ban # Habilitar el inicio automático del servicio
sudo systemctl start fail2ban # Iniciar el servicio
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Crear una copia local de la configuración
sudo nano /etc/fail2ban/jail.local # Editar la configuración para personalizar

En el archivo jail.local, asegúrese de que la sección [sshd] esté activa (enabled = true) y configure los parámetros a su gusto (por ejemplo, bantime, findtime, maxretry). Por defecto, la configuración es bastante adecuada.


sudo systemctl restart fail2ban # Reiniciar Fail2ban para aplicar los cambios
sudo fail2ban-client status sshd # Verificar el estado de Fail2ban para SSH

Ahora su servidor está listo para la instalación de BorgBackup.

Instalación de software - paso a paso

Diagrama: Instalación de software - paso a paso
Diagrama: Instalación de software - paso a paso

Instalaremos BorgBackup en dos servidores: en el "cliente" (el servidor desde el que se harán las copias de seguridad) y en el "repositorio" (el servidor donde se almacenarán las copias de seguridad). El proceso de instalación es prácticamente idéntico.

1. Instalación de BorgBackup

BorgBackup está disponible en los repositorios oficiales de Ubuntu. Asumimos el uso de la versión BorgBackup 1.2.x o 1.3.x, que será relevante y estable en 2026.


# Instalación de BorgBackup en ambos servidores (cliente y repositorio)
sudo apt update # Actualización de la lista de paquetes
sudo apt install borgbackup -y # Instalación del paquete BorgBackup

Verifiquemos la versión instalada de BorgBackup:


borg --version # Mostrar versión de BorgBackup

La salida esperada será aproximadamente: borg 1.2.x o borg 1.3.x.

2. Creación de un usuario separado para Borg en el servidor de repositorio

Para mejorar la seguridad, en el servidor de repositorio crearemos un usuario especial borguser, que tendrá acceso solo al repositorio de Borg y no podrá ejecutar otros comandos. Este es un paso importante para minimizar los riesgos si un atacante obtiene acceso a las claves SSH del cliente.


# En el servidor de repositorio
sudo adduser borguser --shell /usr/bin/borg-shell # Creación de usuario con shell Borg restringido
sudo mkdir /home/borguser/backups # Creación de directorio para almacenar repositorios
sudo chown borguser:borguser /home/borguser/backups # Establecer propietario para el directorio

El shell borg-shell (o borg-serve) permite al usuario ejecutar solo comandos de Borg, lo que aumenta significativamente la seguridad. Asegúrese de que /usr/bin/borg-shell exista. Si no, BorgBackup generalmente proporciona borg-serve, que se puede usar con la opción SSH command=.

3. Configuración del acceso SSH para Borg en el servidor de repositorio

Necesitaremos configurar las claves SSH para el usuario borguser en el servidor de repositorio. El cliente utilizará su clave privada para la autenticación.


# En el servidor de repositorio, como usuario sysadmin (o root)
sudo mkdir /home/borguser/.ssh # Creación de directorio para claves SSH
sudo chmod 700 /home/borguser/.ssh # Establecer permisos correctos
sudo touch /home/borguser/.ssh/authorized_keys # Creación del archivo authorized_keys
sudo chown borguser:borguser /home/borguser/.ssh/authorized_keys # Establecer propietario
sudo nano /home/borguser/.ssh/authorized_keys # Edición del archivo

En el archivo /home/borguser/.ssh/authorized_keys, añada la clave SSH pública de su cliente. Es importante añadir la opción command= para restringir los comandos que el cliente puede ejecutar. Reemplace su_clave_pública con la clave real del cliente.


command="borg serve --restrict-to-path /home/borguser/backups",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICL... su_clave_pública_del_cliente

Esta línea garantiza que el usuario borguser solo puede ejecutar el comando borg serve y solo dentro del directorio /home/borguser/backups. Las opciones no-port-forwarding y otras aumentan aún más la seguridad.

4. Inicialización del repositorio Borg en el servidor de repositorio

Ahora que todo está listo, se puede inicializar el propio repositorio de Borg. Esto se puede hacer desde el servidor cliente o directamente en el servidor de repositorio, utilizando acceso SSH.


# En el servidor cliente, como usuario sysadmin
# Inicialización del repositorio (reemplace IP/dominio_del_repositorio con el suyo)
borg init --encryption=repokey-blake2 --make-parent-dirs ssh://borguser@su_ip_o_dominio_del_repositorio:22/home/borguser/backups/my_server_repo # Inicialización del repositorio con cifrado repokey-blake2

Se le pedirá que introduzca y confirme la contraseña del repositorio. Esta contraseña es la clave principal de sus copias de seguridad cifradas. ¡Asegúrese de guardarla en un lugar seguro! Sin ella, no podrá restaurar los datos.

  • --encryption=repokey-blake2: Método de cifrado recomendado. La clave de cifrado se almacena en el repositorio, pero está cifrada con una contraseña.
  • --make-parent-dirs: Crea directorios padre si no existen.
  • ssh://borguser@su_ip_o_dominio_del_repositorio:22/home/borguser/backups/my_server_repo: Ruta al repositorio remoto.

Ahora BorgBackup está instalado y el repositorio inicializado. Se puede proceder a la configuración y creación de las primeras copias de seguridad.

Configuración

Diagrama: Configuración
Diagrama: Configuración

La configuración de BorgBackup se reduce principalmente a la creación de scripts para la creación y el mantenimiento de copias de seguridad. Es importante definir correctamente qué respaldar, dónde y cómo gestionar las claves de cifrado. Utilizaremos variables de entorno para almacenar datos sensibles, como la contraseña del repositorio.

1. Configuración de variables de entorno para la contraseña de Borg

Para no tener que introducir la contraseña cada vez que se ejecuta el script, Borg puede tomarla de la variable de entorno BORG_PASSPHRASE. Esto es conveniente para la automatización, pero requiere precaución en su almacenamiento.


# En el servidor cliente
# Creamos un archivo para almacenar variables de entorno
sudo nano /etc/profile.d/borg_env.sh

Pegue el siguiente contenido, reemplazando SU_CONTRASEÑA_DEL_REPOSITORIO con su contraseña real:


#!/bin/bash
export BORG_PASSPHRASE="SU_CONTRASEÑA_DEL_REPOSITORIO"
export BORG_REPO="ssh://borguser@su_ip_o_dominio_del_repositorio:22/home/borguser/backups/my_server_repo"
export BORG_CACHE_DIR="/var/cache/borg" # Directorio para la caché de Borg

Guarde el archivo y hágalo ejecutable:


sudo chmod 600 /etc/profile.d/borg_env.sh # Establecer permisos de acceso
sudo chown root:root /etc/profile.d/borg_env.sh # Establecer propietario
# Para que las variables estén disponibles en la sesión actual (para verificación)
source /etc/profile.d/borg_env.sh

Importante: Asegúrese de que los permisos de acceso a este archivo estén restringidos para que solo root pueda leerlo. Para las tareas cron, las variables de entorno se cargarán automáticamente si el script se ejecuta con los permisos adecuados.

2. Creación de un script para copias de seguridad

Crearemos el script principal que realizará la copia de seguridad. Este script incluirá la creación del archivo, su verificación y la limpieza de copias de seguridad antiguas.


# En el servidor cliente
sudo mkdir -p /opt/backup_scripts # Creación de directorio para scripts
sudo nano /opt/backup_scripts/create_backup.sh

Contenido del script:


#!/bin/bash

# Carga de variables de entorno
source /etc/profile.d/borg_env.sh

# Directorios para la copia de seguridad
BACKUP_DIRS="/etc /var/www /home /var/lib/mysql_dumps" # Ejemplo: /var/lib/mysql_dumps debe crearse previamente con volcados de BD

# Nombre del archivo (con marca de tiempo)
ARCHIVE_NAME="{hostname}-$(date +%Y-%m-%d_%H-%M-%S)"

echo "--- Iniciando copia de seguridad en ${BORG_REPO}::${ARCHIVE_NAME} ---"

# Creación de la copia de seguridad
borg create --stats --progress \
    --compression zstd,5 \
    --exclude '/home//.cache' \
    --exclude '/var/cache/' \
    --exclude '/var/tmp/' \
    --exclude '/var/log/' \
    --exclude '/var/lib/mysql/.sock' \
    --exclude '/var/lib/mysql/mysql.sock' \
    --exclude '.log' \
    "${BORG_REPO}::${ARCHIVE_NAME}" ${BACKUP_DIRS} \
    2>&1 | tee /var/log/borg_backup.log # Redirección de la salida al archivo de registro

EXIT_STATUS=$?

if [ ${EXIT_STATUS} -eq 0 ]; then
    echo "--- Copia de seguridad completada con éxito ---"
elif [ ${EXIT_STATUS} -eq 1 ]; then
    echo "--- Copia de seguridad completada con advertencias (ver registro) ---"
else
    echo "--- Copia de seguridad completada con error (código ${EXIT_STATUS}, ver registro) ---"
fi

echo "--- Iniciando verificación del repositorio ---"
borg check --last 1 "${BORG_REPO}" # Verificación del último archivo

echo "--- Iniciando limpieza de copias de seguridad antiguas ---"
# Política de retención:
# 7 últimas copias de seguridad diarias
# 4 últimas copias de seguridad semanales
# 6 últimas copias de seguridad mensuales
borg prune --list --stats --show-rc \
    --keep-daily 7 --keep-weekly 4 --keep-monthly 6 "${BORG_REPO}" \
    2>&1 | tee -a /var/log/borg_backup.log # Añadir salida al mismo archivo de registro

PRUNE_EXIT_STATUS=$?

if [ ${PRUNE_EXIT_STATUS} -eq 0 ]; then
    echo "--- Limpieza completada con éxito ---"
else
    echo "--- Limpieza completada con error (código ${PRUNE_EXIT_STATUS}, ver registro) ---"
fi

echo "--- Mostrando lista de archivos ---"
borg list "${BORG_REPO}"

echo "--- Script de copia de seguridad finalizado ---"

Haga el script ejecutable:


sudo chmod +x /opt/backup_scripts/create_backup.sh # Hacer el script ejecutable

Explicaciones del script:

  • source /etc/profile.d/borg_env.sh: Carga las variables BORG_PASSPHRASE y BORG_REPO.
  • BACKUP_DIRS: Define qué directorios se respaldarán. Es importante que los volcados de bases de datos (por ejemplo, /var/lib/mysql_dumps) se hayan creado previamente.
  • --compression zstd,5: Utiliza el algoritmo de compresión Zstandard con nivel 5 (un buen equilibrio entre velocidad y grado de compresión).
  • --exclude: Excluye archivos temporales, cachés y registros que no son necesarios en las copias de seguridad.
  • borg check: Verifica la integridad del repositorio. Este es un paso crítico para asegurar la capacidad de recuperación.
  • borg prune: Elimina archivos antiguos según la política definida (7 diarios, 4 semanales, 6 mensuales). Esto ayuda a ahorrar espacio y mantener el orden.

3. Volcados de bases de datos (MySQL/PostgreSQL)

Antes de ejecutar BorgBackup, si utiliza bases de datos, es necesario crear sus volcados. Por ejemplo, para MySQL:


# En el servidor cliente
sudo mkdir -p /var/lib/mysql_dumps # Creación de directorio para volcados
sudo chown mysql:mysql /var/lib/mysql_dumps # Establecer propietario (o su usuario, si el volcado se hará desde él)
# Creación de volcado de todas las bases de datos
sudo mysqldump --all-databases --single-transaction --flush-logs --master-data \
    -u root -p'SU_CONTRASEÑA_MYSQL' > /var/lib/mysql_dumps/all_databases_$(date +%Y%m%d%H%M%S).sql # Volcado de todas las BD
# O para una base de datos específica
# sudo mysqldump -u root -p'SU_CONTRASEÑA_MYSQL' YOUR_DATABASE > /var/lib/mysql_dumps/your_database_$(date +%Y%m%d%H%M%S).sql

Este paso debe añadirse a su script create_backup.sh antes del comando borg create, para que Borg respalde los volcados ya preparados. O cree un script separado para el volcado que se ejecutará antes de la copia de seguridad principal.

4. Verificación de la funcionalidad

Ejecute el script manualmente para asegurarse de que todo funciona:


sudo /opt/backup_scripts/create_backup.sh # Ejecución del script

Verifique la salida en la consola y el archivo de registro /var/log/borg_backup.log en busca de errores. Después de una ejecución exitosa, puede verificar la lista de archivos en el repositorio:


borg list "${BORG_REPO}" # Verificación de la lista de archivos

Debería ver el nombre del archivo que generó.

Copias de seguridad y mantenimiento

Esquema: Copias de seguridad y mantenimiento
Esquema: Copias de seguridad y mantenimiento

Una vez que BorgBackup está configurado y probado, es necesario automatizar el proceso y definir una estrategia de mantenimiento.

1. Qué respaldar

La elección de los datos a respaldar depende de su servicio, pero generalmente incluye:

  • Archivos de configuración: /etc/ (especialmente /etc/nginx/, /etc/apache2/, /etc/php/, /etc/mysql/, /etc/ssh/, /etc/fail2ban/ etc.).
  • Datos de servidores web: /var/www/ o /opt/www/ (archivos de sitios web, estáticos, medios).
  • Directorios de inicio de usuarios: /home/ (si los usuarios almacenan datos importantes allí).
  • Bases de datos: Volcados de bases de datos (MySQL, PostgreSQL, MongoDB, etc.), que deben crearse antes de ejecutar Borg. Por ejemplo, en /var/lib/mysql_dumps/.
  • Aplicaciones: Si instaló algo fuera del gestor de paquetes (por ejemplo, en /opt/), inclúyalo.

Qué no respaldar: Archivos temporales (/tmp, /var/tmp), cachés (/var/cache), registros (/var/log), archivos del sistema operativo (excepto /etc), que son fáciles de restaurar reinstalando paquetes.

2. Automatización de copias de seguridad con cron

Para la ejecución regular del script de copia de seguridad, use cron.


# En el servidor cliente
sudo crontab -e # Apertura del archivo crontab para root (o sudo crontab -e -u sysadmin para el usuario sysadmin)

Agregue la siguiente línea para una copia de seguridad diaria a las 03:00 de la madrugada:


0 3    /opt/backup_scripts/create_backup.sh > /dev/null 2>&1 # Copia de seguridad diaria a las 03:00

Si desea recibir notificaciones por correo electrónico en caso de errores, puede eliminar > /dev/null 2>&1 y configurar un cliente de correo en el servidor.

Importante: Asegúrese de que las variables de entorno, incluyendo BORG_PASSPHRASE, estén disponibles para cron. Si utiliza /etc/profile.d/borg_env.sh, cron podría no cargarlo. Una forma más fiable es definir explícitamente las variables en el propio archivo crontab o al principio del script.

Ejemplo para crontab:


# En crontab -e
BORG_PASSPHRASE="SU_CONTRASEÑA_DEL_REPOSITORIO"
BORG_REPO="ssh://borguser@su_ip_o_dominio_del_repositorio:22/home/borguser/backups/my_server_repo"
BORG_CACHE_DIR="/var/cache/borg"

0 3    /opt/backup_scripts/create_backup.sh > /dev/null 2>&1

3. Dónde almacenar las copias de seguridad (S3 externo / VPS separado)

En nuestro caso, las copias de seguridad se almacenan en un VPS separado que actúa como repositorio Borg. Esto ya es mucho mejor que almacenar las copias de seguridad en el mismo servidor que los datos originales.

Para máxima fiabilidad, se puede considerar:

  • Almacenamiento de objetos compatible con S3 externo: BorgBackup no es compatible directamente con S3, pero puede usar rclone para sincronizar el repositorio Borg con un almacenamiento compatible con S3 después de crear las copias de seguridad. Esto añade otro nivel de redundancia y distribución geográfica.
  • Segundo VPS remoto: Crear un segundo repositorio Borg en otro VPS (posiblemente en otro centro de datos o región) y enviar las copias de seguridad allí también.

Recuerde la regla 3-2-1: 3 copias de datos, en 2 medios diferentes, 1 de las cuales está fuera de la oficina/sitio.

4. Recuperación de datos

La recuperación de datos es el aspecto más importante de cualquier sistema de copia de seguridad. BorgBackup lo hace relativamente sencillo.

Lista de archivos:


borg list "${BORG_REPO}" # Mostrar todos los archivos en el repositorio

Ver contenido del archivo:


borg list "${BORG_REPO}::ARCHIVE_NAME" # Mostrar el contenido de un archivo específico (reemplace ARCHIVE_NAME)

Restaurar archivo completo:


borg extract "${BORG_REPO}::ARCHIVE_NAME" --paths /path/to/restore/to # Restaurar todo el archivo en el directorio especificado

Restaurar archivos/directorios específicos:


borg extract "${BORG_REPO}::ARCHIVE_NAME" path/to/file_or_dir --paths /path/to/restore/to # Restaurar un archivo o directorio específico

Siempre restaure los datos en un directorio nuevo o temporal para evitar sobrescribir archivos existentes y asegurarse de la correcta recuperación.

5. Actualizaciones: rolling vs. ventana de mantenimiento

La actualización de BorgBackup y del sistema operativo debe realizarse regularmente.

  • Actualizaciones continuas (rolling updates): Para componentes no críticos y parches menores del SO, las actualizaciones se pueden aplicar regularmente, sin detener los servicios.
  • Ventana de mantenimiento: Para actualizaciones importantes de BorgBackup o del SO, así como para la actualización del kernel, se recomienda planificar una "ventana de mantenimiento". Este es un período en el que puede detener los servicios, tomar una instantánea del VPS (si su proveedor lo permite), realizar la actualización y probar el sistema a fondo.

Siempre verifique la compatibilidad de las versiones de BorgBackup al actualizar. Aunque Borg suele ser muy estable, las versiones principales pueden incluir cambios que requieren atención.


sudo apt update && sudo apt upgrade -y # Actualización regular del sistema

Después de actualizar el SO y BorgBackup, siempre verifique la funcionalidad del script de copia de seguridad y la capacidad de recuperar datos.

Solución de problemas + Preguntas frecuentes

¿Qué hacer si BorgBackup muestra el error "Remote: Host key verification failed"?

Este error significa que el cliente SSH no puede verificar la autenticidad del servidor remoto. Con mayor frecuencia, esto ocurre al conectarse por primera vez a un nuevo servidor si no ha confirmado la huella digital de la clave, o si la dirección IP del servidor ha cambiado y la clave antigua permanece en ~/.ssh/known_hosts. Para resolver el problema, elimine la línea correspondiente del archivo ~/.ssh/known_hosts en el servidor cliente (o de /root/.ssh/known_hosts si el script se ejecuta como root) e intente conectarse de nuevo, confirmando la nueva huella digital.

¿Cómo resolver el problema de falta de espacio en el disco del repositorio?

Si el servidor del repositorio se queda sin espacio, lo primero es verificar cómo funciona el comando borg prune. Es posible que la política de retención sea demasiado liberal y esté almacenando demasiados archivos antiguos. Reduzca la cantidad de copias de seguridad diarias, semanales o mensuales que se guardan. También verifique si hay otros archivos grandes en el disco que no estén relacionados con Borg. Si el problema persiste, quizás sea hora de aumentar el tamaño del disco en el VPS del repositorio o considerar la transición a un servidor dedicado con mayor almacenamiento.

¿Qué configuración mínima de VPS es adecuada para un repositorio BorgBackup?

Para un proyecto pequeño con un volumen de datos de hasta 100-200 GB y uno o dos clientes, un VPS con 1 vCPU, 2 GB de RAM y 200 GB de disco SSD/NVMe será mínimamente adecuado. Es importante que el disco sea lo suficientemente rápido para las operaciones de Borg (SSD/NVMe es preferible). Si la cantidad de datos o clientes crece, se deben escalar los recursos, especialmente la RAM y el espacio en disco.

¿Qué elegir — VPS o dedicado para esta tarea?

La elección entre un VPS y un servidor dedicado depende de la escala de sus necesidades. Un VPS es ideal para la mayoría de los proyectos pequeños y medianos, ofreciendo flexibilidad y rentabilidad. Es adecuado si realiza copias de seguridad de varios cientos de gigabytes de datos con una frecuencia moderada. Un servidor dedicado es necesario si el volumen de datos se mide en terabytes, se requiere el máximo rendimiento del subsistema de disco, o si actúa como proveedor de copias de seguridad para muchos clientes. Un servidor dedicado garantiza recursos y la ausencia total de "vecinos", lo cual es crítico para el rendimiento bajo alta carga.

¿Qué hacer si olvidó la contraseña del repositorio Borg?

Si olvidó la contraseña del repositorio Borg, lamentablemente será imposible recuperar los datos de él. El cifrado de Borg es muy robusto y sin la contraseña el acceso a los datos es imposible. Esto subraya la importancia crítica de almacenar la contraseña de forma segura. Siempre use un gestor de contraseñas u otro almacenamiento seguro para datos tan críticos.

¿Cómo verificar la integridad de las copias de seguridad?

La verificación regular de la integridad de las copias de seguridad es una parte obligatoria del mantenimiento. Para ello se utiliza el comando borg check. Puede agregarlo a su script de copia de seguridad, como lo hicimos nosotros, o ejecutarlo por separado. El comando borg check --repository-only verifica solo el repositorio, mientras que borg check --archives-only verifica los archivos. Una verificación completa con borg check puede llevar mucho tiempo para repositorios grandes, pero garantiza que los datos no estén dañados.

¿Se pueden respaldar varios servidores en un solo repositorio?

Sí, BorgBackup es excelente para respaldar múltiples servidores en un único repositorio central. Para cada servidor cliente, basta con crear su propio conjunto de claves SSH y configurarlas en el authorized_keys del usuario borguser en el servidor del repositorio, utilizando la opción command="borg serve --restrict-to-path /home/borguser/backups/SERVER_NAME" para aislar a cada cliente en su propio subdirectorio del repositorio. Esto aumenta la seguridad y permite gestionar fácilmente las copias de seguridad de diferentes fuentes.

Conclusiones y próximos pasos

Esquema: Conclusiones y próximos pasos
Esquema: Conclusiones y próximos pasos

Hemos configurado BorgBackup con éxito en su VPS para crear copias de seguridad cifradas y deduplicadas. Ahora sus datos críticos están protegidos contra pérdidas, y el proceso de copia de seguridad está completamente automatizado. Usted tiene control total sobre sus datos, su seguridad y el costo de almacenamiento.

Los siguientes pasos para mejorar aún más su sistema de copia de seguridad pueden incluir:

  • Configuración de monitoreo: Integre los registros de BorgBackup con un sistema de monitoreo (por ejemplo, Prometheus, Grafana, pila ELK) para rastrear el éxito de las copias de seguridad y las advertencias de errores.
  • Redundancia adicional: Considere la posibilidad de crear copias de su repositorio Borg en otro almacenamiento remoto (por ejemplo, compatible con S3 o un segundo VPS) para implementar la regla 3-2-1.
  • Pruebas de recuperación regulares: Pruebe periódicamente el proceso de recuperación de datos para asegurarse de que las copias de seguridad estén actualizadas y sean funcionales. Esto le dará confianza en una situación crítica.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Configuración BorgBackup en VPS para backup cifrado y deduplicado
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.