docs(readme): add setup and configuration guide for backup automation

Add comprehensive documentation covering SSH key generation, environment
variable configuration, cron scheduling, and log file management for the
automated backup system on Debian 12.
This commit is contained in:
2026-09-17 21:00:09 -03:00
parent 9e5a161d8e
commit ac66eb5e9a
+141
View File
@@ -0,0 +1,141 @@
# Backup Automático — Servidor Debian 12
Backup automatizado de diretórios e bancos de dados MariaDB com envio via SFTP para servidor remoto.
## O que faz
- Dump de todos os bancos de dados MariaDB (exceto internos do sistema)
- Cópia dos diretórios `/var/www`, `/etc/nginx/sites-available` e `/opt`
- Compactação em `.tar.gz` com nome datado
- Envio via SFTP para servidor remoto
- Limpeza automática de backups antigos (retenção configurável)
## Pré-requisitos
No servidor de origem:
```bash
apt-get install mariadb-client openssh-client
```
No servidor de destino: SSH ativo na porta 22 e usuário `marco` com permissão de escrita em `/home/marco/backups`.
## Configuração
### 1. Chave SSH (sem senha no script)
No servidor de origem:
```bash
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub marco@170.231.184.32
```
Teste:
```bash
ssh -i ~/.ssh/id_ed25519 marco@170.231.184.32 "echo OK"
```
### 2. Arquivo `.env`
```bash
cp .env.example .env
nano .env
```
Conteúdo do `.env`:
```env
MYSQL_USER="root"
MYSQL_PASS="senha_do_mariadb"
SFTP_HOST="170.231.184.32"
SFTP_USER="marco"
SFTP_DIR="/home/marco/backups"
```
Proteja o arquivo:
```bash
chmod 600 .env
```
### 3. Teste manual
```bash
./backup_automatico.sh
```
## Agendamento via cron (execução diária às 01:00)
### 1. Editar o crontab do root
```bash
crontab -e
```
Na primeira vez, escolha o editor (recomende `nano` — opção 1).
### 2. Adicionar a entrada
```
0 1 * * * /home/marco/BackupAutomatico/backup_automatico.sh >> /var/log/backup_cron.log 2>&1
```
| Campo | Valor | Descrição |
|---|---|---|
| `0` | minuto | no minuto 0 |
| `1` | hora | às 01:00 |
| `*` | dia do mês | todos os dias |
| `*` | mês | todos os meses |
| `*` | dia da semana | todos os dias |
Salve e saia do editor (no `nano`: `Ctrl+O`, `Enter`, `Ctrl+X`).
### 3. Verificar se o cron está registrado
```bash
crontab -l
```
Deve exibir a linha adicionada.
### 4. Verificar se o serviço cron está ativo
```bash
systemctl status cron
```
Se estiver inativo, ative e habilite no boot:
```bash
systemctl enable --now cron
```
### 5. Logs do cron
- **Logs da execução do backup:** `$LOG_FILE` (padrão: `/var/log/backup_server.log`)
- **Logs do próprio cron:** `/var/log/backup_cron.log`
- **Logs do sistema (syslog):** `journalctl -u cron`
Para acompanhar o log do cron em tempo real:
```bash
tail -f /var/log/backup_cron.log
```
## Variáveis de configuração
| Variável | Descrição | Padrão |
|---|---|---|
| `MYSQL_USER` | Usuário do MariaDB | `root` |
| `MYSQL_PASS` | Senha do MariaDB | *(obrigatório)* |
| `SFTP_HOST` | IP/host do servidor de destino | *(obrigatório)* |
| `SFTP_USER` | Usuário SSH no servidor de destino | *(obrigatório)* |
| `SFTP_DIR` | Diretório de destino no servidor remoto | *(obrigatório)* |
| `LOCAL_RETENTION` | Quantos backups locais manter (0 = desativado) | `3` |
| `LOG_FILE` | Caminho do arquivo de log | `/var/log/backup_server.log` |
## Logs
Os logs do script ficam em `$LOG_FILE`. Os logs do cron ficam em `/var/log/backup_cron.log`.