Skip to content

Architecture & components

NGBackup is a modern, Rust-native data-protection platform: an all-new codebase written 100% in Rust with zero lines of C, memory-safe by construction, with significantly improved performance and far more features than legacy backup tools. It ships under its own brand-neutral backup-* programs, a single remote control plane, database-backed configuration, token-based enrollment (no clear-text passwords on disk), active/standby high availability, and a friendlier toolset.

A working installation is made of a few small services that talk to each other over the network. You don’t have to run them on the same machine — that separation is exactly what lets NGBackup scale from one server to thousands.

Architecture and data flow

ComponentProgramDefault portWhat it does
Directorbackup-dir9101The brain. Schedules jobs, applies policies, and coordinates the other services.
Storage Daemonbackup-sd9103Reads and writes backup data to disk, S3/object, NFS or tape — with global deduplication, immutability and encryption.
File Daemonbackup-fd9102The lightweight agent on each protected machine; streams its data to the Storage Daemon.
CatalogPostgreSQLThe database that records every file, job and volume, so restores are fast.
Consolebackup-consoleThe command-line interface to run and watch jobs.
Web consoleWeb ConsoleThe dark-mode web UI: dashboards, policy designer, restore explorer and a Ctrl+K command palette.

One job, three services. A backup flows like this: the Director starts the job → the File Daemon reads the data → the Storage Daemon deduplicates, encrypts and writes it → the Catalog records what happened. Restores run the same path in reverse.

Everything installs under /opt/backup/ by default:

PathContents
/opt/backup/bin/All programs (backup-dir, backup-sd, backup-fd, backup-console, …)
/opt/backup/etc/Configuration files (backup-dir.conf, backup-sd.conf, backup-fd.conf, backup-console.conf)
/opt/backup/plugins/File Daemon plugins (override with --plugin-dir)

The File Daemon can also run without a config file — fully flag-driven, ideal for automated and container deployments:

Terminal window
backup-fd --fd-address 127.0.0.1 --fd-port 9102 \
--sd-address 127.0.0.1 --sd-port 9103
ProgramUse it to…Bacula equivalent
backup-clidrive the Director from scripts
backup-copycopy/migrate volumes between poolsbcopy
backup-extractextract files straight from a volumebextract
backup-lslist the contents of a volumebls
backup-scanrebuild the catalog from volumesbscan
backup-dbcheckcheck and repair the catalogdbcheck
backup-dirjson · backup-sdjson · backup-fdjson · backup-consjsondump any config as JSON

Workload-specific protection (databases, hypervisors, Microsoft 365, …) is delivered by File Daemon plugins in /opt/backup/plugins/. Enable one in a Content, passing options as key=value pairs:

Content {
Name = "proxmox-cluster"
Include {
Options { Plugin = "proxmox: pve_host=10.0.0.10 vm=* backup_type=full" }
}
}

Each plugin documents its own backup and restore parameters — including Instant Recovery and cross-hypervisor restore (V2V). See Plugins.

Moving from Bacula? NGBackup ships a migration tool that imports an existing Bacula catalog, volumes and configuration, so you can migrate at your own pace, mixed deployments included. See Migrating from Bacula.

Cloud and object storage targets

Connecting clients behind NAT or a firewall