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ãolz4 (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

  1. Instale o BorgBackup no sistema substituto.
  2. Transfira o arquivo de chave exportado para o novo sistema.
  3. Defina as credenciais:
    export BORG_PASSPHRASE='sua-senha'
    export BORG_REPO='borg@servidorbackup:/backup/borg-repo'
  4. Liste os archives disponíveis:
    borg list "$BORG_REPO"
  5. Extraia o archive mais recente:
    cd /
    borg extract "$BORG_REPO::webserver-2026-03-22T03:00"
  6. 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 prune e libere espaço com borg compact após cada execução.
  • Automatize com timer systemd para agendamento confiável com logs no journald.
  • Restrinja chaves SSH com command="borg serve ..." no authorized_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.

Artigos Relacionados