🔒 Mejorar backup: incluir Enterprise, todos los custom modules y config
Antes: solo respaldaba hazard_shopify Ahora respalda: - Addons/custom/ (todos los módulos custom) - Addons/enterprise/ (módulos Enterprise, 1.6GB) - Conf/ (odoo.conf), docker-compose.yml, Dockerfile - .agents/ (configuración del agente AI)
This commit is contained in:
+45
-12
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# =============================================================
|
# =============================================================
|
||||||
# BACKUP SCRIPT PARA HAZARD (Odoo 16 en Docker)
|
# BACKUP SCRIPT PARA HAZARD (Odoo 16 en Docker)
|
||||||
# Respalda: Base de datos PostgreSQL + Código del módulo
|
# Respalda: Base de datos PostgreSQL + Módulos Enterprise + Módulos Custom + Config
|
||||||
# Frecuencia: Cada 12 horas (cron)
|
# Frecuencia: Cada 12 horas (cron)
|
||||||
# Retención local: 15 días
|
# Retención local: 15 días
|
||||||
# Nota: Plesk sube estos archivos a Google Drive automáticamente
|
# Nota: Plesk sube estos archivos a Google Drive automáticamente
|
||||||
@@ -15,7 +15,12 @@ set -euo pipefail
|
|||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
BACKUP_NAME="backup_hazard_$(date +%Y%m%d_%H%M%S)"
|
BACKUP_NAME="backup_hazard_$(date +%Y%m%d_%H%M%S)"
|
||||||
BACKUP_DIR="$SCRIPT_DIR/backups"
|
BACKUP_DIR="$SCRIPT_DIR/backups"
|
||||||
MODULE_PATH="$SCRIPT_DIR/Addons/custom/hazard_shopify"
|
CUSTOM_ADDONS_PATH="$SCRIPT_DIR/Addons/custom"
|
||||||
|
ENTERPRISE_ADDONS_PATH="$SCRIPT_DIR/Addons/enterprise"
|
||||||
|
CONF_PATH="$SCRIPT_DIR/Conf"
|
||||||
|
DOCKER_COMPOSE="$SCRIPT_DIR/docker-compose.yml"
|
||||||
|
DOCKERFILE="$SCRIPT_DIR/Dockerfile"
|
||||||
|
AGENTS_PATH="$SCRIPT_DIR/.agents"
|
||||||
DB_CONTAINER="odoo-16-db-hazard-new"
|
DB_CONTAINER="odoo-16-db-hazard-new"
|
||||||
ODOO_CONTAINER="odoo-16-hazard-new"
|
ODOO_CONTAINER="odoo-16-hazard-new"
|
||||||
DB_NAME="hazard_new"
|
DB_NAME="hazard_new"
|
||||||
@@ -31,7 +36,9 @@ log() {
|
|||||||
|
|
||||||
cleanup_on_exit() {
|
cleanup_on_exit() {
|
||||||
rm -f "$LOCK_FILE"
|
rm -f "$LOCK_FILE"
|
||||||
rm -f "$BACKUP_DIR/code_$BACKUP_NAME.tar.gz" 2>/dev/null
|
rm -f "$BACKUP_DIR/custom_$BACKUP_NAME.tar.gz" 2>/dev/null
|
||||||
|
rm -f "$BACKUP_DIR/enterprise_$BACKUP_NAME.tar.gz" 2>/dev/null
|
||||||
|
rm -f "$BACKUP_DIR/config_$BACKUP_NAME.tar.gz" 2>/dev/null
|
||||||
rm -f "$BACKUP_DIR/db_$BACKUP_NAME.sql" 2>/dev/null
|
rm -f "$BACKUP_DIR/db_$BACKUP_NAME.sql" 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,16 +73,38 @@ if ! docker ps --format '{{.Names}}' | grep -q "^${ODOO_CONTAINER}$"; then
|
|||||||
log "⚠️ [$(date '+%Y-%m-%d %H:%M:%S')] ADVERTENCIA: Contenedor $ODOO_CONTAINER no está corriendo. Continuando solo con DB..."
|
log "⚠️ [$(date '+%Y-%m-%d %H:%M:%S')] ADVERTENCIA: Contenedor $ODOO_CONTAINER no está corriendo. Continuando solo con DB..."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- 1. RESPALDAR CÓDIGO DEL MÓDULO ---
|
# --- 1. RESPALDAR MÓDULOS CUSTOM ---
|
||||||
log "📦 Comprimiendo código del módulo..."
|
log "📦 Comprimiendo módulos custom..."
|
||||||
if [ -d "$MODULE_PATH" ]; then
|
if [ -d "$CUSTOM_ADDONS_PATH" ]; then
|
||||||
tar -czf "$BACKUP_DIR/code_$BACKUP_NAME.tar.gz" -C "$(dirname "$MODULE_PATH")" "$(basename "$MODULE_PATH")"
|
tar -czf "$BACKUP_DIR/custom_$BACKUP_NAME.tar.gz" -C "$(dirname "$CUSTOM_ADDONS_PATH")" "$(basename "$CUSTOM_ADDONS_PATH")"
|
||||||
CODE_SIZE=$(du -sh "$BACKUP_DIR/code_$BACKUP_NAME.tar.gz" | cut -f1)
|
CUSTOM_SIZE=$(du -sh "$BACKUP_DIR/custom_$BACKUP_NAME.tar.gz" | cut -f1)
|
||||||
log " ✓ Código comprimido: $CODE_SIZE"
|
log " ✓ Módulos custom comprimidos: $CUSTOM_SIZE"
|
||||||
else
|
else
|
||||||
log "⚠️ ADVERTENCIA: Ruta del módulo no encontrada: $MODULE_PATH"
|
log "⚠️ ADVERTENCIA: Ruta de módulos custom no encontrada: $CUSTOM_ADDONS_PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- 1b. RESPALDAR MÓDULOS ENTERPRISE ---
|
||||||
|
log "📦 Comprimiendo módulos Enterprise (esto puede tardar)..."
|
||||||
|
if [ -d "$ENTERPRISE_ADDONS_PATH" ]; then
|
||||||
|
tar -czf "$BACKUP_DIR/enterprise_$BACKUP_NAME.tar.gz" -C "$(dirname "$ENTERPRISE_ADDONS_PATH")" "$(basename "$ENTERPRISE_ADDONS_PATH")"
|
||||||
|
ENT_SIZE=$(du -sh "$BACKUP_DIR/enterprise_$BACKUP_NAME.tar.gz" | cut -f1)
|
||||||
|
log " ✓ Módulos Enterprise comprimidos: $ENT_SIZE"
|
||||||
|
else
|
||||||
|
log "⚠️ ADVERTENCIA: Ruta de módulos Enterprise no encontrada: $ENTERPRISE_ADDONS_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- 1c. RESPALDAR CONFIGURACIÓN (Docker + Odoo + Agents) ---
|
||||||
|
log "📦 Comprimiendo configuración del proyecto..."
|
||||||
|
tar -czf "$BACKUP_DIR/config_$BACKUP_NAME.tar.gz" \
|
||||||
|
-C "$SCRIPT_DIR" \
|
||||||
|
"$(basename "$CONF_PATH")" \
|
||||||
|
"$(basename "$DOCKER_COMPOSE")" \
|
||||||
|
"$(basename "$DOCKERFILE")" \
|
||||||
|
"$(basename "$AGENTS_PATH")" \
|
||||||
|
2>/dev/null
|
||||||
|
CONF_SIZE=$(du -sh "$BACKUP_DIR/config_$BACKUP_NAME.tar.gz" | cut -f1)
|
||||||
|
log " ✓ Configuración comprimida: $CONF_SIZE"
|
||||||
|
|
||||||
# --- 2. RESPALDAR BASE DE DATOS (SQL Dump) ---
|
# --- 2. RESPALDAR BASE DE DATOS (SQL Dump) ---
|
||||||
log "🗄️ Extrayendo base de datos desde el contenedor Docker..."
|
log "🗄️ Extrayendo base de datos desde el contenedor Docker..."
|
||||||
if docker exec "$DB_CONTAINER" pg_dump -U "$DB_USER" "$DB_NAME" > "$BACKUP_DIR/db_$BACKUP_NAME.sql" 2>/dev/null; then
|
if docker exec "$DB_CONTAINER" pg_dump -U "$DB_USER" "$DB_NAME" > "$BACKUP_DIR/db_$BACKUP_NAME.sql" 2>/dev/null; then
|
||||||
@@ -94,7 +123,11 @@ fi
|
|||||||
|
|
||||||
# --- 4. EMPAQUETAR TODO ---
|
# --- 4. EMPAQUETAR TODO ---
|
||||||
log "🎁 Creando paquete comprimido final..."
|
log "🎁 Creando paquete comprimido final..."
|
||||||
tar -czf "$BACKUP_DIR/$BACKUP_NAME.tar.gz" -C "$BACKUP_DIR" "code_$BACKUP_NAME.tar.gz" "db_$BACKUP_NAME.sql"
|
tar -czf "$BACKUP_DIR/$BACKUP_NAME.tar.gz" -C "$BACKUP_DIR" \
|
||||||
|
"custom_$BACKUP_NAME.tar.gz" \
|
||||||
|
"enterprise_$BACKUP_NAME.tar.gz" \
|
||||||
|
"config_$BACKUP_NAME.tar.gz" \
|
||||||
|
"db_$BACKUP_NAME.sql"
|
||||||
|
|
||||||
FINAL_SIZE=$(du -sh "$BACKUP_DIR/$BACKUP_NAME.tar.gz" | cut -f1)
|
FINAL_SIZE=$(du -sh "$BACKUP_DIR/$BACKUP_NAME.tar.gz" | cut -f1)
|
||||||
log " ✓ Paquete final: $FINAL_SIZE"
|
log " ✓ Paquete final: $FINAL_SIZE"
|
||||||
@@ -109,7 +142,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Limpiar archivos temporales (también se limpian en trap EXIT)
|
# Limpiar archivos temporales (también se limpian en trap EXIT)
|
||||||
rm -f "$BACKUP_DIR/code_$BACKUP_NAME.tar.gz" "$BACKUP_DIR/db_$BACKUP_NAME.sql"
|
rm -f "$BACKUP_DIR/custom_$BACKUP_NAME.tar.gz" "$BACKUP_DIR/enterprise_$BACKUP_NAME.tar.gz" "$BACKUP_DIR/config_$BACKUP_NAME.tar.gz" "$BACKUP_DIR/db_$BACKUP_NAME.sql"
|
||||||
|
|
||||||
# --- 6. POLÍTICA DE RETENCIÓN ---
|
# --- 6. POLÍTICA DE RETENCIÓN ---
|
||||||
log "🧹 Ejecutando política de retención (Limpiando archivos de más de $MAX_RETENTION_DAYS días)..."
|
log "🧹 Ejecutando política de retención (Limpiando archivos de más de $MAX_RETENTION_DAYS días)..."
|
||||||
|
|||||||
Reference in New Issue
Block a user