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
Backend | Tipo | Exemplo de uso |
---|---|---|
Amazon S3 | Nuvem | s3:s3.amazonaws.com/your-bucket |
Azure Blob | Nuvem | azure:container-name:/path |
Google Cloud | Nuvem | gs:bucket-name:/path |
Backblaze B2 | Nuvem | b2:bucket-name:/path |
SFTP | Remoto | sftp:user@host:/backup |
REST Server | Local/remoto | rest:http://hostname:8000/ |
Diretório local | Local | /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
Provedor | Tipo | Suporte Nativo | Autenticação |
---|---|---|---|
Amazon S3 | Blob | Sim | AWS Key |
Azure Blob | Blob | Sim | Azure Credentials |
Google Cloud | Blob | Sim | gcloud Auth |
SFTP | Remoto | Sim | SSH Key ou Senha |
Local | Local | Sim | Sem 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.