一、bacula各配置文件的关系
在安装目录/etc/bacula下可以看到以下几个配置配置文件

官网各配置文件关联图
| 模块 | 配置文件 | 说明 |
|---|---|---|
| Console | bconsole.conf | 与 Director 接口的程序,控制Bacula。定义可连接的director连接信息; |
| Director | bacula-dir.conf | Bacula全局配置文件,调度和指挥所有 Bacula 操作; |
| File daemon | bacula-fd.conf | 客户端配置文件,定义客户端名称密码等; |
| Storage daemon | bacula-sd.conf | 存储配置文件,定义备份存储位置等; |
| File Autochanger | mtx-changer.conf | 自动更换支持读写磁带 |

二、bacula-dir.conf 配置说明
主要参数说明,更详细内容点击官方文档说明
| 名称 | 定义 |
|---|---|
| Director | 定义bacula名称及密码 |
| Catalog | 定义后台数据库有关备份的作业、客户机和文件的摘要信息等 |
| Jobdefs | 定义默认参数,可被其他JOB继承。如冲突以JOB为准 |
| Job | 定义了 Bacula 执行的备份或恢复特定客户端的工作 |
| Fileset | 定义备份哪些数据,不备份哪些数据 |
| Schedule | 定义 Bacula 作业何时计划执行 |
| Pool | 定义备份数据存放的一个卷,可粗俗理解为创建一个磁带或文件存放备份数据; |
| Client | 定义要备份客户端信息 |
| Storage | 定义数据的存储方式 |
| Messages | 定义发送日志报告和记录日志的位置 |
Director { //定义全局设置,每一个bacula-dir.conf文件只能定义一个Director
Name = "localhost.localdomain-dir"
//bconsole 控制台名称,在bconsole.conf定义,此处为引用
Messages = "Daemon"
//引用 Messages{}的 Name 值,用于传递Director产生的和Job无关的信息;
QueryFile = "/etc/bacula/query.sql"
//指定了这些表达式存放在哪个文件里,执行sql脚本存放的路径,部署bacula时./configure已配置
WorkingDirectory = "/opt/bacula/working"
//指定Director存放状态文件的目录,备份索引存放位置,部署bacula时./configure已配置
PidDirectory = "/var/run"
//指定进程 ID 文件存放目录,必选。一般在./configure 时已经指定,关闭Bacula的脚本需要使用Bacula的进程号,所以在PidDirectory 指定的目录中创建pid文件保存进程号,同时也有防止多个Bacula同时运行的功能;
MaximumConcurrentJobs = 20
//设置同时执行的最大任务数量,默认设置为 1。如果允许多个并行作业,卷的格式会变得更复杂,恢复操作会因为不同作业的块在卷上交替而变得更慢,为了避免这个问题可以给每个并发的作业分配不同卷,或者使用spooling技术,先暂时写到磁盘上的缓冲区,最后一次性写到卷上。
Password = "3FUiLAdgehttrwy54VWOEyMuyQZux8rtertrherthethrg45C"
//设置主控端密码,控制台连接时需要使用,在bconsole.conf定义,此处为引用(bconsole.conf里的Director资源里的Password);
}
Client { #定义需要备份的客户端。每个Job有且只有一个Client资源。每个需要备份服务器需要独立一个client定义
Name = "localhost.localdomain-fd"
//引用客户端bacula-fd.conf配置文件File Daemon的Name
Address = "localhost"
//客户端的计算机名,或者是一个IP地址,非本机备份客户端建议IP
FdPort = 9102
//引用客户端bacula-fd.conf配置文件File Daemon的FDport端口号,默认是9102;
Password = "OFSGu4ukJsmjQd74qLzxSKuPqDF5l1uxdhFcORbuoRca"
//客户端密码,用于与客户端连接验证,需与客户端配置文件bacula-fd.conf里第一个Director 里密码一致。File Daemon与Director建立链接时使用的密码。
Catalog = "MyCatalog"
//定义后台数据库,存储信息;
FileRetention = 5184000
//定义了文件信息在数据库的保存时间,如果AutoPrune为yes,bacula会自动清理,但是并不会删除备份数据;
JobRetention = 15552000
//定义了作业信息在数据库保留的时间,应该大于FileRetention指定的值;
AutoPrune = yes
//当达到指定的保持周期时,是否自动删除数据库中的记录,yes表示自动清除过期的Job
}
Job { #定义备份/恢复作业,并且关联每个作业都需要用到的Client、FileSet和Schedule资源
Name = "Backup-zabbix"
//定义作业名称
Type = "Backup"
//作业的类型(Backup、Restore、Verify和Admin)
Level = "Full"
//Level和Schedule是二选一的,一般Level会被Schedule覆盖,备份级别,Incremental(增量备份),Full(完全备份)、Differential(差异备份),如果第一次没有做完全备份,则先进行完全备份后在执行Incremental
Messages = "Standard"
//指定了这个作业使用的消息资源
Storage = "File1"
//指定备份数据的存储路径与介质,在后面Storage{}定义。
Pool = "zabbix"
//指定备份使用的pool属性,在后面的Pool逻辑段中进行定义。简单说备份目录里的备份文件,当归属同一个pool,就备份在同一个文件。多个作业都指向同一个pool时,文件都被备份到同一个文件里。如下图Vol-0001里面。

pool文件
Client = "zabbix-fd"
//指定要备份的客户端,"zabbix-fd"在Client逻辑段中进行定义
Fileset = "Full Set"
//指定要备份的客户端数据, "Full Set"在后面FileSet逻辑段中进行定义
Schedule = "WeeklyCycle"
//指定这个备份任务的执行时间策略, "WeeklyCycle"在后面的Schedule逻辑段中进行了定义
WriteBootstrap = "/opt/bacula/working/%c.bsr"
//指定备份的引导信息路径,恢复作业需引用到。
SpoolAttributes = yes
//高速共享设备(通常是磁鼓或者是磁带)将低速的独享设备模拟为高速,优化IO
Priority = 10
//优选级数值越低,说明优选级越高,范围1~1000
}
Storage { //Storage用来定义将客户端的数据备份到哪个存储设备上 ,通俗讲定义pool定义的文件Volume会被放在到哪个目录下。可以定义多个Storage。存储位置
Name = "File1"
//自定义名称,配置job的时候会用
SdPort = 9103
//指定存储端SD通信端口,查看存储配置文件bacula-sd.conf
Address = "192.168.3.7"
//storage存储位置的物理ip,注意如果sd和dir在同一台机器上,这里并不能写localhost或者127.0.0.1,因为这个地址会直接提供给客户端fd来进行备份还原操作
Password = "p0frjtsfdJjE9IfQoiBzKr/qcgQOO0kEQLUeBB1FMZ7c"
//存储端SD的密码,用于Director端与存储端SD的验证密码,这个值必须与存储端SD配置文件bacula-sd.conf中Director逻辑段密码相同
Device = "FileChgr1"
//指定数据备份的存储介质,必须与存储端的bacula-sd.conf配置文件中的“Device” 逻辑段的“Name”项名称相同
MediaType = "File1"
//指定存储介质的类别,必须与存储端SD的bacula-sd.conf配置文件中的“Device” 逻辑段的“Media Type”项名称相同
Autochanger = "File1"
//是否自动更换磁带
MaximumConcurrentJobs = 10
//同时可执行多少个任务
}
Catalog { //定义数据库资源,包括数据库名,登录用户名和密码。数据库保存了备份的文件列表和文件所属的卷名。通常情况只需要一个Catalog资源,但是也可以在Director规模很大的情况下定义多个Catalog资源。
Name = "MyCatalog"
//定义名称
Password = "bacula"
//数据库密码
User = "bacula"
//数据库用户
DbName = "bacula"
//数据库库名
}
Schedule { //备份任务调度策略,每个Job有且只有一个Schedule资源。备份计划
Name = "WeeklyCycle"
//标识,用于引用
//运行计划,每个Schedule可以有多个运行计划,每个运行计划都包括Level、Date-time-specification等,以下三个运行计划
Run = Level="Full" 1st sun at 23:05
//第一周的周日晚23:05分进行完全备份
Run = Level="Differential" 2nd-5th sun at 23:05
//第2~5周的周日晚23:05进行差异备份
Run = Level="Incremental" mon-sat at 23:05
//所有周一至周六晚23:05分进行增量备份
}
Fileset { //指定需要备份哪些数据,需要排除哪些数据等,可以指定多个FileSet
Name = "Catalog"
//自定义名字,引用标识符
Include {
//这里定义的文件目录是需要备份此目录下的所有文件
File = "/opt/bacula/working/bacula.sql"
//文件路径
Options {
//定义了一个Include的选项,包括对备份文件压缩、签名等。
Signature = "Md5"
//表示使用MD5签名
Compression = GZIP
//表示启用GZIP压缩
}
}
}
Messages {
Name = "Standard"
//定义名称,用于JOB作业引用
MailCommand = "/sbin/bsmtp -h localhost -f "(Bacula) <%r>" -s "Bacula: %t %e of %c %l" %r"
//设置发送邮件通知的指令
OperatorCommand = "/sbin/bsmtp -h localhost -f "(Bacula) <%r>" -s "Bacula: Intervention needed for %j" %r"
Mail = root@localhost = All, !Debug, !Saved, !Skipped
Append = /opt/bacula/log/bacula.log = All, !Debug, !Saved, !Skipped
//日志路径,日志类型
Console = All, !Debug, !Saved, !Skipped
Operator = root@localhost = Mount
Catalog = All, !Debug, !Saved
}
Console { //设置托盘监控相关参数,限定Console利用tray-monitor获得Director的状态信息
Name = "localhost.localdomain-mon"
Password = "H1Qihd6to4KR2F6rkqYNlDGZfV1ElAS0jgsucgtdDC1d"
//自动生成
CommandAcl = "status"
CommandAcl = ".status"
}

