Todo mundo tem backup até tentar restaurar um. A pasta está vazia, o cron morreu em março, ou o arquivo está no mesmo disco que acabou de falhar. O restic resolve quase tudo isso: criptografa do seu lado, guarda cada dado uma vez só e torna a restauração de um único arquivo tão fácil quanto o backup do servidor inteiro.
Aqui está uma configuração em que confiaríamos de verdade, no Ubuntu ou Debian.
1. Instale o restic
apt update && apt install -y restic
restic self-update
Os pacotes da distribuição ficam para trás; o self-update baixa a versão atual.
2. Escolha onde fica o repositório
O repositório não pode ficar no servidor que você está protegendo. Duas escolhas comuns:
- Outro servidor via SFTP:
sftp:backup@203.0.113.20:/srv/restic/web1 - Storage de objetos compatível com S3:
s3:https://s3.example.com/my-bucket/web1
3. Guarde as credenciais
Mantenha tudo num único arquivo que só o root lê, para o timer e o seu shell usarem as mesmas configurações:
cat > /root/.restic-env <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.example.com/my-bucket/web1"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export AWS_ACCESS_KEY_ID="your-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret"
EOF
openssl rand -base64 32 > /root/.restic-pass
chmod 600 /root/.restic-env /root/.restic-pass
Agora copie o conteúdo de /root/.restic-pass para o seu gerenciador de senhas. Sem ele, os backups não podem ser descriptografados — nem por você, nem por ninguém.
4. Inicialize e rode o primeiro backup
source /root/.restic-env
restic init
restic backup /etc /home /root /srv /var/www \
--exclude-caches --exclude '/root/.cache'
restic snapshots
Ajuste os caminhos para onde seus dados realmente estão. Volumes Docker ficam em /var/lib/docker/volumes; dados de aplicação costumam estar em /srv ou /opt.
5. Bancos de dados: dump primeiro, backup depois
Não faça backup dos arquivos brutos de um banco em execução. Faça o dump logo antes do backup:
mkdir -p /var/backups/db
sudo -u postgres pg_dump -Fc mydb > /var/backups/db/mydb.dump
Adicione /var/backups/db aos caminhos do backup. Nosso guia de PostgreSQL fala mais sobre dumps.
6. Agende com systemd
Aqui um timer é melhor que o cron: registra no journal e recupera a execução se o servidor estava desligado na hora marcada.
# /etc/systemd/system/restic-backup.service
[Unit]
Description=restic backup
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'source /root/.restic-env && restic backup /etc /home /root /srv /var/www /var/backups/db --exclude-caches && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'
# /etc/systemd/system/restic-backup.timer
[Unit]
Description=Daily restic backup
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer
forget --prune mantém 7 snapshots diários, 4 semanais e 6 mensais e apaga o resto. Se você tem uma etapa de dump do banco, coloque-a numa linha ExecStartPre=.
7. Restaure alguma coisa de verdade
É este passo que transforma "temos backup" em fato. Traga um diretório de volta para uma pasta temporária e olhe:
source /root/.restic-env
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls -la /tmp/restore-test/etc/nginx
restic check
Faça isso uma vez agora e de novo a cada poucos meses. restic check verifica a estrutura do repositório; a restauração prova que os dados estão mesmo lá.
restic e Managed Backups
Eles não competem. Os Managed Backups criam todo dia um ponto de restauração do servidor inteiro, que você restaura pelo painel — a solução rápida depois de uma atualização que deu errado. Custam $2 por mês e vêm grátis em qualquer plano anual. O restic dá cópias por arquivo, externas, num storage que você controla, o que importa quando o problema é um arquivo apagado na terça passada ou quando você quer uma cópia totalmente fora da nossa infraestrutura.
Se você guarda dados sensíveis, combine isso com criptografia de disco completo, ou veja o caso de uso de armazenamento criptografado para ter seu próprio destino de backup. Um plano Micro basta para a maioria dos servidores pequenos e seus backups.
Comentários
Nenhum comentário ainda. Seja o primeiro.