187 lines
4.0 KiB
Markdown
187 lines
4.0 KiB
Markdown
# 📦 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:**
|
|
```json
|
|
{
|
|
"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:**
|
|
```json
|
|
{
|
|
"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:**
|
|
```json
|
|
{
|
|
"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
|
|
```powershell
|
|
cd g:\Projetos\aggios-app\scripts
|
|
.\backup-db.ps1
|
|
```
|
|
|
|
### Restaurar Último Backup
|
|
```powershell
|
|
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:**
|
|
- Login: admin@aggios.app
|
|
- Senha: Ag@}O%}Z;if)97o*JOgNMbP2025!
|
|
|
|
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
|
|
```bash
|
|
# Verificar se o container está rodando
|
|
docker ps | grep aggios-postgres
|
|
|
|
# Verificar logs
|
|
docker logs aggios-backend --tail 50
|
|
```
|
|
|
|
### Erro ao restaurar
|
|
```bash
|
|
# 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
|