Files
octto-engenharia/docs/BACKUP_CLOUD.md

4.6 KiB

Sistema de Backup em Cloud - Occto Engenharia

Sistema completo de backup e restore com upload automático para cloud (MinIO/S3).

🎯 Funcionalidades

  • Criar backups locais (PostgreSQL + MinIO)
  • Upload automático para cloud (MinIO/S3)
  • Download de backups
  • Restore local com um clique
  • Script universal de restore para qualquer servidor

📱 Interface Admin

Acesse https://seu-dominio.com/admin/configuracoes → Aba "Backup"

Botões disponíveis:

  • ☁️ Upload - Enviar backup para cloud
  • 🔄 Restaurar - Restaurar backup no banco atual
  • ⬇️ Baixar - Download do arquivo .tar.gz
  • 🗑️ Deletar - Remover backup local

🚀 Restauração Rápida (Curly Magic)

Opção 1: Via URL do Cloud (Recomendado)

bash <(curl -s https://seu-dominio.com/restore-from-cloud.sh) \
  --backup-url "http://seu-minio:9000/backups/backup-2025-11-29.tar.gz" \
  --postgres-password "sua_senha_postgres" \
  --minio-endpoint "seu-minio"

Opção 2: Arquivo Local

bash scripts/restore-from-cloud.sh \
  --backup-file "backup-2025-11-29.tar.gz" \
  --postgres-password "sua_senha_postgres"

Opção 3: Com Docker Compose

# 1. Coloque o backup.tar.gz no projeto
# 2. Execute o script
bash scripts/restore-from-cloud.sh \
  --backup-file "backup-2025-11-29.tar.gz" \
  --postgres-password "sua_senha" \
  --postgres-host "postgres" \
  --postgres-db "occto_db"

📋 Parâmetros do Script

Parâmetro Padrão Descrição
--backup-url - URL do backup (HTTP, S3, etc)
--backup-file - Nome do arquivo (obrigatório)
--postgres-password adminpassword Senha do PostgreSQL
--postgres-db occto_db Nome do banco
--postgres-host postgres Host do PostgreSQL
--postgres-user admin Usuário do PostgreSQL
--minio-endpoint minio Host do MinIO

🔧 Integração com MinIO

O sistema automaticamente:

  1. Cria bucket backups se não existir
  2. Faz upload do .tar.gz para backups/
  3. Gera URL acessível do arquivo

Configurar MinIO (Docker)

# docker-compose.yml
minio:
  image: minio/minio:latest
  environment:
    MINIO_ROOT_USER: admin
    MINIO_ROOT_PASSWORD: adminpassword
  ports:
    - "9000:9000"
    - "9001:9001"
  volumes:
    - minio_data:/minio_data
  command: server /minio_data --console-address ":9001"

🛡️ Segurança

  • ⚠️ O script remove o banco antigo antes de restaurar
  • ⚠️ Pede confirmação antes de restaurar
  • Valida arquivo antes de extrair
  • Limpa arquivos temporários automaticamente

📊 Exemplo de Uso Completo

# 1. Ir para o projeto
cd /seu/projeto/occto

# 2. Criar backup via admin UI (opcional)
# Ou fazer manual:
./scripts/create-backup.sh

# 3. Upload para cloud (via UI ou manual)
curl -X POST http://localhost:3000/api/backup/upload \
  -H "Content-Type: application/json" \
  -d '{"filename": "backup-2025-11-29.tar.gz"}'

# 4. Em outro servidor, restaurar:
bash <(curl -s http://localhost:3000/restore-from-cloud.sh) \
  --backup-url "http://seu-minio:9000/backups/backup-2025-11-29.tar.gz" \
  --postgres-password "nova_senha"

# 5. Reiniciar aplicação
docker-compose restart

🐛 Troubleshooting

"Arquivo não encontrado"

# Verificar arquivos disponíveis
ls -lah .backups/

"Erro ao conectar PostgreSQL"

# Testar conexão
PGPASSWORD="senha" psql -h postgres -U admin -d occto_db -c "SELECT 1"

"MinIO connection refused"

# Verificar se MinIO está rodando
docker ps | grep minio

Restaurar manualmente

# Se o script falhar, fazer passo a passo
tar -xzf backup-2025-11-29.tar.gz
PGPASSWORD="senha" psql -h postgres -U admin -d occto_db < database.sql
docker cp minio-data/. seu-container-minio:/data/
docker restart seu-container-minio

📝 Estrutura do Backup

backup-2025-11-29.tar.gz
├── database.sql          # Dump completo do PostgreSQL
└── minio-data/
    ├── [todos os buckets e arquivos]
    └── [estrutura original do MinIO]

🔄 Automation (Cron)

Para fazer backups automáticos a cada dia:

# Adicionar ao crontab
0 2 * * * cd /seu/projeto && ./scripts/create-backup.sh && curl -X POST http://localhost:3000/api/backup/upload -d '{"filename":"backup-$(date +\%Y-\%m-\%d).tar.gz"}'

📞 Suporte

Para dúvidas ou problemas, verifique:

  1. Logs: docker logs seu-container-next
  2. Espaço em disco: df -h
  3. Permissões: ls -la .backups/

Última atualização: 29 de Novembro de 2025