配置bacula备份系统,其实就是对Director端配置文件bacula-dir.conf、SD配置文件bacula-sd.conf、客户端FD配置文件bacula-fd.conf以及Console端配置文件bconsole.conf进行配置的过程。
         根据上面的安装部署,将Director端、SD、Console端集中在一台服务器baculaServer(即192.168.12.188)上,而将客户端FD部署在baculaClient(即192.168.12.189)服务器上,下面详细讲述配置过程。

一、配置bacula的Console端
 Console端的配置文件是bconsole.conf,这个配置文件很简单,配置完的文件如下:

  1. Director {  
  2.   Name = f10-64-build-dir  #控制端名称,在下面的bacula-dir.conf和bacula-sd.conf  
  3. #文件中会陆续的被引用  
  4.   DIRport = 9101    #控制端服务端口  
  5.   address = 192.168.12.188  #控制端服务器IP地址  
  6.   Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"    
  7. #控制端密码文件   


二、配置bacula的Director端
bacula-dir.conf是Director端的配置文件,也是bacula的核心配置文件,这个文件非常复杂,共分为10个逻辑段,分别是:

  1.  Director,定义全局设置  
  2.  Catalog,定义后台数据库  
  3.  Jobdefs,定义默认执行任务  
  4.  Job,自定义一个备份或者恢复任务  
  5.  Fileset,定义备份哪些数据,不备份哪些数据  
  6.  Schedule,定义备份时间策略  
  7.  Pool,定义供Job使用的池属性  
  8.  Client,定义要备份的主机地址  
  9.  Storage,定义数据的存储方式  
  10.  Messages,定义发送日志报告和记录日志的位置 

代码清单1是一个已经配置好的文件,其中,“#”号后面的内容为注释。

代码清单1 已经设置好的Director端的配置文件

  1. Director {                            #定义bacula的全局配置  
  2.   Name = f10-64-build-dir  
  3.   DIRport = 9101                 #定义Director的监听端口  
  4.   QueryFile = "/opt/bacula/etc/query.sql" 
  5.   WorkingDirectory = "/opt/bacula/var/bacula/working" 
  6.   PidDirectory = "/var/run" 
  7.   Maximum Concurrent Jobs = 1    #定义一次能处理的最大并发数  
  8.  
  9.       #验证密码,这个密码必须与bconsole.conf文件中对应的Director逻辑段密码相同  
  10.   Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"      
  11.  
  12.       #定义日志输出方式,“Daemon”在下面的Messages逻辑段中进行了定义  
  13.   Messages = Daemon    
  14. }  
  15.  
  16. Job {        #自定义一个备份任务  
  17.   Name = "Client1"  #备份任务名称  
  18.   Client = dbfd   #指定要备份的客户端主机,“dbfd”在后面Client逻辑段中  
  19. #进行定义  
  20.   Level = Incremental      #定义备份的级别,Incremental为增量备份。Level的取值#可为Full(完全备份)、Incremental(增量备份)和Differential(差异备份),如果第一#次没做完全备份,则先进行完全备份后再执行Incremental  
  21.   Type = Backup                  #定义Job的类型,“backup”为备份任务,可选  
  22. #的类型还有restore和verify等  
  23.   FileSet = dbfs     #指定要备份的客户端数据,“dbfs”在后面FileSet  
  24. #逻辑段中进行定义  
  25.   Schedule = dbscd    #指定这个备份任务的执行时间策略,“dbscd”在  
  26. #后面的Schedule逻辑段中进行了定义  
  27.   Storage = dbsd     #指定备份数据的存储路径与介质,“dbsd” 在后  
  28. #面的Storage逻辑段中进行定义  
  29.   Messages = Standard 
  30.   Pool = dbpool     #指定备份使用的pool属性,“dbpool”在后面的  
  31. # Pool逻辑段中进行定义。  
  32.   Write Bootstrap = "/opt/bacula/var/bacula/working/Client2.bsr" #指定备份的引导信息路径  
  33. }  
  34.  
  35.  
  36. Job {         #定义一个名为Client的差异备份的任务  
  37.   Name = "Client" 
  38.   Type = Backup 
  39.   FileSet = dbfs 
  40.   Schedule = dbscd 
  41.   Storage = dbsd 
  42.   Messages = Standard 
  43.   Pool = dbpool 
  44.   Client = dbfd 
  45.   Level = Differential      #指定备份级别为差异备份  
  46.   Write Bootstrap = "/opt/bacula/var/bacula/working/Client1.bsr" 
  47. }  
  48.  
  49.  
  50. Job {        #定义一个名为BackupCatalog的完全备份任务  
  51.   Name = "BackupCatalog"     
  52.   Type = Backup 
  53.   Level = Full        #指定备份级别为完全备份  
  54.   Client = dbfd 
  55.   FileSet="dbfs" 
  56.   Schedule = "dbscd" 
  57.   Pool = dbpool 
  58.   Storage = dbsd 
  59.   Messages = Standard 
  60.   RunBeforeJob = "/opt/bacula/etc/make_catalog_backup bacula bacula" 
  61.   RunAfterJob  = "/opt/bacula/etc/delete_catalog_backup" 
  62.   Write Bootstrap = "/opt/var/bacula/working/BackupCatalog.bsr"                
  63. }  
  64.  
  65.  
  66. Job {           #定义一个还原任务  
  67.   Name = "RestoreFiles" 
  68.   Type = Restore       #定义Job的类型为“Restore ”,即恢复数据  
  69.   Client=dbfd                
  70.   FileSet=dbfs                    
  71.   Storage = dbsd               
  72.   Pool = dbpool 
  73.   Messages = Standard 
  74.   Where = /tmp/bacula-restores  #指定默认恢复数据到这个路径  
  75. }  
  76.  
  77.  
  78. FileSet {  #定义一个名为dbfs的备份资源,也就是指定需要备份哪些数据,需要排除哪  
  79. #些数据等,可以指定多个FileSet  
  80.   Name = dbfs     
  81.   Include {  
  82.     Options {  
  83.      signature = MD5Compression=GZIP; }   #表示使用MD5签名并压缩  
  84.     File = /cws3            #指定客户端FD需要备份的文件目录  
  85.   }  
  86.  
  87.   Exclude {    #通过Exclude排除不需要备份的文件或者目录,可根据具体情况修改  
  88.     File = /opt/bacula/var/bacula/working  
  89.     File = /tmp  
  90.     File = /proc  
  91.     File = /tmp  
  92.     File = /.journal  
  93.     File = /.fsck  
  94.   }  
  95. }  
  96.  
  97. Schedule {        #定义一个名为dbscd的备份任务调度策略  
  98.   Name = dbscd 
  99.   Run = Full 1st sun at 23:05  #第一周的周日晚23:05分进行完全备份  
  100.   Run = Differential 2nd-5th sun at 23:05 #第2~5周的周日晚23:05进行差异备份  
  101.   Run = Incremental mon-sat at 23:05  #所有周一至周六晚23:05分进行增量备份  
  102. }  
  103.  
  104.  
  105. FileSet {  
  106.   Name = "Catalog" 
  107.   Include {  
  108.     Options {  
  109.       signature = MD5 
  110.     }  
  111.     File = /opt/bacula/var/bacula/working/bacula.sql  
  112.   }  
  113. }  
  114.  
  115.  
  116. Client {        #Client用来定义备份哪个客户端FD的数据  
  117.   Name = dbfd  #Clinet的名称,可以在前面的Job中调用  
  118.   Address = 192.168.12.189    #要备份的客户端FD主机的IP地址  
  119.   FDPort = 9102      #与客户端FD通信的端口  
  120.   Catalog = MyCatalog     #使用哪个数据库存储信息,“MyCatalog”在后面  
  121. #的MyCatalog逻辑段中进行定义  
  122.   Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #Director端与客户端FD  
  123. #的验证密码,这个值必须与客户端FD配置文件bacula-fd.conf中密码相同  
  124.   File Retention = 30 days    #指定保存在数据库中的记录多久循环一次,这里是30天,只  
  125. #影响数据库中的记录不影响备份的文件  
  126.   Job Retention = 6 months  #指定Job的保持周期,应该大于File Retention指定的值  
  127.   AutoPrune = yes          #当达到指定的保持周期时,是否自动删除数据库中的记录,  
  128. #yes表示自动清除过期的Job  
  129. }  
  130.  
  131. Client {  
  132.   Name = dbfd1 
  133.   Address = 192.168.12.188  
  134.   FDPort = 9102 
  135.   Catalog = MyCatalog 
  136.   Password = "Wr8lj3q51PgZ21U2FSaTXICYhLmQkT1XhHbm8a6/j8Bz"           
  137.   File Retention = 30 days             
  138.   Job Retention = 6 months              
  139.   AutoPrune = yes                      
  140. }  
  141.  
  142.  
  143. Storage {      # Storage用来定义将客户端的数据备份到哪个存储设备上  
  144.   Name = dbsd     
  145.   Address = 192.168.12.188  #指定存储端SD的IP地址  
  146.   SDPort = 9103    #指定存储端SD通信的端口  
  147.   Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #Director端与存储端  
  148. #SD的验证密码,这个值必须与存储端SD配置文件bacula-sd.conf中Director逻辑段密码  
  149. #相同  
  150.   Device = dbdev #指定数据备份的存储介质,必须与存储端(这里是192.168.12.188)  
  151. #的bacula-sd.conf配置文件中的“Device” 逻辑段的“Name”项名称相同  
  152.   Media Type = File #指定存储介质的类别,必须与存储端SD(这里是192.168.12.188)  
  153. #的bacula-sd.conf配置文件中的“Device” 逻辑段的“Media Type”项名称相同  
  154.  
  155. }  
  156.  
  157. Catalog {         # Catalog逻辑段用来定义关于日志和数据库设定  
  158.   Name = MyCatalog 
  159.   dbname = "bacula"dbuser = "bacula"dbpassword = ""   #指定库名、用户名和密码  
  160. }  
  161.  
  162. Messages { # Messages逻辑段用来设定Director端如何保存日志,以及日志的保存格式,  
  163. #可以将日志信息发送到管理员邮箱,前提是必须开启sendmail服务  
  164.   Name = Standard 
  165.   mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"  
  166.  operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"  
  167.   mail = dba.gao@gmail.com = all, !skipped              
  168.   operator = exitgogo@126.com = mount 
  169.   console = all, !skipped, !saved  
  170.   append = "/opt/bacula/log/bacula.log" = all, !skipped   #定义bacula的运行日志  
  171.   append ="/opt/bacula/log/bacula.err.log" = error,warning, fatal #定义bacula的错误日志  
  172.   catalog = all 
  173. }  
  174.  
  175. Messages { #定义了一个名为Daemon的Messages逻辑段,“Daemon”已经  
  176. #在前面进行了引用  
  177.   Name = Daemon 
  178.   mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"  
  179.   mail = exitgogo@126.com = all, !skipped              
  180.   console = all, !skipped, !saved  
  181.   append = "/opt/bacula/log/bacula_demo.log" = all, !skipped  
  182. }  
  183.  
  184.  
  185. Pool {  #定义供Job任务使用的池属性信息,例如,设定备份文件过期时间、  
  186. #是否覆盖过期的备份数据、是否自动清除过期备份等  
  187.   Name = dbpool   
  188.   Pool Type = Backup   
  189.   Recycle = yes                   #重复使用      
  190.   AutoPrune = yes                #表示自动清除过期备份文件  
  191.   Volume Retention = 7 days        #指定备份文件保留的时间  
  192.   Label Format ="db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}" #设定备份文件的  
  193. #命名格式,这个设定格式会产生的命名文件为:db-2010-04-18-id139  
  194.   Maximum Volumes = 7  #设置最多保存多少个备份文件  
  195.   Recycle Current Volume = yes #表示可以使用最近过期的备份文件来存储新备份  
  196.   Maximum Volume Jobs = 1  #表示每次执行备份任务创建一个备份文件  
  197. }  
  198.  
  199. Console {      #限定Console利用tray-monitor获得Director的状态信息  
  200.   Name = f10-64-build-mon  
  201.   Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap" 
  202.   CommandACL = status, .status  
  203. }  
  204.  

三、配置bacula的SD
 

SD可以是一台单独的服务器,也可以和Director在一台机器上,本例就将SD和Director端放在一起进行配置,SD的配置文件是bacula-sd.conf,代码清单2是一个已经配置好的bacula-sd.conf文件。

代码清单2 配置好的bacula-sd.conf文件

  1. Storage {                 #定义存储,本例中是f10-64-build-sd                
  2.   Name = f10-64-build-sd #定义存储名称  
  3.   SDPort = 9103           #监听端口        
  4.   WorkingDirectory = "/opt/bacula/var/bacula/working" 
  5.   Pid Directory = "/var/run" 
  6.   Maximum Concurrent Jobs = 20 
  7. }  
  8.  
  9. Director {        #定义一个控制StorageDaemon的Director  
  10.   Name = f10-64-build-dir     #这里的“Name”值必须和Director端配置文件  
  11. #bacula-dir.conf中Director逻辑段名称相同  
  12.   Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"   #这里的“Password”值  
  13. #必须和Director端配置文件bacula-dir.conf中Storage逻辑段密码相同  
  14. }  
  15.  
  16. Director {      #定义一个监控端的Director  
  17.   Name = f10-64-build-mon    #这里的“Name”值必须和Director端配置文件  
  18. #bacula-dir.conf中Console逻辑段名称相同  
  19.   Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"   #这里的“Password”  
  20. #值必须和Director端配置文件bacula-dir.conf中Console逻辑段密码相同  
  21.   Monitor = yes 
  22. }  
  23.  
  24. Device {       #定义Device  
  25.   Name = dbdev    #定义Device的名称,这个名称在Director端配置文件  
  26. #bacula-dir.conf中的Storage逻辑段Device项中被引用  
  27.   Media Type = File   #指定存储介质的类型,File表示使用文件系统存储  
  28.   Archive Device = /webdata  #Archive Device用来指定备份存储的介质,可以  
  29. #是cd、dvd、tap等,这里是将备份的文件保存的/webdata目录下  
  30.   LabelMedia = yes;            #通过Label命令来建立卷文件  
  31.   Random Access = yes;   #设置是否采用随机访问存储介质,这里选择yes  
  32.   AutomaticMount = yes;  #表示当存储设备打开时,是否自动使用它,这选择yes  
  33.   RemovableMedia = no;  #是否支持可移动的设备,如tap或cd,这里选择no  
  34.   AlwaysOpen = no;   #是否确保tap设备总是可用,这里没有使用tap设备,  
  35. #因此设置为no  
  36. }  
  37.  
  38. Messages {        #为存储端SD定义一个日志或消息处理机制  
  39.   Name = Standard 
  40.   director = f10-64-build-dir = all 
  41. }  
  42.  

四、配置bacula的FD端
客户端FD运行在一台独立的服务器上,在本例中是baculaclient主机(即192.168.12.189),它的配置文件是bacula-fd.conf,配置好的文件如下:

  1. Director {      #定义一个允许连接FD的控制端  
  2.   Name = f10-64-build-dir  #这里的“Name”值必须和Director端配置文件  
  3. #bacula-dir.conf中Director逻辑段名称相同  
  4.   Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #这里的“Password”  
  5. #值必须和Director端配置文件bacula-dir.conf中Client逻辑段密码相同  
  6. }  
  7.  
  8. Director {      #定义一个允许连接FD的监控端  
  9.   Name = f10-64-build-mon     
  10.   Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap" 
  11.   Monitor = yes 
  12. }  
  13.  
  14. FileDaemon {                #定义一个FD端              
  15.   Name = localhost.localdomain-fd   
  16.   FDport = 9102                  #监控端口  
  17.   WorkingDirectory = /opt/bacula/var/bacula/working  
  18.   Pid Directory = /var/run  
  19.   Maximum Concurrent Jobs = 20   #定义一次能处理的并发作业数  
  20. }  
  21.  
  22. Messages {      #定义一个用于FD端的Messages  
  23.   Name = Standard 
  24.   director = localhost.localdomain-dir = all, !skipped, !restored  
  25. }  
  26.