marcocosta10000 a5a34548db docs: update backup automation documentation with SSH key auth details
- Clarify SFTP uses SSH key authentication instead of password
- Generalize destination server user description to be more flexible
- Improve SSH key setup instructions with clearer step-by-step guidance
- Update test command output message for better clarity
- Simplify section headers and remove redundant logs section
2026-09-18 07:45:49 -03:00
2026-09-17 20:44:26 -03:00
2026-09-17 20:44:26 -03:00

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 (autenticação por chave SSH)
  • Limpeza automática de backups antigos (retenção configurável)

Pré-requisitos

No servidor de origem:

apt-get install mariadb-client openssh-client

No servidor de destino: SSH ativo na porta 22 e usuário com permissão de escrita no diretório de destino.

Configuração

1. Chave SSH

Gere um par de chaves no servidor de origem e copie a chave pública para o servidor de destino:

ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub marco@170.231.184.32

Teste a conexão (não deve pedir senha):

ssh -i ~/.ssh/id_ed25519 marco@170.231.184.32 "echo CONEXÃO OK"

2. Arquivo .env

cp .env.example .env
nano .env

Conteúdo do .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:

chmod 600 .env

3. Teste manual

./backup_automatico.sh

Agendamento via cron (execução diária às 01:00)

1. Editar o crontab do root

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

crontab -l

Deve exibir a linha adicionada.

4. Verificar se o serviço cron está ativo

systemctl status cron

Se estiver inativo, ative e habilite no boot:

systemctl enable --now cron

5. Logs

  • 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:

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
S
Description
No description provided
Readme
32 KiB
Languages
Shell 100%