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:

  1. Declarativa: Configuração como código (TOML)
  2. Segura: Criptografia end-to-end por padrão
  3. Flexível: Suporte a múltiplos drivers e storages
  4. Automatizada: Agendamento inteligente com condições
  5. 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:

  1. Complexidade: Configuração complexa e pouco intuitiva
  2. Vendor lock-in: Dependência de um único storage provider
  3. Segurança opcional: Criptografia como feature adicional
  4. 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

v0.31-0.35 - Ponte com integrações (Atual)

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)

  • Web UI para monitoramento
  • Kubernetes operator
  • Métricas Prometheus
  • Documentação completa

v1.1.0 - Enterprise Features

  • Multi-region replication
  • Continuous Data Protection (CDP)
  • Binary diff para incrementais
  • Azure Blob e Google Cloud Storage

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

Plataformas Suportadas

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