Framework cdylib Rust 100% PodHeitor que substitui o stub C metaplugin tradicional + objetos Bacula linkados estaticamente. Permite escrever plugins File Daemon em Rust seguro sem copiar uma linha de código AGPLv3 do Bacula — declarações C ABI independentes, dispatch tipado dos 21 pFuncs callbacks, builders ergonômicos para FileSet/StatBuilder/JobMessage, ACL/xattr e RestoreObject. É a base sobre a qual todos os 21 plugins PodHeitor são construídos.
O que faz
- Sem vendoring de código AGPL — Declarações extern C independentes em bacula-fd-abi (sem headers Bacula); compatibilidade ABI verificada por harness mock C que dlopen do .so.
- MetaPlugin trait + Event enum tipado — 21 pFuncs callbacks decodificados em um Event enum exaustivo; state machine de fases (Setup/Backup/Restore/Endjob) garante ordem correta dos hooks.
- Builders fluentes + Messenger — FileSet::submit_via, StatBuilder/FileType, Decision (accurate-mode), Messenger (info/warn/error/saved/skipped) com macro jmsg!. Cdylib publica o bpContext durante toda chamada pFunc.
- ACL/xattr + RestoreObject + Cancel — Phase 2.5 entrega Xacl + XaclOp tipados (handle_xacl funcional, não stub) e RestoreObject acessor; cancel state curto-circuita pluginIO/startBackupFile/startRestoreFile com bRC::Cancel.
Diferenciais
| Recurso | Bacula Community sozinho | Bacula Enterprise / Veeam | PodHeitor |
|---|---|---|---|
| Recurso ativo no Bacula Community | Não | Sim ($$) | Sim, sem licença extra |
| Implementação | — | C++ / Perl proprietário | Rust memory-safe |
| Observabilidade nativa | Limitada | Limitada | Prometheus + dashboard ao vivo |
| Custo | Grátis (sem suporte) | $$$$ | ≥ 50% mais barato que Enterprise/Veeam |
Compatibilidade
- Bacula Community 15.0.3 (validação Phase 2.9 contra bacula-fd real)
- Rust 1.75+ + compilador C (somente para o harness mock; produção é cdylib puro Rust)
- Linux x86_64 (alvo primário); demais arquiteturas conforme cdylib do Rust
- Em produção como base de todos os 15 plugins PodHeitor já publicados
Instalação rápida
Não é um plugin Bacula instalável diretamente — é um framework. Adicione bacula-fd-abi e metaplugin-rs como dependências de path no seu Cargo.toml e implemente o trait MetaPlugin. Veja plugin-hello e plugin-fileset-demo como referência mínima.
Pronto para mudar?
Traga sua proposta de renovação ou contratação do Bacula Enterprise, Veeam, Commvault ou NetBackup. Garantimos no mínimo 50% de desconto, com mais funcionalidades.
Heitor Faria · [email protected] · +1 789 726-1749 · +55 61 98268-4220 (WhatsApp)