restic
Deduplicado, criptografado por padrão, multi-backend — instalação, uso real e integração com armazenamento imutável.
Nesta página
1. Características
- Deduplicação por blocos de conteúdo — mesmo arquivo grande alterado parcialmente só grava a diferença real
- Criptografia por padrão, sempre — não é opcional, não existe modo "sem senha"
- Multi-backend — local, SFTP, S3 e compatíveis (Backblaze B2, MinIO), Azure, Google Cloud, entre outros
- Snapshot independente — cada execução de backup se comporta como um "full" completo na hora de restaurar, mesmo sendo tecnicamente incremental por baixo
- Binário único, sem dependência de daemon rodando — diferencial real de simplicidade frente ao Bacula
2. Instalação
# Debian/Ubuntu
apt install restic
# Ou binário direto (versão mais recente que o repositório da distro)
wget https://github.com/restic/restic/releases/latest/download/restic_linux_amd64.bz2
bunzip2 restic_linux_amd64.bz2
chmod +x restic_linux_amd64
mv restic_linux_amd64 /usr/local/bin/restic
3. Inicializar repositório
# Repositório LOCAL (disco separado do servidor de produção)
export RESTIC_REPOSITORY="/mnt/backup-disk/repo-radius"
export RESTIC_PASSWORD="senha-de-criptografia-forte"
restic init
# Repositório S3-compatível (off-site)
export RESTIC_REPOSITORY="s3:https://s3.provedor.com/bucket-backup-isp"
export AWS_ACCESS_KEY_ID="sua-chave"
export AWS_SECRET_ACCESS_KEY="sua-chave-secreta"
export RESTIC_PASSWORD="senha-de-criptografia-forte"
restic init
# Repositório via SFTP
export RESTIC_REPOSITORY="sftp:usuario@servidor-remoto:/backups/repo-radius"
restic init
A senha de criptografia (RESTIC_PASSWORD) não fica gravada no repositório — perdê-la significa perder acesso permanente aos dados, mesmo com o repositório intacto. Guarde em cofre de senhas separado, nunca só no mesmo servidor que faz o backup.
4. Backup — configuração FreeRADIUS + banco de dados
# 1. Gera dump consistente do banco ANTES do backup de arquivo
mysqldump --single-transaction -u radius -p radius_db > /tmp/radius-dump.sql
# 2. Backup dos arquivos de configuração + do dump gerado
restic backup /etc/freeradius /tmp/radius-dump.sql \
--tag radius --tag producao
# 3. Limpa o dump temporário (já está dentro do snapshot)
rm /tmp/radius-dump.sql
5. Política de retenção
# Mantém 7 diários, 4 semanais, 12 mensais — remove o resto
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
# Ver o que seria removido, sem remover de fato (dry-run)
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --dry-run
Alinhe essa política com obrigações legais — ex: dado ligado a registro de conexão de ISP tem prazo mínimo de retenção pelo Marco Civil (ver LGPD e Backup), então "limpar" cedo demais pode virar problema jurídico, não só técnico.
6. Restauração e validação
# Listar snapshots disponíveis
restic snapshots
# Restaurar o mais recente pra um diretório de teste (nunca sobrescreva
# produção direto sem antes validar)
restic restore latest --target /tmp/restauracao-teste
# Validar integridade — comparar com o original
diff -r /etc/freeradius /tmp/restauracao-teste/etc/freeradius
# Checar consistência interna do repositório (detecta corrupção)
restic check
7. Script de backup e restore automático (cron)
#!/bin/bash
# /usr/local/bin/backup-radius-restic.sh
# crontab: 0 2 * * * /usr/local/bin/backup-radius-restic.sh
set -euo pipefail
export RESTIC_REPOSITORY="s3:https://s3.provedor.com/bucket-backup-isp"
export RESTIC_PASSWORD_FILE="/root/.restic-password"
export AWS_ACCESS_KEY_ID=$(cat /root/.aws-access-key)
export AWS_SECRET_ACCESS_KEY=$(cat /root/.aws-secret-key)
mysqldump --single-transaction -u radius -p"$(cat /root/.mysql-pass)" \
radius_db > /tmp/radius-dump.sql
restic backup /etc/freeradius /tmp/radius-dump.sql --tag radius
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
rm /tmp/radius-dump.sql
echo "$(date): backup concluído" >> /var/log/backup-radius.log
8. Integração com armazenamento imutável (S3 Object Lock)
restic em si não implementa imutabilidade — quem garante isso é o backend de armazenamento. Buckets S3-compatíveis com Object Lock (modo Compliance ou Governance) recusam exclusão/sobrescrita dos objetos até o prazo de retenção configurado expirar, mesmo com credencial de administrador da conta. Combinado com restic, isso entrega o "+1" da regra 3-2-1-1-0 sem precisar de mídia física separada.
9. Off-site adicional com rclone
Pra manter uma segunda cópia off-site (ex: em provedor de nuvem diferente do bucket principal), rclone sync replica o repositório restic inteiro entre dois destinos — útil como camada extra de redundância geográfica sem duplicar a lógica de backup em si.
10. Referências
- Documentação oficial restic (restic.readthedocs.io) — comandos, backends suportados, arquitetura de repositório
- Ver também: Regra 3-2-1(-1-0), BorgBackup (alternativa de mesmo perfil)
Conteúdo técnico independente. Nenhum trecho é cópia literal de fonte de terceiro.