Files
calypso/docs/alpha/components/bacula/BACULA-CONFIGURATION.md
2026-01-04 19:42:58 +07:00

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