bacula服务端配置地址:
https://blog.csdn.net/weixin_42572352/article/details/105686788
配置Bacula备份系统:
主机名与操作系统名称 | 应用角色 |
---|---|
baculaServer——Centos7.4 | Director、SD、Console |
baculaClient——Centos7.4 | FD |
– | – |
配置一个bacula备份系统,其实就是对Director端文件bacula-dir.conf、SD配置文件bacula-sd.conf、 FD配置文件bacula-fd.conf以及Console端配置文件bconsole.conf进行配置的过程。
根据上面的部署情况:将Director、SD、Console端集中在一台服务器上也就是上图的:bacula server
将FD端部署在bacula Client
配置如下:
1/针对***Console***端配置:配置文件名bconsole.conf (注意、注意在bacula server服务端进行设置)
本博主配置文件在:/opt/bacula/etc/bconsole.conf
Director {
#控制端名称,在下面bacula-dir.conf和bacula-sd.conf
#文件中会陆续的被引用
Name = server-dir
#控制端服务端口
DIRport = 9101
#控制端服务器IP地址
address = 192.168.88.132
#控制端密码文件
Password = “yZnwKl2uRHK9SHaRfKMKtaZ32PoB71UtNxFV/qj3X26a”
}
以上参数解释:
Name #控制端名称,在下面的bacula-dir.conf和bacula-sd.conf,在文件中会被引用
DIRport #控制端服务器端口
address #控制端服务器IP地址
Password #控制端密码文件
2/针对Director端配置:配置文件名bacula-dir.conf (注意、注意在bacula Server服务端进行配置)
本博主配置文件在:
/opt/bacula/etc/bacula-dir.conf
此文件是bacula的核心配置文件,这个文件非常复杂,共分为10个逻辑段,分别是:
Director:定义全局设置
Catalog:定义后台数据库
Jobdefs:定义默认执行任务
Job: 自定义一个备份或者恢复任务
Fileset: 定义备份那些数据,不备份那些数据
Schedule:定义备份时间策略
Pool: 定义供Job使用的池属性
Client: 定义要备份的主机地址
Storage: 定义数据存储方式
Messages: 定义发送日志报告和记录日志的位置
逻辑段1,配置代码:
#定义bacula的全局配置
Director {
指定主控端名称,默认,计算机名-dir。
Name = server-dir
定义Director的监听端口
DIRport = 9101
#指定一个目录和文件的路径
QueryFile = “/opt/bacula/etc/query.sql”
#指定工作目录,目录必须存在,一般在./configure时已经指定
Working Directory = “/opt/bacula/working”
#指定进程ID文件存放目录,一般在./configure时已经指定
Pid Directory = “/var/run”
** #定义一次能处理的最大并发数**
Maximum Concurrent Jobs = 20
#验证密码,这个密码必须与bconsole.conf文件中对应的Director逻辑段密码相同
Password = “yZnwKl2uRHK9SHaRfKMKtaZ32PoB71UtNxFV/qj3X26a”
#定义日志输出方式,“Daemon“在下面的Messages逻辑段中进行定义
Messages = Daemon
}
以上参数挑几个重点来解释下:
Director:定义bacula的全局配置
DIRport:定义Director的监听端口
Maximum Concurrent Jobs:定义一次处理的最大并发数
Password:验证密码,这个密码必须与bconsole.conf文件中对应的Director逻辑段密码相同
Messages:定义日志输出方式,“Daemon”在下面的Messages逻辑段中进行了定义
————————————————————————————————————————————————————————
逻辑段2,配置代码:
Catalog {
Name = MyCatalog
dbname = “bacula”; dbuser = “bacula”; dbpassword = “”
}
以上参数解释如下:
Catalog:逻辑段用来定义关于日志和数据库设定
dbname:指定库名、用户名和密码
—————————————————————————————————————————————————————————
逻辑段3,配置代码:
JobDefs {
Name = “DefaultJob”
Type = Backup
Level = Incremental
Client = client-fd
FileSet = “Full Set”
Schedule = “WeeklyCycle”
Storage = File1
Messages = Standard
Pool = File
SpoolAttributes = yes
Priority = 10
Write Bootstrap = “/opt/bacula/working/%c.bsr”
}
以上参数解释如下:
Name =“DefaultJob” #指定 Job{}名称
Type =Backup #Job 类型,定义备份作业或还原作业。取值有 Backup、Restore、Verify 和 Admin。
#Level =Incremental #备份类型,当 type 参数为备份作业时,取值有 Full、Incremental 和 Differential;还原作业不需要设置此选项;当 type 参数为 Verify 作业时,取值有 InitCatalog、Catalog、VolumeToCatalog 和 DiskToCatalog。
Client = saas-fd #引用 Client{}的 Name 值,也就是选择需要备份的客户端
Fileset = “Full Set” #引用 FlieSet{}的 Name 值,也就是选择客户端需要备份的目录及文件。
Schedule = “schedule” #引用 Schedule{}的 Name 值,设置作业执行的时间周期,可选。如果没有指定,此任务必须手动执行。
Storage = saas-sd #引用 Storage{}的 Name 值,选择执行 Job 时的存储端。
Messages =Standard #引用 Messages{}的 Name 值
Pool = Default #引用 Pool{}的 Name 值
Write Bootstrap= “/usr/local/bacula/working/Client1.bsr” #Type=Backup 当执行备份作业是,将作业记录写入到一个引导文件。此参数只用于Job 类型为Backup 时,此时必选。
—————————————————————————————————————————————————————————
逻辑段4,配置代码如下:
Job { #定义一个备份任务
Name = “Client1” #备份任务名称
client = dbfd #指定要备份的客户端主机,dbfd咋后面Client逻辑段中进行定义
Level = Incremental
#定义备份的级别,Incremental,为增量备份,Level的取值可为Full(完全备份)、Incremental(增量备份)和Differential(差异备份),
如果第一次没做完全备份,则先进行完全备份后在执行Incremental
Type = Backup #定义Job的类型,backup为备份任务,可选的类型还有restore和verify等
FileSet = dbfs #指定要备份的就客户端数据,dbfs在后面Fileset逻辑段中进行定义
Schedule = dbscd #指定这个备份任务的执行时间策略,dbscd在后面的schedule逻辑段中进行定义
storage = dbsd #指定备份数据的存储路径与介质,dbsd在后面的storage逻辑段中进行定义
Messages = Standard
Pool = dbpool #指定备份使用的pool属性,“dbpool”在后面的pool逻辑段中进行定义
Write Bootstrap = “/opt/bacula/var/bacula/working/Client2.bsr” #指定备份的引导信息路径
}
Job { #定义一个名为Client的差异备份的报告
Name = “Client”
Type = Backup
Fileset = dbfs
Schedule = dbscd
Storage = dbsd
Messages = Standard
Pool = dbpool
Client = dbfd
Level = Differential #指定备份级别为差异备份
Write Bootstrap = “/opt/bacula/var/bacula/working/Client1.bsr”
}
Job { #定义一个名为BackupCatalog的完全备份任务
Name = “BackupCatalog”
Type = Backup
Level = Full #指定备份级别为完全备份
Client = dbfd
FileSet=“dbfs”
Schedule = “dbscd”
Pool = dbpool
Storage = dbsd
Messages = Standard
RunBeforeJob = “/opt/bacula/etc/make_catalog_backup bacula bacula”
RunAfterJob = “/opt/bacula/etc/delete_catalog_backup”
Write Bootstrap = “/opt/bacula/working/BackupCatalog.bsr”
}
Job { #定义一个还原任务
Name = “RestoreFiles”
Type = Restore #定义Job的类型为“Restore”,即恢复数据
Client=dbfd
Storage = File1
FileSet=dbfs
Pool = dbpool
Messages = Standard
Where = /tmp/bacula-restores #指定默认恢复数据到此路径下
}
—————————————————————————————————————————————————————————
逻辑段5:配置代码如下
Fileset { #定义一个名为dbfs的备份资源,也就是指定需要备份那些数据,需要排除那些数据等,可以指定多个Fileset
Name = dbfs
Include {
Options {
signature = MD5;
Compression=GZIP;
}
File = /cws3 #指定客户端FD需要备份的文件目录
}
Exclude { #通过Exclude 排除不需要备份的文件或目录,可根据具体情况修改
File = /opt/bacula/var/bacula/working
File = /tmp
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}
—————————————————————————————————————————————————————————
逻辑段6:配置如下
Schedule { #定义一个名为dbscd的备份任务调度策略
#指定Schedule{}名称
Name = dbscd
#指定覆盖Job{}默认的参数及执行作业的时间周期。
Run = Full 1st sun at 23:05 #第一周的星期日晚23:05分进行完全备份
Run = Differential 2nd-5th sun at 23:05 #第2~5周的星期日晚23:05进行差异备份
Run = Incremental mon-sat at 23:05 #所有星期一至星期六晚23:05分进行增量备份
}
Fileset {
Name = “Catalog”
Include {
Options {
signature = MD5
}
File = /opt/bacula/var/bacula/working/bacula.sql
}
}
—————————————————————————————————————————————————————————
逻辑段7:配置如下
#定义供Job任务使用的池属性信息,例如,设定备份文件过期时间
#是否覆盖过期的备份数据、是否自动清除过期备份等
Pool {
Name = dbpool
Pool Type = Backup
**#重复使用**
Recycle = yes
**#标识自动清除过期备份文件**
AutoPrune = yes
**#指定备份文件保留的时间**
Volume Retention = 7 days
**#命名格式,这个设定格式会产生的命名文件为:db-2010-04-18-id139**
Label Format = "db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}"
#设置最多保存多少个备份文件
Maximum Volumes = 7
**#表示可以使用最近过期的备份文件来存储新备份**
Recycle Current Volume = yes
**#表示每次执行备份任务创建一个备份文件**
Maximum Volume Jobs = 1
}
—————————————————————————————————————————————————————————
逻辑端8:配置如下
Client { #Client 用来定义备份拿个客户端FD的数据
Name = dbfd #Client的名称,可以在前面的Job中调用
Address = 192.168.1.2 #需要备份客户端FD主机的IP地址
FDPort = 9102 #与客户端通信的端口
Catalog = MyCatalog #使用哪个数据库存储信息:MyCatalog在后面的MyCatalog逻辑段中进行定义
Password = “ouDao0SGXx/F+Tx4YygkK4so01/ieqGJIkQ5DMsTQh6t”
#Director端与客户端FD的验证密码,这个值必须与客户端FD配置文件bacula-fd.conf中密码相同
File Retention = 30 days #指定保存在数据库中的记录多久循环一次,这里是30天,只影响数据库中的记录,不影响备份文件
Job Retention = 6 months
#指定Job的保持周期,应该大于File Retention指定的值当达到指定的保持周期时,是否自动删除数据库中的记录
AutoPrune = yes #yes 表示自动清除过期的Job
}
Client {
Name = dbfd
Address = 192.168.1.1
FDPort = 9102
Catalog = MyCatalog
Password = “ouDao0SGXx/F+Tx4YygkK4so01/ieqGJIkQ5DMsTQh6t”
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}
—————————————————————————————————————————————————————————
逻辑端9:配置代码如下
Storage { #Storage用来定义将客户端的数据备份到拿个存储设备上
Name = dbsd
Address = 192.168.1.1 #指定存储端SD的IP地址
SDPort = 9103 #指定存储端SD通信的端口
Password = “” #Director端与存储端SD的验证密码,这个值必须与存储端SD配置文件bacula-sd.conf中Director逻辑段密码相同
Device = dbdev #指定数据备份的存储介质,必须与存储端(192.168.1.1)的bacula-sd.conf配置文件中的"Device"逻辑段的"Name"项名称相同
Media Type = File #指定存储介质的类别,必须与存储端SD(这里是192.168.1.1)的bacula-sd.conf配置文件中的"Device"逻辑段的"Media Type"项名称相同
}
—————————————————————————————————————————————————————————
逻辑段10:配置代码如下:
Messages {
#Messages逻辑段用来设定Director端如何保存日志,以及日志的保存格式,可以将日志信息发送到管理员邮箱,前提是必须开启sendmail服务
Name = Standard
mailcommand = “/usr/sbin/bsmtp -h localhost -f “(Bacula) <%r>” -s “Bacula: %t %e of %c %l” %r”
operatorcommand = “/usr/sbin/bsmtp -h localhost -f “(Bacula) <%r>” -s “Bacula: Intervention needed for %j” %r”
mail = dba.liang@qq.com = all, !skipped
operator = dba2liang@qq.com = mount
console = all, !skipped, !saves
append = “/opt/bacula/log/bacula.log” = all, !skipped #定义bacula的运行日志
append = “/opt/bacula/log/bacula.err.log” = error,warning,fatal #定义bacula的错误日志
catalog = all
}
Messages {
#定义了一个名为Daemon的Messages逻辑段,"Daemon"已经在前面进行了引用
Name = Daemon
mailcommand = “/usr/sbin/bsmtp -h localhost -f “(Bacula) <%r>” -s “Bacula daemon message” %r”
mail = dba2liang@qq.com = all, !skipped
console = all, !skipped, !saved
append = “/opt/bacula/log/bacula_demo.log” = all, !skipped
}
Console {
#限定Console利用tray-monitor获得Director的状态信息
Name = f10-64-build-mon
password = “”
Command = status, .status
}
—————————————————————————————————————————————————————————