#
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.9.8 |
| 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
- Deduplicação FastCDC para economia de espaço
- Backups incrementais para economia de tempo
- Compressão adaptativa (Zstd, Gzip, LZ4)
#
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 │
└─────────────────────────────────────────────────────┘
#
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 |
| Dados em repouso |
AES-256-GCM |
| Chaves |
RSA-4096 |
| Secrets |
Encrypted store local |
| 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 |
| Economia com dedup |
> 30% |
✅ 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
#
v0.9.x - Estabilização (Atual)
| Versão |
Data |
Mudanças |
| 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
- OpenSSL 1.1+ ou LibreSSL
- glibc 2.31+
#
Dependências de Build (desenvolvimento)
- Rust 1.75+
- OpenSSL dev headers
#
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