Fileset Examples

Enterprise

Bacula Enterprise Only

This solution is only available for Bacula Enterprise. For subscription inquiries, please reach out to sales@baculasystems.com.

This section provides practical Fileset examples for common and advanced MongoDB deployments.

Getting Started with Filesets

Use this table to choose the best example as a starting point.

Which example should I start from?

If your environment is…

Start from this section

Why

Single MongoDB node, simple setup

Standalone with URI

Fastest baseline configuration.

Single MongoDB node, password/TLS handled outside URI

Standalone with Structured Parameters

Cleaner credential and TLS file handling.

Replica set with normal primary discovery

Replica Set with URI Seed List or Replica Set with Structured Parameters and TLS

Driver can route to writable primary automatically.

Replica set in controlled lab with one fixed node

Replica Set Direct Connection (Lab / Controlled Cases)

Explicit single-node targeting.

Sharded cluster through mongos

Sharded Cluster through mongos (URI) or Sharded Cluster through mongos (Structured Hosts)

Uses mongos entrypoint instead of direct shard members.

Lower-privilege data-only backup

Data-Only Lower-Privilege Backup

Disables users/roles capture with skip_security=yes.

Isolated disaster-recovery artifact

Isolated Disaster-Recovery Artifact

Includes admin metadata intentionally.

Scope tuning (db/collection include-exclude)

Backup Selection Examples

Shows realistic include/exclude combinations.

Operational diagnostics and performance investigations

Operational Debug and Telemetry

Uses debug, log, and stream_telemetry.

Centralized reusable configuration

Configuration File as Primary Source

Keeps long parameter sets in config_file.

Connection Examples

Standalone with URI

Standalone backup with URI mode
FileSet {
   Name = "FS-MongoDB-Standalone-URI"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin database=appdb"
   }
}

Standalone with Structured Parameters

Standalone backup with password_env
FileSet {
   Name = "FS-MongoDB-Standalone-Structured"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: host=mongo1.example.com:27017 username=backup password_env=MONGODB_BACKUP_PASSWORD authentication_database=admin database=appdb"
   }
}

Replica Set with URI Seed List

Replica-set backup (driver elects writable primary)
FileSet {
   Name = "FS-MongoDB-RS-URI"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://mongo1.example.com:27017,mongo2.example.com:27017,mongo3.example.com:27017/admin?replicaSet=rs0&authSource=admin database=appdb"
   }
}

Replica Set with Structured Parameters and TLS

Replica-set backup with TLS and password file
FileSet {
   Name = "FS-MongoDB-RS-TLS"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: host=mongo1.example.com:27017 host=mongo2.example.com:27017 host=mongo3.example.com:27017 replica_set=rs0 username=backup password_file=/opt/bacula/etc/mongodb.pass authentication_database=admin authentication_mechanism=SCRAM-SHA-256 tls=yes tls_ca_file=/opt/bacula/etc/mongodb-ca.pem database=appdb"
   }
}

Replica Set Direct Connection (Lab / Controlled Cases)

Direct connection to one replica-set node
FileSet {
   Name = "FS-MongoDB-RS-Direct"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: host=mongo-primary.example.com:27017 replica_set=rs0 direct_connection=yes username=backup password_file=/opt/bacula/etc/mongodb.pass authentication_database=admin database=appdb"
   }
}

Use direct_connection=yes only when you intentionally want a single target node. Normal production jobs should prefer seed-list discovery.

Sharded Cluster through mongos (URI)

Sharded backup through mongos URI
FileSet {
   Name = "FS-MongoDB-Sharded-URI"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongos1.example.com:27017/admin?authSource=admin database=appdb"
   }
}

Sharded Cluster through mongos (Structured Hosts)

Sharded backup through mongos with structured options
FileSet {
   Name = "FS-MongoDB-Sharded-Structured"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: host=mongos1.example.com:27017 host=mongos2.example.com:27017 username=backup password_file=/opt/bacula/etc/mongodb.pass authentication_database=admin database=appdb"
   }
}

Before running sharded jobs, stop the balancer and confirm it is not active.

TLS with MONGODB-X509

X.509 backup
FileSet {
   Name = "FS-MongoDB-X509"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: host=mongo1.example.com:27017 username=\"O=Bacula,OU=Backup,CN=bacula-mongodb-client\" authentication_database=$external authentication_mechanism=MONGODB-X509 tls=yes tls_ca_file=/opt/bacula/etc/mongodb-ca.pem tls_certificate_key_file=/opt/bacula/etc/bacula-mongodb-client.pem database=appdb"
   }
}

The escaped quotes around username keep the X.509 subject together as a single plugin option value inside the Bacula FileSet string.

Backup Selection Examples

Multiple Included Databases

Include two application databases
FileSet {
   Name = "FS-MongoDB-Select-MultiDB"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin database=appdb database=analytics"
   }
}

Include then Exclude Databases

Include appdb and analytics, then exclude analytics_tmp
FileSet {
   Name = "FS-MongoDB-Select-DBExclude"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin database=appdb database=analytics database_exclude=analytics_tmp"
   }
}

Collection Subset across Selected Databases

Capture only selected collections
FileSet {
   Name = "FS-MongoDB-Select-Collections"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin database=appdb collection=widgets collection=orders"
   }
}

Include then Exclude Collections

Keep app data, exclude temporary collections
FileSet {
   Name = "FS-MongoDB-Select-CollectionExclude"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin database=appdb collection=widgets collection=audits collection_exclude=audits_tmp collection_exclude=widgets_staging"
   }
}

Data-Only Lower-Privilege Backup

Skip user/role capture
FileSet {
   Name = "FS-MongoDB-DataOnly"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: host=mongo1.example.com:27017 username=appbackup password_file=/opt/bacula/etc/appbackup.pass authentication_database=appdb database=appdb skip_security=yes"
   }
}

Isolated Disaster-Recovery Artifact

Include admin only for isolated DR artifacts
FileSet {
   Name = "FS-MongoDB-Isolated-DR"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin include_admin=yes"
   }
}

Use this Fileset only for dedicated disaster-recovery planning. Restoring admin content into a live production target can overwrite administrative state.

Dry-Run Planning in JSON

Preflight-only planning output
FileSet {
   Name = "FS-MongoDB-DryRun"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin database=appdb dry_run=yes report_format=json"
   }
}

Common and Tuning Examples

Operational Debug and Telemetry

Enable extra diagnostics during investigations
FileSet {
   Name = "FS-MongoDB-Tuning-Debug"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: uri=mongodb://backup:secret@mongo1.example.com:27017/admin?authSource=admin database=appdb path=/opt/bacula/working log=/var/log/bacula/mongodb-plugin.log debug=2 stream_telemetry=yes abort_on_error=yes"
   }
}

Configuration File as Primary Source

Fileset line using config_file
FileSet {
   Name = "FS-MongoDB-ConfigFile"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: config_file=/opt/bacula/etc/mongodb.settings"
   }
}
/opt/bacula/etc/mongodb.settings
host=mongo1.example.com:27017
host=mongo2.example.com:27017
host=mongo3.example.com:27017
replica_set=rs0
username=backup
password_file=/opt/bacula/etc/mongodb.pass
authentication_database=admin
authentication_mechanism=SCRAM-SHA-256
tls=yes
tls_ca_file=/opt/bacula/etc/mongodb-ca.pem
database=appdb
database=analytics
collection_exclude=analytics_tmp
skip_security=no
debug=0
stream_telemetry=no

Configuration File plus Inline Overrides

Keep base connection in file, override job behavior inline
FileSet {
   Name = "FS-MongoDB-ConfigFile-Override"
   Include {
      Options { signature = MD5 }
      Plugin = "mongodb: config_file=/opt/bacula/etc/mongodb.settings database=appdb collection=widgets dry_run=yes report_format=json"
   }
}

The config_file content can include any MongoDB plugin parameter, including connection, backup selection, restore, common, and tuning options.

Go back to: Plugin Configuration.