Files
aggios.app/docs/backup-system.md
2025-12-17 13:36:23 -03:00

4.0 KiB

📦 Sistema de Backup & Restore - Aggios

🎯 Funcionalidades Implementadas

Interface Web (Superadmin)

URL: http://dash.localhost/superadmin/backup

Disponível apenas para usuários com role superadmin.

Recursos:

  1. Criar Backup

    • Botão para criar novo backup instantâneo
    • Mostra nome do arquivo e tamanho
    • Mantém automaticamente apenas os últimos 10 backups
  2. Listar Backups

    • Exibe todos os backups disponíveis
    • Informações: nome, data, tamanho
    • Seleção visual do backup ativo
  3. Restaurar Backup

    • Seleção de backup na lista
    • Confirmação de segurança (alerta de sobrescrita)
    • Recarrega a página após restauração
  4. Download de Backup

    • Botão de download em cada backup
    • Download direto do arquivo .sql

API Endpoints

1. Listar Backups

GET /api/superadmin/backups
Authorization: Bearer {token}

Resposta:

{
  "backups": [
    {
      "filename": "aggios_backup_2025-12-13_20-23-08.sql",
      "size": "20.49 KB",
      "date": "13/12/2025 20:23:08",
      "timestamp": "2025-12-13_20-23-08"
    }
  ]
}

2. Criar Backup

POST /api/superadmin/backup/create
Authorization: Bearer {token}

Resposta:

{
  "message": "Backup created successfully",
  "filename": "aggios_backup_2025-12-13_20-30-15.sql",
  "size": "20.52 KB"
}

3. Restaurar Backup

POST /api/superadmin/backup/restore
Authorization: Bearer {token}
Content-Type: application/json

{
  "filename": "aggios_backup_2025-12-13_20-23-08.sql"
}

Resposta:

{
  "message": "Backup restored successfully"
}

4. Download de Backup

GET /api/superadmin/backup/download/{filename}
Authorization: Bearer {token}

Resposta: Arquivo .sql para download

📂 Estrutura de Arquivos

backups/
├── aggios_backup_2025-12-13_19-56-18.sql
├── aggios_backup_2025-12-13_20-12-49.sql
├── aggios_backup_2025-12-13_20-17-59.sql
└── aggios_backup_2025-12-13_20-23-08.sql (mais recente)

⚙️ Scripts PowerShell (ainda funcionam!)

Backup Manual

cd g:\Projetos\aggios-app\scripts
.\backup-db.ps1

Restaurar Último Backup

cd g:\Projetos\aggios-app\scripts
.\restore-db.ps1

🔒 Segurança

  1. Apenas superadmins podem acessar
  2. Validação de arquivos (apenas .sql na pasta backups/)
  3. Proteção contra path traversal
  4. Autenticação JWT obrigatória
  5. Confirmação dupla antes de restaurar

⚠️ Avisos Importantes

  1. Backup Automático:

    • Ainda não configurado
    • Por enquanto, fazer backups manuais antes de docker-compose down -v
  2. Limite de Backups:

    • Sistema mantém apenas os últimos 10 backups
    • Backups antigos são deletados automaticamente
  3. Restauração:

    • ⚠️ SOBRESCREVE TODOS OS DADOS ATUAIS
    • Sempre peça confirmação dupla
    • Cria um backup automático antes? (implementar depois)

🚀 Como Usar

  1. Acesse o Superadmin:

  2. No Menu Lateral:

    • Clique em "Backup & Restore" (ícone de servidor)
  3. Criar Backup:

    • Clique em "Criar Novo Backup"
    • Aguarde confirmação
  4. Restaurar:

    • Selecione o backup desejado na lista
    • Clique em "Restaurar Backup"
    • Confirme o alerta
    • Aguarde reload da página

🐛 Troubleshooting

Erro ao criar backup

# Verificar se o container está rodando
docker ps | grep aggios-postgres

# Verificar logs
docker logs aggios-backend --tail 50

Erro ao restaurar

# Verificar permissões
ls -la g:\Projetos\aggios-app\backups\

# Testar manualmente
docker exec -i aggios-postgres psql -U aggios aggios_db < backup.sql

📝 TODO Futuro

  • Backup automático agendado (diário)
  • Backup antes de restaurar (safety)
  • Upload de backup externo
  • Exportar/importar apenas tabelas específicas
  • Histórico de restaurações
  • Notificações por email