Skip to content

Backup Cover

OTOBO / Znuny Backup & Restore – Guia Abrangente

Neste guia, vamos mergulhar profundamente nas estratégias de backup para OTOBO e abordar:

  1. Dump do Banco de Dados via mysqldump
  2. Backup e restauração de Volumes Docker
  3. Scripts próprios do OTOBO backup.pl e restore.pl
  4. Automação com Cronjobs e Tratamento de Erros
  5. Arquivamento de Longo Prazo (por exemplo, AWS S3)

1. Dump do Banco de Dados com mysqldump

Vantagem: Rápido, independente de plataforma, contém quase todos os tickets, usuários e configurações.

Exemplo de Comando

bash
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 locks de tabela, OTOBO permanece disponível.
  • Retenção: por exemplo, a cada hora, os últimos 72 dumps (3 dias) via Cron.

Cron Job (a cada hora, retenção de 3 dias)

cron
0 * * * * /usr/local/bin/otobo_db_backup.sh

otobo_db_backup.sh cria o dump e exclui arquivos com mais de 3 dias.

Exemplo de Script: otobo_db_backup.sh

bash
#!/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 "Criando dump do DB em $FILE"
mysqldump --host=localhost --user=otobo \
  --password=SecretPass --column-statistics=0 \
  --single-transaction otobo | gzip > "$FILE"

# Excluir dumps antigos (com mais de 3 dias)
find "$BACKUP_DIR" -type f -name '*.sql.gz' -mtime +3 -delete

2. Backup de Volume Docker

Todos os arquivos armazenados persistentemente (anexos, configuração, logs) estão em volumes Docker.

2.1 Backup Completo dos Volumes

bash
#!/bin/bash
date=
DATE=$(date +'%d%m%Y_%H%M%S')
# Parar o container para um sistema de arquivos 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: Garante uma cópia limpa.
  • Arquivos: TAR comprimido com GZ no host temporário.

2.2 Restauração: Volumes & Containers

bash
#!/bin/bash
# Uso: restore_volumes.sh arquivo_backup.tar.gz
tar -xzf "$1" -C /
# Remover volumes antigos
docker compose -f /opt/otobo-docker/compose.yml down
rm -rf /var/lib/docker/volumes
# Restaurar e reiniciar
tar -xzf "$1" -C /
docker compose -f /opt/otobo-docker/compose.yml up -d

3. Scripts OTOBO: backup.pl & restore.pl

O OTOBO fornece seus próprios scripts CLI dentro do container:

bash
# Exibir ajuda
/opt/otobo/scripts/backup.pl -h

Opções

OpçãoPadrãoDescrição
-d, --backup-dirobrigatórioDiretório de destino para backups
-c, --compressgzipMétodo de compressão (gzip | bzip2)
-r, --remove-old-backups DAYSnenhumExclui backups antigos (em dias)
-t, --backup-typefullbackupfullbackup (tudo) | nofullbackup | dbonly

fullbackup: Banco de dados + diretório home (sem cache).
dbonly: Apenas banco de dados.

Exemplo: Backup Completo no Container Docker

bash
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 7

Restaurar no Container

bash
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/otobo

4. Automação & Tratamento de Erros

Script Wrapper com Verificação de Erros

bash
#!/bin/bash
COMPOSE_FILE="/opt/otobo-docker/compose.yml"
# Iniciar backup
docker compose -f "$COMPOSE_FILE" run --rm backup
if [ $? -ne 0 ]; then
  echo "Falha no backup" >&2
  exit 1
fi
echo "Backup concluído com sucesso"

Antigo: Cron para Backup de Volume

cron
0 */6 * * * /usr/local/bin/volume_backup.sh

Limpeza de Backups Antigos

bash
#!/bin/bash
BACKUP_DIR="/caminho/para/backups"
echo "Removendo backups com mais de 30 dias em $BACKUP_DIR"
find "$BACKUP_DIR" -mindepth 1 -mtime +30 -exec rm -rf {} \\
  \;
echo "Concluído."

5. Arquivamento de Longo Prazo & Nuvem

  • AWS S3: Upload dos arquivos .tar.gz e .sql.gz via aws cli ou script Python.
  • rclone: Suporte para diversos destinos (S3, Azure Blob, FTP).
  • Vantagem: Armazenamento offsite, escalabilidade ilimitada.

Diferenças entre OTOBO e Znuny (Contexto de Backup)

Na área de Backup & Restore, OTOBO e Znuny diferem nos seguintes aspectos:

  • Backups de Container

    • OTOBO: Imagem Docker oficial fornece serviço de backup pré-instalado com hooks CLI (docker compose run backup), incluindo montagens de volume preparadas e variáveis de ambiente.
    • Znuny: Configurações Docker da comunidade exigem a adição manual de um container de backup ou a adaptação de scripts próprios.
  • Scripts CLI do OTOBO

    • OTOBO: backup.pl e restore.pl na imagem suportam opções de limpeza automática (--remove-old-backups), seleção de compressão e flag de transação única.
    • Znuny: Scripts semelhantes existem, muitas vezes sem --remove-old-backups ou opções avançadas de dump de DB; é necessário adaptar para adicionar funcionalidades.
  • Otimizações de Dump de DB

    • OTOBO: A flag padrão --single-transaction é recomendada e documentada para evitar locks; a CLI garante o uso consistente.
    • Znuny: A documentação da comunidade geralmente aponta para um dump simples sem proteção de transação, com risco de locks sob alta carga.
  • Estratégia de Snapshot de Volume

    • OTOBO: Exemplos de scripts (por exemplo, backup completo e restauração) são a referência oficial e testados em ambientes multi-container.
    • Znuny: Scripts de snapshot variam muito, faltam práticas recomendadas oficiais; os usuários geralmente precisam definir suas próprias sequências de down/up.
  • Plugins de Automação & Nuvem

    • OTOBO: Exemplos integrados de uploaders S3 (script Python) e módulos de configuração para Azure, Google Cloud Storage.
    • Znuny: Nenhum plugin principal para armazenamento em nuvem; soluções geralmente externas via rclone ou scripts de upload separados.

6. Conclusão

Com este foco nas diferenças específicas de backup, você pode decidir especificamente se utiliza os mecanismos pré-fabricados do OTOBO ou expande individualmente as configurações do Znuny.## 6. Conclusão

Com estes scripts detalhados e estratégias, seus dados OTOBO estarão seguros, automatizados e rapidamente recuperáveis. Seja dump de DB, volumes Docker ou ferramentas padrão OTOBO – você terá todas as opções sob controle.