# Backup e Restauração — SGG

Guia prático para proteger os dados do gabinete (banco + arquivos enviados).
Não exige conhecimento técnico avançado; o foco é o cPanel.

## O que precisa de backup

1. **Banco de dados** — onde ficam cidadãos, demandas, histórico, usuários,
   configurações. É o mais importante.
2. **Pasta `uploads/`** — logos, favicon e anexos de demandas (arquivos
   físicos). O banco guarda o registro; os arquivos em si ficam aqui.
3. (Opcional) **Pasta `config/`** — contém o `config.php` com os dados de
   conexão. Guarde uma cópia em local seguro, pois tem credenciais.

## Frequência recomendada

- **Banco**: diário ou, no mínimo, semanal. Antes de qualquer atualização
  (migration), faça um backup na hora.
- **uploads/**: semanal, ou sempre que houver muitos anexos novos.

## Backup do banco (cPanel)

### Opção 1 — phpMyAdmin (simples)
1. cPanel → **phpMyAdmin** → selecione o banco.
2. Aba **Exportar** → método **Rápido** → formato **SQL** → **Executar**.
3. Salve o arquivo `.sql` gerado em local seguro (fora do servidor também).

### Opção 2 — Assistente de Backup do cPanel
1. cPanel → **Backup** (ou "Assistente de Backup").
2. Em "Baixar um Backup de Banco de Dados MySQL", escolha o banco e baixe.

### Opção 3 — SSH (se disponível)
```bash
mysqldump -u USUARIO -p NOME_DO_BANCO > backup_sgg_$(date +%Y%m%d).sql
```

## Backup dos arquivos (uploads/)

### Pelo Gerenciador de Arquivos
1. cPanel → **Gerenciador de Arquivos**.
2. Navegue até a pasta do sistema e selecione a pasta `uploads`.
3. Clique em **Comprimir** → gere um `.zip` → **baixe** o zip.

### Por SSH
```bash
zip -r backup_uploads_$(date +%Y%m%d).zip uploads/
```

## Restauração

### Restaurar o banco
1. (Se necessário) crie um banco vazio em cPanel → MySQL Databases.
2. phpMyAdmin → selecione o banco → aba **Importar** → escolha o `.sql`
   do backup → **Executar**.
3. Confira o `config/config.php` para garantir que aponta para o banco certo.

> Atenção: importar um backup **substitui** os dados atuais por aqueles do
> arquivo. Se quiser preservar o estado atual, faça um backup antes de
> restaurar.

### Restaurar os arquivos
1. Suba o `.zip` de `uploads/` para a pasta do sistema.
2. Extraia, sobrescrevendo a pasta `uploads/` (confira as permissões 755
   depois).

## Boas práticas

- Guarde cópias **fora do servidor** (seu computador, nuvem). Um backup que
  está só no mesmo servidor não protege contra perda do servidor.
- Mantenha pelo menos as **3 cópias mais recentes** (rotação simples).
- **Antes de aplicar migrations** (veja `MIGRATIONS.md`), sempre faça backup
  do banco. É a rede de segurança para reverter se algo der errado.
- Teste uma restauração de vez em quando — backup que nunca foi testado
  pode falhar na hora que mais importa.
- O arquivo `config.php` contém senha do banco: trate as cópias com cuidado.

## Checklist rápido (antes de atualizar o sistema)

1. [ ] Backup do banco (phpMyAdmin → Exportar).
2. [ ] Backup da pasta `uploads/`.
3. [ ] Anotar a versão atual (veja `VERSION.txt`).
4. [ ] Aplicar as migrations novas (ver `MIGRATIONS.md`).
5. [ ] Conferir o sistema funcionando (login, demandas, cidadãos).
