Saltar a contenido

Backup y Restauración

Sistema Automatico

El sistema incluye backups automáticos diarios.

Configuración

Aspecto Valor
Frecuencia Diario a medianoche (00:00)
Retencion 5 backups
Ubicación ./backups/
Log /var/log/odoo-backup.log

Cronjob

0 0 * * * /opt/full3d-odoo/scripts/backup.sh >> /var/log/odoo-backup.log 2>&1

Contenido del Backup

Cada backup es un archivo .tar.gz qué contiene:

odoo_backup_YYYYMMDD_HHMMSS.tar.gz
├── database.dump      # PostgreSQL (formato custom -Fc)
├── filestore.tar      # Archivos adjuntos de Odoo
└── backup_info.txt    # Metadatos del backup

Ejecutar Backup Manual

./scripts/backup.sh

Salida esperada:

[2026-01-20 00:00:00] ==========================================
[2026-01-20 00:00:00] Starting Odoo backup: odoo_backup_20260120_000000
[2026-01-20 00:00:00] ==========================================
[2026-01-20 00:00:00] Step 1/3: Dumping PostgreSQL database...
[2026-01-20 00:00:10] Database dump complete: 13M
[2026-01-20 00:00:10] Step 2/3: Backing up Odoo filestore...
[2026-01-20 00:00:15] Filestore backup complete: 141M
[2026-01-20 00:00:15] Step 3/3: Creating compressed archive...
[2026-01-20 00:00:25] Archive created: odoo_backup_20260120_000000.tar.gz (45M)
[2026-01-20 00:00:25] Cleaning up old backups (keeping 5 most recent)...
[2026-01-20 00:00:25] ==========================================
[2026-01-20 00:00:25] Backup completed successfully!
[2026-01-20 00:00:25] ==========================================

Ver Backups Disponibles

ls -lh backups/

Ejemplo:

-rw-r--r-- 1 root root 45M Jan 20 00:00 odoo_backup_20260120_000000.tar.gz
-rw-r--r-- 1 root root 44M Jan 19 00:00 odoo_backup_20260119_000000.tar.gz
-rw-r--r-- 1 root root 43M Jan 18 00:00 odoo_backup_20260118_000000.tar.gz

Restaurar Backup

Advertencia

La restauración reemplaza todos los datos actuales. Asegurate de tener un backup del estado actual antes de restaurar.

Comando

./scripts/restore.sh backups/odoo_backup_20260120_000000.tar.gz

Proceso

  1. Confirmacion - Script pide confirmacion
  2. Extracción - Descomprime el backup
  3. Stop Odoo - Detiene el contenedor
  4. Drop DB - Elimina la base de datos actual
  5. Restore DB - Restaura desde dump
  6. Restore Filestore - Restaura archivos
  7. Start Odoo - Inicia el contenedor

Salida Esperada

╔══════════════════════════════════════════════════════════════╗
║                    WARNING                                   ║
║  This will REPLACE the current database and filestore!      ║
║  All existing data will be LOST!                            ║
╚══════════════════════════════════════════════════════════════╝

Backup file: backups/odoo_backup_20260120_000000.tar.gz
Target database: odoo_full3d

Are you sure you want to continue? (yes/no): yes

[2026-01-20 12:00:00] Starting restore...
[2026-01-20 12:00:05] Database restored successfully
[2026-01-20 12:00:10] Filestore restored successfully
[2026-01-20 12:00:15] Restore completed successfully!

Estrategia 3-2-1

Para disaster recovery completo, se recomienda:

Copia Ubicación Método
1 Local (./backups/) Automatico diario
2 Servidor remoto SCP manual
3 Almacenamiento cloud Upload manual

Transferir a Servidor Remoto

# Obtener ultimo backup
LATEST=$(ls -t backups/odoo_backup_*.tar.gz | head -1)

# Transferir via SCP
scp "$LATEST" usuario@servidor-remoto:/ruta/backups/

Programar Transferencia Automática (Opcional)

Agregar al crontab después del backup:

30 0 * * * scp $(ls -t /opt/full3d-odoo/backups/odoo_backup_*.tar.gz | head -1) usuario@servidor:/backups/

Verificar Cronjob

# Ver crontab actual
crontab -l

# Debe mostrar:
# 0 0 * * * /opt/full3d-odoo/scripts/backup.sh >> /var/log/odoo-backup.log 2>&1

Ver Log de Backups

# Ultimas líneas
tail -50 /var/log/odoo-backup.log

# Buscar errores
grep -i error /var/log/odoo-backup.log