TL;DR — Resumo Rápido
Guia BorgBackup: backups deduplicados, cifrados e comprimidos no Linux. Instale, automatize com systemd, repositórios SSH remotos, Borgmatic e recuperação.
BorgBackup (borg) é uma ferramenta de backup deduplicada, comprimida e cifrada para Linux que pode reduzir o armazenamento de backups em 50–90% comparado a backups completos tradicionais. Este guia cobre desde a instalação até a automação com Borgmatic, backups remotos por SSH e testes de recuperação de desastre.
Pré-requisitos
- Sistema Linux (Ubuntu 22.04+, Debian 12+, RHEL 9+ ou Fedora 38+).
- Acesso root ou sudo na máquina a ser copiada.
- Destino de backup: disco local, drive externo ou servidor remoto com acesso SSH.
- Para backups remotos: BorgBackup instalado tanto no cliente quanto no servidor de backup.
Por Que BorgBackup?
Ferramentas de backup tradicionais copiam arquivos sem modificações. O BorgBackup usa chunking definido por conteúdo — divide cada arquivo em blocos de comprimento variável, calcula o hash de cada bloco e armazena apenas os blocos que nunca foram vistos antes:
- Deduplicação — 10 backups diários de 100 GB podem usar apenas ~110 GB no total.
- Criptografia AES-256-CTR — Dados são cifrados antes de sair da máquina origem.
- MACs autenticados — BLAKE2b ou SHA-256 garantem que os backups não foram adulterados.
- Múltiplas opções de compressão —
lz4(rápido),zstd(equilibrado),lzma(tamanho mínimo). - Transporte SSH — Faça backup em qualquer servidor remoto sem daemon especial.
- Montagem FUSE — Navegue archives de backup como um sistema de arquivos normal.
Instalação
Debian / Ubuntu
sudo apt update && sudo apt install borgbackup -y
Fedora / RHEL / Rocky Linux
sudo dnf install borgbackup -y
Última versão via pip
pip install --user borgbackup
borg --version
Inicializar um Repositório
Um repositório BorgBackup é o contêiner de armazenamento que guarda todos os seus archives de backup.
Repositório local
borg init --encryption=repokey-blake2 /backup/borg-repo
Repositório remoto por SSH
borg init --encryption=repokey-blake2 borg@servidorbackup:/backup/borg-repo
Exportar a chave do repositório imediatamente
borg key export /backup/borg-repo ~/borg-repo-key.txt
Guarde borg-repo-key.txt e a senha em um local separado do repositório de backup — um gerenciador de senhas, USB offline ou cópia impressa. Perder ambos significa perda permanente de dados.
Comparativo de modos de criptografia
| Modo | Localização da chave | Caso de uso |
|---|---|---|
repokey-blake2 | Dentro do repositório | Mais fácil; recomendado para a maioria |
keyfile-blake2 | Somente no cliente | Máxima segurança; chave nunca sai do cliente |
none | N/A | Somente redes internas; sem criptografia |
Criar Backups
Archive básico
export BORG_PASSPHRASE='sua-senha-forte'
export BORG_REPO='/backup/borg-repo'
borg create \
--stats \
--progress \
--compression lz4 \
"$BORG_REPO::{hostname}-{now:%Y-%m-%dT%H:%M}" \
/etc /home /var/www /opt \
--exclude '*.log' \
--exclude '*.tmp' \
--exclude '/home/*/.cache' \
--exclude '/home/*/.local/share/Trash'
Opções de compressão
| Opção | Velocidade | Ratio | Ideal para |
|---|---|---|---|
lz4 | Mais rápida | Moderado | Backups automáticos diários |
zstd,3 | Rápida | Boa | Uso geral |
zstd,11 | Moderada | Excelente | Ambientes com pouco armazenamento |
lzma,6 | Lenta | Máxima | Arquivamento; acesso pouco frequente |
Listar e Montar Archives
Listar todos os archives do repositório
borg list /backup/borg-repo
Montar um archive para navegação FUSE
mkdir -p /mnt/borg-restaurar
borg mount /backup/borg-repo::webserver-2026-03-22T03:00 /mnt/borg-restaurar
# Navegue e copie arquivos normalmente
ls /mnt/borg-restaurar/home/usuario/
# Desmonte ao terminar
borg umount /mnt/borg-restaurar
Extrair Arquivos
Restauração de caminhos específicos
cd /tmp/restaurar
borg extract /backup/borg-repo::webserver-2026-03-22T03:00 \
home/usuario/documentos \
etc/nginx
Simulação (listar sem extrair)
borg extract --dry-run --list /backup/borg-repo::webserver-2026-03-22T03:00
Podar Archives Antigos
borg prune remove archives que não atendem mais à política de retenção. Execute após cada backup.
borg prune \
--keep-daily=7 \
--keep-weekly=4 \
--keep-monthly=6 \
--keep-yearly=2 \
--list \
/backup/borg-repo
Após a poda, execute a compactação para liberar espaço em disco:
borg compact /backup/borg-repo
Automação com Timer systemd
/etc/systemd/system/borg-backup.service
[Unit]
Description=Backup diário BorgBackup
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
User=root
Environment=BORG_PASSPHRASE=sua-senha-forte
Environment=BORG_REPO=/backup/borg-repo
ExecStart=/usr/bin/borg create --stats --compression lz4 \
$BORG_REPO::{hostname}-{now:%%Y-%%m-%%dT%%H:%%M} \
/etc /home /var /opt \
--exclude '*.log' --exclude '/home/*/.cache'
ExecStartPost=/usr/bin/borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 $BORG_REPO
ExecStartPost=/usr/bin/borg compact $BORG_REPO
/etc/systemd/system/borg-backup.timer
[Unit]
Description=Timer diário BorgBackup
[Timer]
OnCalendar=daily
RandomizedDelaySec=30min
Persistent=true
[Install]
WantedBy=timers.target
Ativar e iniciar
systemctl daemon-reload
systemctl enable --now borg-backup.timer
journalctl -u borg-backup.service --since today
Backups Remotos por SSH
Restringir a chave SSH no servidor de backup
Em ~/.ssh/authorized_keys do servidor de backup, adicione um comando forçado para que a chave só possa ser usada para borg:
command="borg serve --restrict-to-path /backup/borg-repo",restrict ssh-rsa AAAA...suachave...
A opção restrict desativa encaminhamento de porta, de agente e X11.
Configuração do cliente
export BORG_REPO='borg@servidorbackup:/backup/borg-repo'
export BORG_RSH='ssh -i /root/.ssh/borg_ed25519 -o StrictHostKeyChecking=yes'
borg create "$BORG_REPO::{hostname}-{now:%Y-%m-%dT%H:%M}" /etc /home
Borgmatic: Wrapper de Alto Nível
Instalação
pip install borgmatic
/etc/borgmatic/config.yaml
repositories:
- path: /backup/borg-repo
label: local
source_directories:
- /etc
- /home
- /var/www
exclude_patterns:
- '*.log'
- /home/*/.cache
encryption_passphrase: "sua-senha-forte"
compression: lz4
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
hooks:
on_error:
- echo "Backup falhou em $(date)" | mail -s "Erro Borg em $(hostname)" admin@exemplo.com
healthchecks:
ping_url: https://hc-ping.com/seu-uuid
Executar borgmatic manualmente
borgmatic --verbosity 1
Procedimento de Recuperação de Desastre
- Instale o BorgBackup no sistema substituto.
- Transfira o arquivo de chave exportado para o novo sistema.
- Defina as credenciais:
export BORG_PASSPHRASE='sua-senha' export BORG_REPO='borg@servidorbackup:/backup/borg-repo' - Liste os archives disponíveis:
borg list "$BORG_REPO" - Extraia o archive mais recente:
cd / borg extract "$BORG_REPO::webserver-2026-03-22T03:00" - Verifique a restauração antes de redirecionar o tráfego de produção.
Realize testes de restauração regularmente (mínimo trimestral). Um backup que nunca foi testado não é um backup confiável.
Comparativo: Borg vs Restic vs Duplicati vs rsync vs Timeshift
| Recurso | BorgBackup | Restic | Duplicati | rsync | Timeshift |
|---|---|---|---|---|---|
| Deduplicação | Sim | Sim | Não | Não | Sim (hard links) |
| Criptografia | AES-256 | AES-256 | AES-256 | Não (nativo) | Não |
| Compressão | lz4/zstd/lzma | zstd | Deflate | Não | Não |
| Backends remotos | SSH, BorgBase | S3, B2, SFTP, muitos | S3, FTP, WebDAV | SSH | Somente local |
| Interface gráfica | Não | Vorta (terceiro) | Sim (web) | Não | Sim |
| Ideal para | Servidores, DevOps | Flexibilidade multicloud | Usuários desktop | Espelhamento simples | Restauração desktop |
Resumo
- A deduplicação armazena apenas blocos únicos — 10 backups diários de 100 GB usam ~110 GB.
- Sempre exporte a chave do repositório e guarde-a separada dos backups.
- Use criptografia repokey-blake2 para proteção AES-256 autenticada.
- Pode com
borg prunee libere espaço comborg compactapós cada execução. - Automatize com timer systemd para agendamento confiável com logs no journald.
- Restrinja chaves SSH com
command="borg serve ..."noauthorized_keys. - Use Borgmatic para substituir scripts shell por configuração YAML mantenível.
- Teste restaurações trimestralmente — um backup nunca testado não é confiável.