6.8 KiB
6.8 KiB
Bacula Configuration Guide
For Calypso Backup Appliance
Version: 1.0
Target OS: Ubuntu Server 24.04 LTS
1. Overview
This guide covers advanced configuration of Bacula for integration with Calypso backup appliance, including storage pools, schedules, clients, and job definitions.
2. Configuration Files
2.1 Main Configuration Files
- Director:
/opt/bacula/etc/bacula-dir.conf - Storage Daemon:
/opt/bacula/etc/bacula-sd.conf - File Daemon:
/opt/bacula/etc/bacula-fd.conf - Console:
/opt/bacula/etc/bconsole.conf
2.2 Configuration File Structure
Each configuration file contains:
- Resource definitions (Director, Storage, Client, etc.)
- Directives (settings and options)
- Comments (documentation)
3. Director Configuration
3.1 Director Resource
Director {
Name = bacula-dir
DIRport = 9101
QueryFile = "/opt/bacula/scripts/query.sql"
WorkingDirectory = "/opt/bacula/working"
PidDirectory = "/opt/bacula/working"
Maximum Concurrent Jobs = 10
Password = "director-password"
Messages = Daemon
}
3.2 Catalog Resource
Catalog {
Name = MyCatalog
dbname = "bacula"
dbuser = "bacula"
dbpassword = "bacula-db-password"
dbaddress = "localhost"
dbport = 5432
}
3.3 Storage Resource
Storage {
Name = FileStorage
Address = localhost
SDPort = 9103
Password = "storage-password"
Device = FileStorage
Media Type = File
}
3.4 Pool Resource
Pool {
Name = DefaultPool
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 50G
Maximum Volumes = 100
Label Format = "Volume-"
}
3.5 Schedule Resource
Schedule {
Name = WeeklyCycle
Run = Full 1st sun at 2:05
Run = Differential 2nd-5th sun at 2:05
Run = Incremental mon-sat at 2:05
}
3.6 Client Resource
Client {
Name = client-fd
Address = client.example.com
FDPort = 9102
Catalog = MyCatalog
Password = "client-password"
File Retention = 60 days
Job Retention = 6 months
AutoPrune = yes
}
3.7 Job Resource
Job {
Name = "BackupClient"
Type = Backup
Client = client-fd
FileSet = "Full Set"
Schedule = WeeklyCycle
Storage = FileStorage
Pool = DefaultPool
Messages = Standard
Priority = 10
Write Bootstrap = "/opt/bacula/working/BackupClient.bsr"
}
3.8 FileSet Resource
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /home
File = /etc
File = /var
}
Exclude {
File = /tmp
File = /proc
File = /sys
File = /.snapshot
}
}
4. Storage Daemon Configuration
4.1 Storage Resource
Storage {
Name = FileStorage
WorkingDirectory = "/opt/bacula/working"
Pid Directory = "/opt/bacula/working"
Maximum Concurrent Jobs = 20
}
4.2 Director Resource (in SD)
Director {
Name = bacula-dir
Password = "storage-password"
}
4.3 Device Resource (Disk)
Device {
Name = FileStorage
Media Type = File
Archive Device = /srv/calypso/backups
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
Maximum Concurrent Jobs = 5
}
4.4 Device Resource (Tape)
Device {
Name = TapeDrive-0
Media Type = LTO-8
Archive Device = /dev/nst0
AutomaticMount = yes
AlwaysOpen = no
RemovableMedia = yes
RandomAccess = no
MaximumFileSize = 10GB
MaximumBlockSize = 524288
AutoChanger = yes
ChangerDevice = /dev/sg0
ChangerCommand = "/opt/bacula/scripts/mtx-changer %c %o %S %a %d"
}
5. File Daemon Configuration
5.1 Director Resource (in FD)
Director {
Name = bacula-dir
Password = "client-password"
}
5.2 FileDaemon Resource
FileDaemon {
Name = client-fd
FDport = 9102
WorkingDirectory = /opt/bacula/working
Pid Directory = /opt/bacula/working
Maximum Concurrent Jobs = 2
Plugin Directory = /opt/bacula/plugins
}
5.3 Messages Resource
Messages {
Name = Standard
director = bacula-dir = all, !skipped, !restored
}
6. Integration with Calypso Storage
6.1 Using Calypso ZFS Datasets
Configure Bacula to use ZFS datasets managed by Calypso:
Device {
Name = ZFSStorage
Media Type = File
Archive Device = /srv/calypso/backups/zfs-pool
LabelMedia = yes
Random Access = yes
AutomaticMount = yes
}
6.2 Using Calypso Storage Repositories
Device {
Name = CalypsoRepo
Media Type = File
Archive Device = /srv/calypso/backups/repository-1
LabelMedia = yes
Random Access = yes
}
7. Advanced Configuration
7.1 Compression
Enable compression in FileSet:
FileSet {
Name = "Compressed Set"
Include {
Options {
compression = GZIP9
signature = MD5
}
File = /data
}
}
7.2 Deduplication
For ZFS with deduplication, use aligned plugin:
FileSet {
Name = "Deduplicated Set"
Include {
Options {
plugin = "aligned"
}
File = /data
}
}
7.3 Encryption
Enable encryption (requires encryption plugin):
FileSet {
Name = "Encrypted Set"
Include {
Options {
encryption = AES256
}
File = /sensitive-data
}
}
8. Job Scheduling
8.1 Daily Incremental
Schedule {
Name = DailyIncremental
Run = Incremental daily at 02:00
}
8.2 Weekly Full
Schedule {
Name = WeeklyFull
Run = Full weekly on Sunday at 02:00
}
8.3 Monthly Archive
Schedule {
Name = MonthlyArchive
Run = Full 1st sun at 01:00
Run = Incremental 2nd-4th sun at 01:00
}
9. Testing Configuration
9.1 Test Director
sudo /opt/bacula/bin/bacula-dir -t -u bacula -g bacula
9.2 Test Storage Daemon
sudo /opt/bacula/bin/bacula-sd -t -u bacula -g bacula
9.3 Test File Daemon
sudo /opt/bacula/bin/bacula-fd -t -u bacula -g bacula
9.4 Reload Configuration
After testing, reload:
sudo -u bacula /opt/bacula/bin/bconsole
* reload
* quit
Or restart services:
sudo systemctl restart bacula-dir
sudo systemctl restart bacula-sd
10. Monitoring and Maintenance
10.1 Job Status
sudo -u bacula /opt/bacula/bin/bconsole
* status director
* show jobs
* messages
10.2 Volume Management
* list volumes
* label
* delete volume=Volume-001
10.3 Database Maintenance
# Vacuum database
sudo -u postgres psql -d bacula -c "VACUUM ANALYZE;"
# Check database size
sudo -u postgres psql -d bacula -c "SELECT pg_size_pretty(pg_database_size('bacula'));"
References
- Bacula Main Manual: https://www.bacula.org/documentation/
- Configuration Examples:
/opt/bacula/etc/(after installation)