Restic: Backup Eficiente com Deduplicação, Criptografia e Snapshots em Blobs

· 3 minutos de leitura
Restic: Backup Eficiente com Deduplicação, Criptografia e Snapshots em Blobs

Restic é uma ferramenta de backup moderna e segura, voltada para quem prefere linha de comando e deseja um controle mais granular e confiável sobre seus dados. Neste post, vamos explorar os fundamentos técnicos do Restic, seu funcionamento interno, as tecnologias por trás dele e exemplos reais de uso.


Arquitetura do Restic

Funcionamento orientado a snapshots

O Restic opera com um modelo de snapshots imutáveis, nos quais cada backup representa o estado completo de um diretório ou sistema de arquivos em um momento específico.

  • Snapshots são atômicos.
  • É possível restaurar um snapshot completo ou apenas arquivos específicos.

Conexão com armazenamentos de blob

Restic salva os dados em blobs (blocos deduplicados criptografados), sendo compatível com diversos tipos de armazenamento remoto ou local. Essa abordagem permite:

  • Eficiência no uso de espaço.
  • Independência da estrutura de arquivos original.
  • Operação segura e distribuída.

Backends Suportados

Provedores compatíveis

BackendTipoExemplo de uso
Amazon S3Nuvems3:s3.amazonaws.com/your-bucket
Azure BlobNuvemazure:container-name:/path
Google CloudNuvemgs:bucket-name:/path
Backblaze B2Nuvemb2:bucket-name:/path
SFTPRemotosftp:user@host:/backup
REST ServerLocal/remotorest:http://hostname:8000/
Diretório localLocal/mnt/backup

Comunicação com os backends

  • A maioria usa API HTTP/S com autenticação.
  • Armazenamentos locais são acessados diretamente via sistema de arquivos.

Tecnologias-Chave Implementadas

Deduplicação por chunking

Os dados são divididos em blocos (chunks) e armazenados com base no seu hash. Se o conteúdo de um chunk já existir no repositório, ele não será armazenado novamente.

Vantagens:

  • Minimiza o uso de espaço.
  • Detecta dados repetidos mesmo entre arquivos diferentes.

Esquema de deduplicação por chunking

[Arquivo A] → [chunk1][chunk2][chunk3]
[Arquivo B] →         [chunk2][chunk3][chunk4]

Armazenado: chunk1, chunk2, chunk3, chunk4

Backups incrementais automáticos

Após o primeiro backup completo, apenas os dados novos ou modificados são armazenados. Isso torna os backups subsequentes rápidos e leves.

Criptografia ponta-a-ponta

Todos os dados armazenados são criptografados com AES-256 e autenticados com HMAC-SHA-256, garantindo sigilo e integridade.

Snapshots imutáveis

Cada snapshot é uma versão independente e inalterável do estado dos dados. Isso permite restaurações precisas e auditoria completa do histórico de alterações.


Exemplos de Uso via CLI

Configuração mínima

É possível configurar variáveis de ambiente para simplificar os comandos:

export RESTIC_PASSWORD=senha-forte
export RESTIC_REPOSITORY=s3:s3.amazonaws.com/nome-do-bucket
export AWS_ACCESS_KEY_ID=SEU_ID
export AWS_SECRET_ACCESS_KEY=SUA_SENHA

Inicializar Repositório

export RESTIC_PASSWORD=supersegredo
restic -r /mnt/backup-repo init

Saída esperada:

created restic repository f6b6dfcf18 at /mnt/backup-repo
Please note that knowledge of your password is required to access the repository.

Realizar um Backup

restic -r /mnt/backup-repo backup /home/user/data

Saída esperada:

[0:00] 0 directories, 10 files, 0 B
[0:01] 100.00%  (10/10) 10 files 1.2 GiB, total 1.2 GiB
snapshot 6a9fd8e3 saved

Verificação de integridade

Restic possui o comando check, que valida a estrutura do repositório e os dados armazenados.

restic -r $RESTIC_REPOSITORY check
  • Verifica a integridade do repositório.
  • Detecta blocos corrompidos ou inconsistentes.

Listar Snapshots

restic -r /mnt/backup-repo snapshots

Saída esperada:

restic -r /mnt/backup-repo restore 6a9fd8e3 --target ./restore

Restaurar um Snapshot

restic -r /mnt/backup-repo restore 6a9fd8e3 --target ./restore

Saída esperada:

restoring <Snapshot 6a9fd8e3> to ./restore

Restaurar Arquivo Específico

restic -r /mnt/backup-repo restore 6a9fd8e3 \
  --include /home/user/data/report.pdf \
  --target ./restore

Visual Ajudando a Compreensão

Ciclo do Restic

[init] → [backup] → [snapshots] → [restore]

Tabela comparativa entre backends

ProvedorTipoSuporte NativoAutenticação
Amazon S3BlobSimAWS Key
Azure BlobBlobSimAzure Credentials
Google CloudBlobSimgcloud Auth
SFTPRemotoSimSSH Key ou Senha
LocalLocalSimSem autenticação

TL;DR

Restic é uma ferramenta de backup por linha de comando que combina deduplicação, backups incrementais, criptografia de ponta a ponta e snapshots imutáveis em um único utilitário simples e eficiente. Ele suporta diversos backends como S3, Azure, Google Cloud e repositórios locais, armazenando apenas os blocos de dados que realmente mudaram entre os backups.

Ideal para sysadmins e DevOps que precisam de backups confiáveis, seguros e com baixo consumo de espaço, sem depender de interfaces gráficas. É uma alternativa superior a scripts manuais com rsync, tar e gpg, especialmente em ambientes automatizados.