444 lines
6.8 KiB
Markdown
444 lines
6.8 KiB
Markdown
# 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
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
Catalog {
|
|
Name = MyCatalog
|
|
dbname = "bacula"
|
|
dbuser = "bacula"
|
|
dbpassword = "bacula-db-password"
|
|
dbaddress = "localhost"
|
|
dbport = 5432
|
|
}
|
|
```
|
|
|
|
### 3.3 Storage Resource
|
|
|
|
```conf
|
|
Storage {
|
|
Name = FileStorage
|
|
Address = localhost
|
|
SDPort = 9103
|
|
Password = "storage-password"
|
|
Device = FileStorage
|
|
Media Type = File
|
|
}
|
|
```
|
|
|
|
### 3.4 Pool Resource
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
Storage {
|
|
Name = FileStorage
|
|
WorkingDirectory = "/opt/bacula/working"
|
|
Pid Directory = "/opt/bacula/working"
|
|
Maximum Concurrent Jobs = 20
|
|
}
|
|
```
|
|
|
|
### 4.2 Director Resource (in SD)
|
|
|
|
```conf
|
|
Director {
|
|
Name = bacula-dir
|
|
Password = "storage-password"
|
|
}
|
|
```
|
|
|
|
### 4.3 Device Resource (Disk)
|
|
|
|
```conf
|
|
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)
|
|
|
|
```conf
|
|
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)
|
|
|
|
```conf
|
|
Director {
|
|
Name = bacula-dir
|
|
Password = "client-password"
|
|
}
|
|
```
|
|
|
|
### 5.2 FileDaemon Resource
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
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:
|
|
|
|
```conf
|
|
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
|
|
|
|
```conf
|
|
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:
|
|
|
|
```conf
|
|
FileSet {
|
|
Name = "Compressed Set"
|
|
Include {
|
|
Options {
|
|
compression = GZIP9
|
|
signature = MD5
|
|
}
|
|
File = /data
|
|
}
|
|
}
|
|
```
|
|
|
|
### 7.2 Deduplication
|
|
|
|
For ZFS with deduplication, use aligned plugin:
|
|
|
|
```conf
|
|
FileSet {
|
|
Name = "Deduplicated Set"
|
|
Include {
|
|
Options {
|
|
plugin = "aligned"
|
|
}
|
|
File = /data
|
|
}
|
|
}
|
|
```
|
|
|
|
### 7.3 Encryption
|
|
|
|
Enable encryption (requires encryption plugin):
|
|
|
|
```conf
|
|
FileSet {
|
|
Name = "Encrypted Set"
|
|
Include {
|
|
Options {
|
|
encryption = AES256
|
|
}
|
|
File = /sensitive-data
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Job Scheduling
|
|
|
|
### 8.1 Daily Incremental
|
|
|
|
```conf
|
|
Schedule {
|
|
Name = DailyIncremental
|
|
Run = Incremental daily at 02:00
|
|
}
|
|
```
|
|
|
|
### 8.2 Weekly Full
|
|
|
|
```conf
|
|
Schedule {
|
|
Name = WeeklyFull
|
|
Run = Full weekly on Sunday at 02:00
|
|
}
|
|
```
|
|
|
|
### 8.3 Monthly Archive
|
|
|
|
```conf
|
|
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
|
|
|
|
```bash
|
|
sudo /opt/bacula/bin/bacula-dir -t -u bacula -g bacula
|
|
```
|
|
|
|
### 9.2 Test Storage Daemon
|
|
|
|
```bash
|
|
sudo /opt/bacula/bin/bacula-sd -t -u bacula -g bacula
|
|
```
|
|
|
|
### 9.3 Test File Daemon
|
|
|
|
```bash
|
|
sudo /opt/bacula/bin/bacula-fd -t -u bacula -g bacula
|
|
```
|
|
|
|
### 9.4 Reload Configuration
|
|
|
|
After testing, reload:
|
|
|
|
```bash
|
|
sudo -u bacula /opt/bacula/bin/bconsole
|
|
* reload
|
|
* quit
|
|
```
|
|
|
|
Or restart services:
|
|
|
|
```bash
|
|
sudo systemctl restart bacula-dir
|
|
sudo systemctl restart bacula-sd
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Monitoring and Maintenance
|
|
|
|
### 10.1 Job Status
|
|
|
|
```bash
|
|
sudo -u bacula /opt/bacula/bin/bconsole
|
|
* status director
|
|
* show jobs
|
|
* messages
|
|
```
|
|
|
|
### 10.2 Volume Management
|
|
|
|
```bash
|
|
* list volumes
|
|
* label
|
|
* delete volume=Volume-001
|
|
```
|
|
|
|
### 10.3 Database Maintenance
|
|
|
|
```bash
|
|
# 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)
|
|
|