100% PodHeitor-authored Rust cdylib framework replacing the legacy C metaplugin stub + statically-linked Bacula objects. Lets you write File Daemon plugins in safe Rust without copying a single line of AGPLv3 Bacula code — independent C-ABI declarations, typed dispatch of all 21 pFuncs callbacks, ergonomic builders for FileSet/StatBuilder/JobMessage, ACL/xattr and RestoreObject. The substrate every PodHeitor plugin is built on.

What it does

  • No AGPL code vendoring — Independent extern C declarations in bacula-fd-abi (no Bacula headers); ABI compatibility verified by a mock C harness that dlopens the .so.
  • Typed MetaPlugin trait + Event enum — All 21 pFuncs callbacks decoded into an exhaustive Event enum; phase state machine (Setup/Backup/Restore/Endjob) enforces hook ordering.
  • Fluent builders + Messenger — FileSet::submit_via, StatBuilder/FileType, Decision (accurate-mode), Messenger (info/warn/error/saved/skipped) with jmsg! macro. The cdylib publishes the live bpContext for the duration of every pFunc call.
  • ACL/xattr + RestoreObject + Cancel — Phase 2.5 ships typed Xacl + XaclOp (functional handle_xacl, no longer a stub) and a RestoreObject accessor; cancel state short-circuits pluginIO/startBackupFile/startRestoreFile with bRC::Cancel.

Differentiators

Feature Bacula Community alone Bacula Enterprise / Veeam PodHeitor
Capability available on Bacula Community No Yes ($$) Yes, no extra license
Implementation Proprietary C++ / Perl Memory-safe Rust
Native observability Limited Limited Prometheus + live dashboard
Cost Free (no support) $$$$ ≥ 50% cheaper than Enterprise/Veeam

Compatibility

  • 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

Quick install

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.

Ready to switch?

Bring your Bacula Enterprise, Veeam, Commvault or NetBackup renewal or contract proposal. We guarantee at least a 50% discount with more features.

Heitor Faria · heitor@opentechs.lat · +1 789 726-1749 · +55 61 98268-4220 (WhatsApp)

Request a Quote

Disponível em: pt-brPortuguês (Portuguese (Brazil))enEnglishesEspañol (Spanish)