Framework cdylib Rust 100% PodHeitor que reemplaza el stub C metaplugin tradicional + objetos Bacula enlazados estáticamente. Permite escribir plugins File Daemon en Rust seguro sin copiar ni una línea de código AGPLv3 de Bacula — declaraciones C ABI independientes, dispatch tipado de los 21 pFuncs callbacks, builders ergonómicos para FileSet/StatBuilder/JobMessage, ACL/xattr y RestoreObject. La base sobre la que se construyen los 21 plugins PodHeitor.
Qué hace
- Sin vendoring de código AGPL — Declaraciones extern C independientes en bacula-fd-abi (sin headers Bacula); compatibilidad ABI verificada por harness mock C que dlopen del .so.
- MetaPlugin trait + Event enum tipado — 21 pFuncs callbacks decodificados en un Event enum exhaustivo; state machine de fases (Setup/Backup/Restore/Endjob) garantiza orden correcto de los hooks.
- Builders fluentes + Messenger — FileSet::submit_via, StatBuilder/FileType, Decision (accurate-mode), Messenger (info/warn/error/saved/skipped) con macro jmsg!. La cdylib publica el bpContext durante toda llamada pFunc.
- ACL/xattr + RestoreObject + Cancel — Phase 2.5 entrega Xacl + XaclOp tipados (handle_xacl funcional, ya no stub) y RestoreObject accessor; cancel state corto-circuita pluginIO/startBackupFile/startRestoreFile con bRC::Cancel.
Diferenciales
| Recurso | Bacula Community solo | Bacula Enterprise / Veeam | PodHeitor |
|---|---|---|---|
| Capacidad disponible en Bacula Community | No | Sí ($$) | Sí, sin licencia adicional |
| Implementación | — | C++ / Perl propietario | Rust memory-safe |
| Observabilidad nativa | Limitada | Limitada | Prometheus + dashboard en vivo |
| Costo | Gratis (sin soporte) | $$$$ | ≥ 50% más barato que Enterprise/Veeam |
Compatibilidad
- 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
Instalación 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.
¿Listo para cambiar?
Tráiganos su propuesta de renovación o contratación de Bacula Enterprise, Veeam, Commvault o NetBackup. Garantizamos al menos 50% de descuento con más funcionalidades.
Heitor Faria · heitor@opentechs.lat · +1 789 726-1749 · +55 61 98268-4220 (WhatsApp)
Disponível em:
Português (Portugués, Brasil)
English (Inglés)
Español