
OTOBO / Znuny Backup & Restore – Guía Completa
En esta guía, profundizaremos en detalle en las estrategias de backup para OTOBO, cubriendo:
- Volcado de base de datos con
mysqldump - Copia de seguridad y restauración de volúmenes de Docker
- Scripts propios de OTOBO:
backup.plyrestore.pl - Automatización con cronjobs y manejo de errores
- Archivo a largo plazo (por ejemplo, AWS S3)
1. Volcado de Base de Datos con mysqldump
Ventaja: Rápido, independiente de la plataforma, contiene casi todos los tickets, usuarios y configuraciones.
Ejemplo de Comando
mysqldump \
--host=${DB_HOST} \
--user=${DB_USER} \
--password=${DB_PASS} \
--column-statistics=0 \
--single-transaction \
--databases otobo \
> /backup/otobo_db_$(date +'%Y%m%d_%H%M').sql--single-transaction: Minimiza los bloqueos de tabla, OTOBO permanece disponible.- Retención: Por ejemplo, cada hora, últimos 72 volcados (3 días) vía Cron.
Cron Job (cada hora, retención de 3 días)
0 * * * * /usr/local/bin/otobo_db_backup.sh
otobo_db_backup.shcrea el volcado y elimina archivos de más de 3 días.
Ejemplo de Script: otobo_db_backup.sh
#!/bin/bash
BACKUP_DIR="/backup/db"
mkdir -p "$BACKUP_DIR"
DATE=$(date +'%Y%m%d_%H%M')
FILE="$BACKUP_DIR/otobo_db_${DATE}.sql.gz"
echo "Creando volcado de DB en $FILE"
mysqldump --host=localhost --user=otobo \
--password=SecretPass --column-statistics=0 \
--single-transaction otobo | gzip > "$FILE"
# Eliminar volcados antiguos (más de 3 días)
find "$BACKUP_DIR" -type f -name '*.sql.gz' -mtime +3 -delete2. Backup de Volúmenes de Docker
Todos los archivos almacenados de forma persistente (adjuntos, configuración, logs) se encuentran en volúmenes de Docker.
2.1 Backup Completo de Volúmenes
#!/bin/bash
date=
DATE=$(date +'%d%m%Y_%H%M%S')
# Detener el contenedor para un sistema de archivos consistente
docker compose -f /opt/otobo-docker/compose.yml down
tar -czf "/tmp/docker_volumes_$DATE.tar.gz" /var/lib/docker/volumes
docker compose -f /opt/otobo-docker/compose.yml up -d --build- Down/Up: Garantiza una copia limpia.
- Archivo: TAR comprimido con GZ en la carpeta temporal del host.
2.2 Restauración: Volúmenes y Contenedores
#!/bin/bash
# Uso: restore_volumes.sh backup_file.tar.gz
tar -xzf "$1" -C /
# Eliminar volúmenes antiguos
docker compose -f /opt/otobo-docker/compose.yml down
rm -rf /var/lib/docker/volumes
# Restaurar y reiniciar
tar -xzf "$1" -C /
docker compose -f /opt/otobo-docker/compose.yml up -d3. Scripts de OTOBO: backup.pl & restore.pl
OTOBO proporciona sus propios scripts CLI dentro del contenedor:
# Mostrar ayuda
/opt/otobo/scripts/backup.pl -hOpciones
| Opción | Predeterminado | Descripción |
|---|---|---|
-d, --backup-dir | requerido | Directorio de destino para los backups |
-c, --compress | gzip | Método de compresión (gzip | bzip2) |
-r, --remove-old-backups DAYS | ninguno | Elimina backups antiguos (en días) |
-t, --backup-type | fullbackup | fullbackup (todo) | nofullbackup | dbonly |
fullbackup: Base de datos + directorio home (sin caché).dbonly: Solo base de datos.
Ejemplo: Backup Completo en el Contenedor Docker
docker run --rm \
--volume otobo_opt_otobo:/opt/otobo \
--volume otobo_backup:/otobo_backup \
rotheross/otobo:latest-10_0 scripts/backup.pl \
--backup-dir /otobo_backup --compress gzip --remove-old-backups 7Restaurar en el Contenedor
docker run --rm \
--volume otobo_opt_otobo:/opt/otobo \
--volume otobo_backup:/otobo_backup \
rotheross/otobo:latest-10_0 scripts/restore.pl \
--backup-dir /otobo_backup/20231015_123045 --backup-dir /opt/otobo4. Automatización y Manejo de Errores
Script Envoltorio con Verificación de Errores
#!/bin/bash
COMPOSE_FILE="/opt/otobo-docker/compose.yml"
# Iniciar backup
docker compose -f "$COMPOSE_FILE" run --rm backup
if [ $? -ne 0 ]; then
echo "Fallo en el backup" >&2
exit 1
fi
echo "Backup completado exitosamente"Antiguo: Cron para Backup de Volúmenes
0 */6 * * * /usr/local/bin/volume_backup.shLimpieza de Backups Antiguos
#!/bin/bash
BACKUP_DIR="/ruta/a/backups"
echo "Eliminando backups de más de 30 días en $BACKUP_DIR"
find "$BACKUP_DIR" -mindepth 1 -mtime +30 -exec rm -rf {} \\
\;
echo "Listo."5. Archivo a Largo Plazo y Nube
- AWS S3: Subida de archivos
.tar.gzy.sql.gzmedianteaws clio script de Python. - rclone: Soporte para varios destinos (S3, Azure Blob, FTP).
- Ventaja: Almacenamiento fuera del sitio, escalabilidad ilimitada.
Diferencias entre OTOBO y Znuny (Contexto de Backup)
En el área de Backup y Restauración, OTOBO y Znuny difieren en los siguientes aspectos:
Backups de Contenedores
- OTOBO: La imagen oficial de Docker proporciona un servicio de backup preinstalado con hooks CLI (
docker compose run backup), incluyendo montajes de volumen preparados y variables de entorno. - Znuny: Las configuraciones de Docker de la comunidad requieren la adición manual de un contenedor de backup o la adaptación de scripts propios.
- OTOBO: La imagen oficial de Docker proporciona un servicio de backup preinstalado con hooks CLI (
Scripts CLI de OTOBO
- OTOBO:
backup.plyrestore.plen la imagen soportan opciones de limpieza automática (--remove-old-backups), selección de compresión y flag de transacción única. - Znuny: Existen scripts similares, a menudo sin
--remove-old-backupsu opciones extendidas de volcado de DB; se requiere adaptación para añadir funcionalidad.
- OTOBO:
Optimizaciones de Volcado de DB
- OTOBO: El flag predeterminado
--single-transactionse recomienda y documenta para evitar bloqueos; la CLI garantiza un uso consistente. - Znuny: La documentación de la comunidad generalmente apunta a volcados simples sin protección de transacciones, con riesgo de bloqueos bajo alta carga.
- OTOBO: El flag predeterminado
Estrategia de Snapshot de Volúmenes
- OTOBO: Los scripts de ejemplo (por ejemplo, backup completo y restauración) son la referencia oficial y se prueban en entornos multi-contenedor.
- Znuny: Los scripts de snapshot varían considerablemente, faltan las mejores prácticas oficiales; los usuarios a menudo deben definir sus propias secuencias de detención/inicio.
Plugins de Automatización y Nube
- OTOBO: Ejemplos integrados de cargadores S3 (script de Python) y módulos de configuración para Azure, Google Cloud Storage.
- Znuny: No hay plugins principales para almacenamiento en la nube; las soluciones suelen ser externas a través de
rcloneo scripts de carga separados.
6. Conclusión
Con estos scripts detallados y estrategias, sus datos de OTOBO estarán seguros, automatizados y listos para ser restaurados rápidamente. Ya sea volcado de DB, volúmenes de Docker o herramientas estándar de OTOBO, usted tiene todas las opciones bajo control.