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 · heitor@opentechs.lat · +1 789 726-1749 · +55 61 98268-4220 (WhatsApp)

Solicitar Cotação

Disponível em: pt-brPortuguêsenEnglish (Inglês)esEspañol (Espanhol)