180 lines
4.6 KiB
Markdown
180 lines
4.6 KiB
Markdown
# 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
|
|
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
|
|
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
|
|
|
|
```bash
|
|
# 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)
|
|
|
|
```yaml
|
|
# 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
|
|
|
|
```bash
|
|
# 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"
|
|
```bash
|
|
# Verificar arquivos disponíveis
|
|
ls -lah .backups/
|
|
```
|
|
|
|
### "Erro ao conectar PostgreSQL"
|
|
```bash
|
|
# Testar conexão
|
|
PGPASSWORD="senha" psql -h postgres -U admin -d occto_db -c "SELECT 1"
|
|
```
|
|
|
|
### "MinIO connection refused"
|
|
```bash
|
|
# Verificar se MinIO está rodando
|
|
docker ps | grep minio
|
|
```
|
|
|
|
### Restaurar manualmente
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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
|