Copia de Seguridad de Duplicati al Almacenamiento en la Nube
Duplicati es un software de copia de seguridad gratuito y de código abierto que permite copias de seguridad seguras, comprimidas y encriptadas a varios proveedores de almacenamiento en la nube y destinos locales. Con soporte para copias de seguridad incrementales, deduplicación y encriptación transparente, Duplicati proporciona capacidades de copia de seguridad de nivel empresarial sin costos de licencia. Esta guía cubre la instalación, configuración de trabajos de copia de seguridad dirigidos a servicios de almacenamiento en la nube e implementación de procedimientos de recuperación.
Tabla de Contenidos
- Características y Arquitectura de Duplicati
- Instalación y Configuración
- Configuración de Almacenamiento en la Nube
- Creación de Trabajo de Copia de Seguridad
- Encriptación y Seguridad
- Programación y Retención
- Operaciones de Restauración
- Monitoreo y Mantenimiento
- Conclusión
Características y Arquitectura de Duplicati
Duplicati se destaca por varias capacidades clave:
- Soporte Múltiple de Backend: Amazon S3, Azure, Google Drive, Backblaze B2, SFTP, WebDAV
- Encriptación: Encriptación AES-256 por defecto con algoritmos configurables
- Deduplicación: Detección automática de bloques de datos duplicados entre copias de seguridad
- Copias de Seguridad Incrementales: Solo se transfieren datos cambiados después de la copia de seguridad inicial
- Compresión: Compresión integrada reduce requisitos de almacenamiento
- Verificación: Verificación automática de copia de seguridad garantiza integridad
Instalación y Configuración
Requisitos del Sistema
# Verificar especificaciones del sistema
uname -m
free -h
df -h /
# Duplicati requiere:
# - .NET Runtime 6.0 o posterior (o Mono en sistemas antiguos)
# - Mínimo 500 MB de espacio en disco
# - Conectividad de red para cargas en la nube
Instalar Duplicati en Ubuntu/Debian
# Agregar repositorio de Duplicati
sudo add-apt-repository ppa:duplicati/duplicati-team
sudo apt-get update
# Instalar Duplicati
sudo apt-get install -y duplicati
# Iniciar servicio Duplicati
sudo systemctl enable duplicati
sudo systemctl start duplicati
# Verificar instalación
duplicati-cli --version
# Verificar estado del servicio
sudo systemctl status duplicati
Instalar Duplicati en CentOS/RHEL
# Instalar desde repositorio oficial o descarga directa
sudo yum install -y https://updates.duplicati.com/duplicati-2.0.6.3-1.rhel.x86_64.rpm
# O compilar desde el origen
git clone https://github.com/duplicati/duplicati.git
cd duplicati
./build.sh release
# Habilitar e iniciar servicio
sudo systemctl enable duplicati
sudo systemctl start duplicati
Acceder a Interfaz Web
# Duplicati proporciona interfaz web en:
# http://localhost:8200/
# Si se ejecuta en servidor remoto, usar túnel SSH:
ssh -L 8200:localhost:8200 user@backup-server
# Inicio de sesión predeterminado: Sin autenticación requerida (configurar en ajustes)
# Establecer autenticación
# Visitar Ajustes > Seguridad > Configurar autenticación
Configuración de Almacenamiento en la Nube
Configuración de Amazon S3
# Generar Claves de Acceso de AWS
# Visitar Consola de AWS > IAM > Usuarios > Su Usuario > Credenciales de Seguridad
# Crear bucket de S3 para copias de seguridad
aws s3 mb s3://my-backup-bucket
# En interfaz web de Duplicati:
# 1. Crear Nueva Copia de Seguridad
# 2. Seleccionar Backend: Amazon S3
# 3. Configurar:
# - ID de Clave de Acceso de AWS: [su-clave-de-acceso]
# - Clave de Acceso Secreto de AWS: [su-clave-secreta]
# - Bucket de S3: my-backup-bucket
# - Región de Almacenamiento: us-east-1
# O a través de CLI:
duplicati-cli backup "s3://aws_access_key_id:aws_secret_access_key@my-backup-bucket/" /path/to/backup
Configuración de Azure Blob Storage
# Crear Cuenta de Almacenamiento de Azure
# A través de Portal de Azure o CLI:
az storage account create --name mybackupaccount --resource-group mygroup
# Obtener cadena de conexión
CONN_STR=$(az storage account show-connection-string -n mybackupaccount -g mygroup -o tsv)
# Crear contenedor
az storage container create --name backup-container --connection-string "$CONN_STR"
# En interfaz web de Duplicati:
# 1. Backend: Azure
# 2. Configurar:
# - Cuenta de Blob Storage: mybackupaccount
# - Clave de Blob Storage: [clave-de-cuenta-de-almacenamiento]
# - Contenedor de Blob: backup-container
Configuración de Google Drive
# Configuración de Google Drive en Duplicati:
# 1. Backend: Google Drive
# 2. OAuth pedirá autenticación
# 3. Otorgar acceso de Duplicati a Google Drive
# 4. Seleccionar o crear carpeta para copias de seguridad
# Alternativa: Token OAuth manual
# 1. Ir a Consola de Google Cloud
# 2. Crear credenciales OAuth 2.0
# 3. Configurar en ajustes de Duplicati
Configuración de Backblaze B2
# Crear cuenta de Backblaze B2 y bucket
# Visitar https://www.backblaze.com/b2/cloud-storage.html
# Generar clave de aplicación
# Ajustes de Cuenta > Claves de Aplicación > Crear Clave de Aplicación
# En interfaz web de Duplicati:
# 1. Backend: B2 Cloud Storage
# 2. Configurar:
# - ID de Cuenta de B2: [id-de-cuenta]
# - Clave de Aplicación de B2: [clave-de-aplicación]
# - Nombre de Bucket de B2: my-backup-bucket
Configuración de SFTP
# Para servidores de copia de seguridad locales:
# 1. Backend: SSH/SFTP
# 2. Configurar:
# - Servidor: backup.example.com
# - Usuario: sftp-user
# - Contraseña: [contraseña]
# - Ruta Remota: /backups/duplicati
# - Puerto: 22 (o personalizado)
# O usando autenticación de clave:
# 1. Generar par de claves SSH en cliente de copia de seguridad
ssh-keygen -t ed25519 -f ~/.ssh/duplicati_key
# 2. Copiar clave pública a servidor SFTP
ssh-copy-id -i ~/.ssh/duplicati_key.pub [email protected]
# 3. Configurar SFTP con clave
# Cargar clave privada en ajustes de Duplicati
Creación de Trabajo de Copia de Seguridad
Configurar Primer Trabajo de Copia de Seguridad
# A través de interfaz web:
# 1. Visitar http://localhost:8200/
# 2. Hacer clic en "New" > "Backup"
# 3. Nombre: "Full Server Backup"
# 4. Backend: Seleccionar su almacenamiento configurado
# 5. Encriptación: Habilitar con frase de paso fuerte
# 6. Agregar directorios de origen:
# - /home
# - /etc
# - /var/www
# - /opt/applications
# 7. Excluir patrones:
# - **/.cache
# - **/node_modules
# - **/__pycache__
# - /proc
# - /sys
# - /dev
Creación de Copia de Seguridad desde CLI
# Crear trabajo de copia de seguridad a través de línea de comandos
duplicati-cli backup \
"s3://access-key:secret-key@bucket-name/path/" \
/home /etc /var/www \
--encryption-module aes \
--encryption-key-size 256 \
--compression-module zip \
--backup-name "Full Server Backup"
# Listar todas las configuraciones de copia de seguridad
duplicati-cli list-backups
# Obtener detalles del trabajo de copia de seguridad
duplicati-cli status \
"s3://access-key:secret-key@bucket-name/path/" \
/home
Opciones Avanzadas
# Habilitar registro detallado
duplicati-cli backup \
"s3://credentials@bucket/" \
/data \
--log-file /var/log/duplicati-backup.log \
--log-level Debug
# Establecer tamaño de bloque para deduplicación
duplicati-cli backup \
"s3://credentials@bucket/" \
/data \
--blocksize 524288 # Bloques de 512KB
# Configurar límites de ancho de banda
duplicati-cli backup \
"s3://credentials@bucket/" \
/data \
--upload-speed-limit 10MB # Limitar cargas a 10MB/s
# Habilitar versionado de archivos (mantener múltiples versiones)
duplicati-cli backup \
"s3://credentials@bucket/" \
/data \
--keep-time 7d # Mantener copias de seguridad diarias durante 7 días
Encriptación y Seguridad
Configuración de Encriptación
# Durante creación de copia de seguridad, configurar encriptación:
# 1. Encriptación: AES-256 (predeterminado)
# 2. Frase de Paso: Generar contraseña fuerte
# Ejemplo: $(openssl rand -base64 32)
# 3. Salt: Opcional, generado por el sistema
# Nunca pierda la frase de paso de encriptación - no puede recuperar copias de seguridad sin ella
# Almacenar frase de paso de forma segura:
echo "my-encryption-passphrase" > /root/.duplicati-passphrase
chmod 600 /root/.duplicati-passphrase
# Exportar configuración de copia de seguridad
# Ajustes > Copia de Seguridad > Avanzado > Exportar como línea de comandos
# Guarda toda la configuración incluyendo detalles de encriptación
Configuración de SSL/TLS
# Configurar HTTPS para interfaz web de Duplicati
# Ajustes > Seguridad > Configurar HTTPS
# O a través de variables de entorno:
export DUPLICATI_USEHTTPS=true
export DUPLICATI_CERTIFICATEPATH=/etc/duplicati/cert.pem
# Generar certificado autofirmado
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/duplicati/key.pem \
-out /etc/duplicati/cert.pem
# Reiniciar Duplicati
sudo systemctl restart duplicati
Configuración de Autenticación
# Configurar autenticación de interfaz web
# Ajustes > Seguridad > Usuario y Contraseña
# O a través del entorno:
export DUPLICATI_AUTHENTICATIONREQUIRED=true
export DUPLICATI_AUTHENTICATIONUSERNAME=admin
export DUPLICATI_AUTHENTICATIONPASSWORD=strong_password
# Reiniciar servicio
sudo systemctl restart duplicati
Programación y Retención
Programación Automatizada de Copia de Seguridad
# Configurar programa de copia de seguridad en interfaz web:
# 1. Seleccionar trabajo de copia de seguridad
# 2. Ajustes > Programa
# 3. Frecuencia: Diaria, Semanal, Mensual, o Personalizada
# 4. Hora: 02:00 (horas fuera de pico)
# 5. Días: Seleccionar días específicos si es necesario
# Ejemplo de programa similar a cron:
# "Ejecutar días de entre semana a las 2:00 AM"
Políticas de Retención
# Configurar limpieza automática:
# 1. Ajustes > Opciones de Limpieza
# 2. Eliminar copias de seguridad:
# - Más antiguas que: 30 días
# - Mantener al menos: 5 copias de seguridad recientes
# - Mantener versiones: Habilitar
# A través de CLI:
duplicati-cli list-broken-backups \
"s3://credentials@bucket/" \
--all-backups
duplicati-cli delete-broken-backups \
"s3://credentials@bucket/" \
--all-backups
Verificación de Copia de Seguridad
# Verificar integridad de copia de seguridad
duplicati-cli test \
"s3://credentials@bucket/path/" \
-dbpath /var/lib/duplicati/test.db \
--backup-name "Full Server Backup"
# Ejecutar verificación completa (más lenta pero exhaustiva)
duplicati-cli repair \
"s3://credentials@bucket/path/" \
--dbpath /var/lib/duplicati/test.db \
--log-file /var/log/duplicati-verify.log
# Programar verificación
# En crontab: 0 3 * * 0 duplicati-cli test s3://...
Operaciones de Restauración
Restauración a Nivel de Archivo
# Listar contenido de copia de seguridad
duplicati-cli list \
"s3://credentials@bucket/" \
--backup-name "Full Server Backup"
# Listar contenido de ruta específica
duplicati-cli list \
"s3://credentials@bucket/" \
--backup-name "Full Server Backup" \
--include /home/user/
# Restaurar archivo individual
duplicati-cli restore \
"s3://credentials@bucket/" \
--restore-path /home/user/important-file.txt \
--destination /restore/location/
# Restaurar directorio
duplicati-cli restore \
"s3://credentials@bucket/" \
--restore-path /home/user/Documents \
--destination /restore/location/
Procedimiento de Restauración Completa
# Extraer a ubicación temporal (cuidado con permisos)
duplicati-cli restore \
"s3://credentials@bucket/" \
--backup-name "Full Server Backup" \
--destination /tmp/restore/
# Verificar archivos restaurados
ls -la /tmp/restore/
# Restaurar a ubicaciones originales (si el servidor está limpio)
rsync -av /tmp/restore/home/ /home/
rsync -av /tmp/restore/etc/ /etc/ --backup-dir /etc.backup/
# Verificar restauración
diff /home/user/file.txt /tmp/restore/home/user/file.txt
Restauración Parcial con Control de Versiones
# Listar todas las versiones de copia de seguridad
duplicati-cli list-versions \
"s3://credentials@bucket/" \
--backup-name "Full Server Backup"
# Restaurar versión específica
duplicati-cli restore \
"s3://credentials@bucket/" \
--backup-name "Full Server Backup" \
--version 5 \
--restore-path /path/to/file \
--destination /restore/location/
Monitoreo y Mantenimiento
Monitoreo de Copia de Seguridad
# Obtener estadísticas de copia de seguridad
duplicati-cli status \
"s3://credentials@bucket/" \
--backup-name "Full Server Backup"
# Ver historial de copia de seguridad
duplicati-cli list-history \
"s3://credentials@bucket/" \
--backup-name "Full Server Backup"
# Verificar tamaño de copia de seguridad y duración
duplicati-cli list \
"s3://credentials@bucket/" | wc -l
Monitoreo de Registro
# Ver registros del servicio Duplicati
sudo journalctl -u duplicati -f
# Verificar registros de aplicación
tail -f /var/log/duplicati/*.log
# Monitorear registros específicos del trabajo de copia de seguridad
grep "Full Server Backup" /var/log/duplicati/*.log
Mantenimiento de Base de Datos
# Verificar integridad de base de datos de Duplicati
duplicati-cli test-database \
--dbpath /var/lib/duplicati/
# Reparar base de datos corrupta
duplicati-cli repair-database \
--dbpath /var/lib/duplicati/duplicati.db
# Vacuum de base de datos (optimizar)
sqlite3 /var/lib/duplicati/duplicati.db "VACUUM;"
Conclusión
Duplicati transforma la copia de seguridad en la nube de una tarea de infraestructura compleja a un proceso accesible y automatizado. Al aprovechar encriptación, deduplicación y programación flexible, las organizaciones logran protección integral de datos sin inversión de capital significativa. La configuración adecuada de backends en la nube, claves de encriptación y políticas de retención garantiza que sus datos permanezcan recuperables mientras se administran costos de almacenamiento de forma efectiva. Ya sea protegiendo sistemas individuales o infraestructura empresarial, la arquitectura de código abierto de Duplicati y su conjunto de características poderosas ofrecen capacidades confiables de recuperación ante desastres adecuadas para diversos escenarios de despliegue.


