#
BackupAlly
Framework backup-as-code para backups automatizados e seguros.
#
Visão Geral
BackupAlly é um framework backup-as-code desenvolvido em Rust, projetado para automatizar backups de bancos de dados e arquivos com segurança enterprise-grade e configuração declarativa.
| Aspecto |
Valor |
| Versão Atual |
0.35.0 |
| Linguagem |
Rust |
| Licença |
Proprietária |
| Status |
Production-ready |
#
Objetivos do Projeto
#
Objetivo Principal
Fornecer uma solução de backup que seja:
- Declarativa: Configuração como código (TOML)
- Segura: Criptografia end-to-end por padrão
- Flexível: Suporte a múltiplos drivers e storages
- Automatizada: Agendamento inteligente com condições
- Observável: Logs estruturados e métricas
#
Objetivos Específicos
#
Simplicidade Operacional
- Instalação em um comando
- Configuração sem curva de aprendizado íngreme
- Hot-reload de configurações sem downtime
#
Segurança por Padrão
- Criptografia RSA-4096 + AES-256-GCM em todos os backups
- Secrets nunca expostos em logs ou configurações
- Key fingerprinting para disaster recovery
#
Eficiência de Recursos
- Cada run é um arquivo completo e autocontido — restore de um arquivo só
- Empacotamento em streaming: nenhum arquivo passa inteiro pela memória
- Compressão Zstd (padrão) ou Gzip
#
Flexibilidade de Integração
- Múltiplos drivers de banco de dados
- Múltiplos backends de storage
- API MCP para integração com assistentes de IA
#
Hipótese de Solução
#
Problema
Soluções de backup existentes apresentam:
- Complexidade: Configuração complexa e pouco intuitiva
- Vendor lock-in: Dependência de um único storage provider
- Segurança opcional: Criptografia como feature adicional
- Monitoramento limitado: Difícil integração com observabilidade
#
Solução Proposta
BackupAlly resolve esses problemas através de:
#
Arquitetura Modular
┌─────────────────────────────────────────────────────┐
│ CLI / MCP │
├─────────────────────────────────────────────────────┤
│ Core Engine │
│ ┌─────────┐ ┌──────────┐ ┌─────────────────┐ │
│ │Scheduler│→ │TaskManager│→ │ Executor │ │
│ └─────────┘ └──────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────┤
│ Pipeline │
│ ┌─────────┐ ┌──────────┐ ┌─────────────────┐ │
│ │Collector│→ │ Packer │→ │ Notification │ │
│ └─────────┘ └──────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────┤
│ Drivers │ Storage │
│ ┌────────────────┐ │ ┌─────────────────────┐ │
│ │MySQL, Postgres │ │ │ Local, S3, B2, MinIO│ │
│ │MongoDB, SQLite │ │ │ │ │
│ │ClickHouse │ │ │ │ │
│ └────────────────┘ │ └─────────────────────┘ │
├─────────────────────────────────────────────────────┤
├─────────────────────────────────────────────────────┤
│ Security Layer │
│ RSA-4096 + AES-256-GCM + Secrets + TLS Pinning │
│ SPKI pin verification + Anti-replay + NTP check │
└─────────────────────────────────────────────────────┘
#
Configuração Declarativa
# Backup como código - versionável, auditável, reproduzível
[task]
id = "mysql-prod"
schedule = "0 2 * * *"
[target]
kind = "database"
driver = "mysql"
password = "${secret:mysql_password}" # Nunca em plaintext
[[storage]]
driver = "s3"
retention = "daily 7, weekly 4, monthly 6"
#
Segurança por Design
| Camada |
Implementação |
| Transporte |
TLS 1.3 + SPKI pinning (v0.10.0) |
| Dados em repouso |
AES-256-GCM |
| Chaves |
RSA-4096 |
| Secrets |
Encrypted store local |
| Anti-replay |
Nonce store + timestamp validation (v0.10.0) |
| Message signing |
RSA-SHA256 PKCS#1 v1.5 (v0.10.0) |
| Auditoria |
Logs estruturados |
#
Multi-Storage
Backups enviados simultaneamente para múltiplos destinos:
Backup → Storage 1 (Local) → Retenção 7 dias
→ Storage 2 (S3) → Retenção 30 dias
→ Storage 3 (B2 Archive) → Retenção 1 ano
#
Validação da Hipótese
| Métrica |
Alvo |
Status |
| Tempo de configuração |
< 5 min |
✅ Atingido |
| Overhead de criptografia |
< 10% |
✅ Atingido |
| Restore autocontido (um arquivo, sem cadeia) |
Sempre |
✅ Atingido |
| Suporte multi-storage |
≥ 4 |
✅ Atingido (Local, S3, B2, MinIO) |
| Drivers de BD |
≥ 5 |
✅ Atingido (MySQL, PG, Mongo, CH, SQLite) |
#
Versionamento
#
Política de Versões
BackupAlly segue Semantic Versioning:
MAJOR.MINOR.PATCH[-SUFIXO]
MAJOR: Breaking changes na API ou configuração
MINOR: Novas funcionalidades compatíveis
PATCH: Correções de bugs
SUFIXO: rc (release candidate), beta
#
Histórico de Versões
| Versão |
Data |
Mudanças |
| 0.35.0 |
2026-09 |
storage download, restore --from-storage, history --task/artifacts[], [[storage]] local só com path, fix de retenção por nome com espaço |
| 0.34.1 |
2026-09 |
quick -t s3/b2 recusa em vez de fingir sucesso |
| 0.34.0 |
2026-09 |
--capabilities, quick --credentials-ref, artefato descrito no envelope do quick |
| 0.33.0 |
2026-09 |
Histórico e áreas de trabalho fora do /tmp; task list -o json com objeto rico |
| 0.32.0 |
2026-09 |
quick --series/--retention-days |
| 0.31.0 |
2026-09 |
storage list/info por banco, secret set --stdin |
#
v0.23-0.30 - Operação e prevenção
| Versão |
Data |
Mudanças |
| 0.30.0 |
2026-09 |
Túnel SSH com ciclo de vida: um túnel por run, fechado ao fim; MySQL tunela; accept-new; validate --deep pelo túnel |
| 0.29.0 |
2026-09 |
Cifra em blocos, restore e upload em streaming; formatos antigos seguem lidos |
| 0.28.0 |
2026-09 |
Restore de fileset devolve os arquivos (árvore real); restore usa a chave do config |
| 0.27.2 |
2026-09 |
self-update -o json no envelope 2.0; pubkey de release publicada no CDN |
| 0.27.1 |
2026-08 |
SyslogIdentifier na unit systemd |
| 0.27.0 |
2026-08 |
measure: tamanho na origem × backup × crescimento |
| 0.26.0 |
2026-08 |
Cadastro de storages (storage registry, storage_refs); [guard]: self-update adia com backup rodando, limites de load/memória/disco |
| 0.25.0 |
2026-08 |
Envelope schema_version: "2.0"; histórico em /var/lib/backupally/logs; cleanup --residues |
| 0.24.x |
2026-08 |
Upload ao B2 sem teto de 60s, upload em partes acima de 100 MB, verificação de large file |
| 0.23.0 |
2026-08 |
task validate --deep; scheduler recarrega tasks do disco |
#
v0.17-0.22 - Confiabilidade e diagnóstico
| Versão |
Data |
Mudanças |
| 0.22.0 |
2026-08 |
Literais booleanos em when, condição desconhecida avisa, verificador não reprova por formato desconhecido |
| 0.21.0 |
2026-08 |
id do [[storage]] passa a valer nos logs |
| 0.20.0 |
2026-08 |
timezone na task; horários com fuso explícito |
| 0.19.0 |
2026-08 |
Status partial, itens falhos registrados, histórico finalizado, exit code ≠ 0 |
| 0.18.0 |
2026-08 |
Retry com backoff no upload e na verificação; fix do self-update com binário immutable |
| 0.17.0 |
2026-08 |
Container em várias redes, docker:<container>/<rede>, roles/extensions/triggers do PostgreSQL |
#
v0.11-0.16 - Restore, criptografia e consistência
| Versão |
Data |
Mudanças |
| 0.16.0 |
2026-08 |
Dump consistente do PostgreSQL (snapshot único) |
| 0.15.0 |
2026-08 |
Restore de ClickHouse e SQLite |
| 0.14.x |
2026-07 |
Restore de backup criptografado, retenção remota, driver S3 |
| 0.13.x |
2026-06 |
Envelope CCS em toda a CLI (-o json|yaml), streaming NDJSON |
| 0.11-0.12 |
2026-05 |
self-update com verificação de assinatura Ed25519 |
#
v0.10.x - Security Hardening + Multi-arch
| Versão |
Data |
Mudanças |
| 0.10.0 |
2026-04 |
Multi-arch static musl, retention fix, TLS pinning, HTTP centralizado, CDN multi-arch |
#
v0.9.x - Estabilização
| Versão |
Data |
Mudanças |
| 0.9.9 |
2026-02 |
Instalação em /opt/backupally, GitOps fix |
| 0.9.8 |
2026-02 |
Fixes de volume mounting, MCP resources/prompts |
| 0.9.7 |
2026-02 |
Melhorias no scheduler |
| 0.9.6 |
2026-01 |
Fixes de concorrência |
#
v0.8.x - Security Features
| Versão |
Data |
Mudanças |
| 0.8.0 |
2026-01 |
Key fingerprinting, encrypted secrets, installation wizard |
#
v0.7.x - Modular Tasks
| Versão |
Data |
Mudanças |
| 0.7.0 |
2026-01 |
Arquitetura modular de tasks, hot-reload, CLI de gerenciamento |
#
v0.6.x - Storage Backends
| Versão |
Data |
Mudanças |
| 0.6.0 |
2025-12 |
Suporte a Backblaze B2, MinIO |
#
v0.5.x - Database Drivers
| Versão |
Data |
Mudanças |
| 0.5.0 |
2025-11 |
Drivers MongoDB, ClickHouse, SQLite |
#
Roadmap
#
v1.0.0 - GA (General Availability)
#
v1.1.0 - Enterprise Features
#
Compatibilidade
#
Breaking Changes Policy
- Breaking changes apenas em versões MAJOR
- Deprecation warnings por 2 versões MINOR antes de remoção
- Migration guides para todas as mudanças breaking
#
Compatibilidade de Configuração
| Versão Config |
Suportada até |
| v1 (atual) |
v2.0.0 |
#
Requisitos
#
Sistema
| Componente |
Mínimo |
Recomendado |
| CPU |
2 cores |
4+ cores |
| RAM |
2 GB |
4+ GB |
| Disco |
20 GB |
100+ GB |
| OS |
Linux 5.4+ |
Ubuntu 22.04+ |
#
Dependências Runtime
- Nenhuma (binário statically linked com musl desde v0.10.0)
- Compatível com qualquer Linux: Ubuntu 18.04+, Debian 10+, CentOS 7+, Alpine
| Arch |
ZIP |
Compatível |
| x86_64 |
backupally-x86_64.zip |
Servidores Intel/AMD |
| aarch64 |
backupally-aarch64.zip |
AWS Graviton, Oracle Ampere, Raspberry Pi |
#
Dependências de Build (desenvolvimento)
- Rust 1.75+
- Docker (para cross-compilation via
cross)
- OpenSSL dev headers (build nativo extrai TLS pins)
#
Suporte
#
Canais
| Canal |
Uso |
| GitHub Issues |
Bugs e feature requests |
| Documentação |
Guias e referência |
| MCP Server |
Integração com Claude |
#
SLA
| Severidade |
Tempo de Resposta |
| Crítico (perda de dados) |
4 horas |
| Alto (backup não funciona) |
24 horas |
| Médio (funcionalidade degradada) |
72 horas |
| Baixo (melhorias) |
Best effort |
#
Próximos Passos
By
Borlot.com.br on 04/09/2026