设为首页 收藏本站
查看: 1315|回复: 0

[经验分享] bacula配置

[复制链接]

尚未签到

发表于 2016-6-4 11:40:04 | 显示全部楼层 |阅读模式
Bacula
  Bacula是一款开源的跨平台网络备份工具,提供基于企业级的CS的备份解决方案。可以对数据进行备份、恢复、以及完整性校验。
  功能特点:
  支持完全备份,增量备份,差异备份。
  支持多种恢复方式
  支持多种文件系统下的备份恢复(ext3、ext2、reiserfs、xfs、jfs、smbfs、iso9660、ntfs等)
  支持各种备份介质
  支持多种操作系统
  强大的内部功能
  一个完整的bacula备份系统,由下面5个部分组成
  DirectorDaemon:负责监听所有的备份、恢复、验证、存档事务,以及定制备份和恢复文件计划等,并将整个系统运行状况记录在一个数据库文件中。其配置文件为bacula-dir.conf。
  StorageDaemon(SD):主要负责将数据备份到存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。
  FileDaemon(FD):安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操作。配置文件为bacula-fd.conf。
  Console:管理控制台。可以通过这个控制台连接到DirectorDaemon进行管理备份与恢复操作。
  Monitor:进程监控端。
  工作流程:
  1、通过console连接到Director端,备份恢复操作开始。
  2、Director端从自己的数据库中调出记录信息,对存储端SD与客户端FD的任务进行协调。
  3、客户端FD负责验证Director的操作许可,如果验证通过,则允许连接到存储端SD
  4、客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD指定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD指定的位置上,完成备份恢复过程。
  软件类别:国外软件 授权方式:免费版 运行环境:Win2003,WinXp, Win2000, Nt, WinMe, Win9x,和Linux平台。
  
  
  
  本次实验:服务器ip:10.0.253.117,客户端ip:10.0.253.118
  
  
  改Localhost为baculaServer
  [iyunv@localhost ~] vi /etc/sysconfig/network
  改yourname后面的值为:baculaServer
  
  安装:
  Ssrver端:
  [iyunv@baculaServer ~]# yum install gcc gcc-c++  //安装C编译器
  
  [iyunv@baculaServer ~]# yum install -y mysqlmysql-server mysql-devel //安装musql数据库
  
  [iyunv@baculaServer~]#wget http://softlayer-dal.dl.sourceforge.net/project/bacula/bacula/5.2.13/bacula-5.2.13.tar.gz  //下载bacula
  [iyunv@baculaServer ~]# tar zxvfbacula-5.2.13.tar.gz //解压bacula
  
  [iyunv@baculaServer ~]# cd bacula-5.2.13 //打开bacula
  [iyunv@baculaServer          bacula-5.2.13]# ./configure--prefix=/usr/local/bacula--with-mysql
  
  [iyunv@baculaServer bacula-5.2.13]# make
  
  [iyunv@baculaServer bacula-5.2.13]# make install
  
  [iyunv@baculaServer bacula-5.2.13]# makeinstall-autostart
  
  
  
  Client端:
  [iyunv@baculaClient ~]# yum install gcc gcc-c++
  [iyunv@baculaClient ~]# cd bacula-5.2.13
  [iyunv@baculaClient bacula-5.2.13]# ./configure--prefix=/usr/local/bacula --enable-client-only
  [iyunv@baculaClient bacula-5.2.13]# make install
  [iyunv@baculaClient bacula-5.2.13]# make install-autostart
  
  
  初始化Mysql数据库:
  [iyunv@baculaServer bacula-5.2.13]# cd
  [iyunv@baculaServer ~]# service mysqld restart
  
  [iyunv@baculaServer ~]# cd /usr/local/bacula/etc
  [iyunv@baculaServer etc]# ./grant_mysql_privileges
  
  [iyunv@baculaServer ~]# ./create_mysql_database
  
  [iyunv@baculaServer ~]# ./make_mysql_tables
  
  bacula实例配置:
  
  Console端的配置
  [iyunv@baculaServer ~]# vi bconsole.conf // Console端的配置文件
  Director
  {  
  Name = f10-64-build-dir  #控制端名称,在下面的bacula-dir.conf和bacula-sd.conf  
  #文件中会陆续的被引用  
  DIRport= 9101    #控制端服务端口  
  address= 10.0.253.117  #控制端服务器IP地址  
  Password= "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"   
  #控制端密码文件   
  }
  
  [iyunv@baculaServer ~]# vi bacula-dir.conf//Director端的配置文件
  Director {                            #定义bacula的全局配置  
  Name= f10-64-build-dir  
  DIRport= 9101                 #定义Director的监听端口  
  QueryFile= "/usr/local/bacula/etc/query.sql"
  WorkingDirectory= "/usr/local/bacula/var/bacula/working"
  PidDirectory= "/var/run"
  MaximumConcurrent Jobs = 1    #定义一次能处理的最大并发数  
  
  #验证密码,这个密码必须与bconsole.conf文件中对应的Director逻辑段密码相同  
  Password= "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"      
  
  #定义日志输出方式,“Daemon”在下面的Messages逻辑段中进行了定义  
  Messages= Daemon   
  }  
  
  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逻辑段中进行定义。  
  WriteBootstrap = "/usr/local/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      #指定备份级别为差异备份  
  WriteBootstrap = "/usr/local/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= "/usr/local/bacula/etc/make_catalog_backup bacula bacula"
  RunAfterJob  ="/usr/local/bacula/etc/delete_catalog_backup"
  WriteBootstrap = "/usr/local/var/bacula/working/BackupCatalog.bsr"               
  }  
  
  
  Job {           #定义一个还原任务  
  Name= "RestoreFiles"
  Type= Restore       #定义Job的类型为“Restore ”,即恢复数据  
  Client=dbfd               
  FileSet=dbfs                    
  Storage= dbsd               
  Pool= dbpool
  Messages= Standard
  Where= /tmp/bacula-restores  #指定默认恢复数据到这个路径  
  }  
  
  
  FileSet {  #定义一个名为dbfs的备份资源,也就是指定需要备份哪些数据,需要排除哪  
  #些数据等,可以指定多个FileSet  
  Name= dbfs     
  Include{  
  Options{  
  signature= MD5; Compression=GZIP; }   #表示使用MD5签名并压缩  
  File= /cws3            #指定客户端FD需要备份的文件目录  
  }  
  
  Exclude {    #通过Exclude排除不需要备份的文件或者目录,可根据具体情况修改  
  File= /usr/local/bacula/var/bacula/working  
  File= /tmp  
  File= /proc  
  File= /tmp  
  File= /.journal  
  File= /.fsck  
  }  
  }  
  
  Schedule {        #定义一个名为dbscd的备份任务调度策略  
  Name= dbscd
  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= /usr/local/bacula/var/bacula/working/bacula.sql  
  }  
  }  
  
  
  Client {        #Client用来定义备份哪个客户端FD的数据  
  Name= dbfd  #Clinet的名称,可以在前面的Job中调用  
  Address= 10.0.253.118    #要备份的客户端FD主机的IP地址  
  FDPort= 9102      #与客户端FD通信的端口  
  Catalog= MyCatalog     #使用哪个数据库存储信息,“MyCatalog”在后面  
  #的MyCatalog逻辑段中进行定义  
  Password= "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #Director端与客户端FD  
  #的验证密码,这个值必须与客户端FD配置文件bacula-fd.conf中密码相同  
  FileRetention = 30 days    #指定保存在数据库中的记录多久循环一次,这里是30天,只  
  #影响数据库中的记录不影响备份的文件  
  JobRetention = 6 months  #指定Job的保持周期,应该大于File Retention指定的值  
  AutoPrune= yes          #当达到指定的保持周期时,是否自动删除数据库中的记录,  
  #yes表示自动清除过期的Job  
  }  
  
  Client {  
  Name= dbfd1
  Address= 10.0.253.118
  FDPort= 9102
  Catalog= MyCatalog
  Password= "Wr8lj3q51PgZ21U2FSaTXICYhLmQkT1XhHbm8a6/j8Bz"           
  FileRetention = 30 days            
  JobRetention = 6 months              
  AutoPrune= yes                     
  }  
  
  
  Storage {      # Storage用来定义将客户端的数据备份到哪个存储设备上  
  Name= dbsd     
  Address= 10.0.253.117  #指定存储端SD的IP地址  
  SDPort= 9103    #指定存储端SD通信的端口  
  Password= "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #Director端与存储端  
  #SD的验证密码,这个值必须与存储端SD配置文件bacula-sd.conf中Director逻辑段密码  
  #相同  
  Device= dbdev #指定数据备份的存储介质,必须与存储端(这里是10.0.253.117)  
  #的bacula-sd.conf配置文件中的“Device” 逻辑段的“Name”项名称相同  
  MediaType = File #指定存储介质的类别,必须与存储端SD(这里是10.0.253.117)  
  #的bacula-sd.conf配置文件中的“Device” 逻辑段的“Media Type”项名称相同  
  
  }  
  
  Catalog {         # Catalog逻辑段用来定义关于日志和数据库设定  
  ame= MyCatalog
  dbname= "bacula"; dbuser = "bacula"; dbpassword =""   #指定库名、用户名和密码  
  }  
  
  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.gao@gmail.com = all, !skipped            
  operator= exitgogo@126.com = mount
  console= all, !skipped, !saved  
  append= "/usr/local/bacula/log/bacula.log" = all, !skipped   #定义bacula的运行日志  
  append="/usr/local/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= exitgogo@126.com = all, !skipped            
  console= all, !skipped, !saved  
  append= "/usr/local/bacula/log/bacula_demo.log" = all, !skipped  
  }  
  
  
  Pool {  #定义供Job任务使用的池属性信息,例如,设定备份文件过期时间、  
  #是否覆盖过期的备份数据、是否自动清除过期备份等  
  Name= dbpool   
  PoolType = Backup   
  Recycle= yes                   #重复使用      
  AutoPrune= yes                #表示自动清除过期备份文件  
  VolumeRetention = 7 days        #指定备份文件保留的时间  
  LabelFormat ="db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}" #设定备份文件的  
  #命名格式,这个设定格式会产生的命名文件为:db-2010-04-18-id139  
  MaximumVolumes = 7  #设置最多保存多少个备份文件  
  RecycleCurrent Volume = yes #表示可以使用最近过期的备份文件来存储新备份  
  MaximumVolume Jobs = 1  #表示每次执行备份任务创建一个备份文件  
  }  
  
  Console {      #限定Console利用tray-monitor获得Director的状态信息  
  Name= f10-64-build-mon  
  Password= "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"
  CommandACL= status, .status  
  }  
  
  
  配置bacula的SD:
  [iyunv@baculaServer ~]# vi bacula-sd.conf//服务器端的配置文件
  Storage {                 #定义存储,本例中是f10-64-build-sd               
  Name= f10-64-build-sd #定义存储名称  
  SDPort= 9103           #监听端口        
  WorkingDirectory= "/usr/local/bacula/var/bacula/working"
  PidDirectory = "/var/run"
  MaximumConcurrent Jobs = 20
  }  
  
  Director {        #定义一个控制StorageDaemon的Director  
  Name= f10-64-build-dir     #这里的“Name”值必须和Director端配置文件  
  #bacula-dir.conf中Director逻辑段名称相同  
  Password= "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"   #这里的“Password”值  
  #必须和Director端配置文件bacula-dir.conf中Storage逻辑段密码相同  
  }  
  
  Director {      #定义一个监控端的Director  
  Name= f10-64-build-mon    #这里的“Name”值必须和Director端配置文件  
  #bacula-dir.conf中Console逻辑段名称相同  
  Password= "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"   #这里的“Password”  
  #值必须和Director端配置文件bacula-dir.conf中Console逻辑段密码相同  
  Monitor= yes
  }  
  
  Device {       #定义Device  
  Name= dbdev    #定义Device的名称,这个名称在Director端配置文件  
  #bacula-dir.conf中的Storage逻辑段Device项中被引用  
  MediaType = File   #指定存储介质的类型,File表示使用文件系统存储  
  ArchiveDevice = /webdata  #Archive Device用来指定备份存储的介质,可以  
  #是cd、dvd、tap等,这里是将备份的文件保存的/webdata目录下  
  LabelMedia = yes;            #通过Label命令来建立卷文件  
  RandomAccess = yes;   #设置是否采用随机访问存储介质,这里选择yes  
  AutomaticMount= yes;  #表示当存储设备打开时,是否自动使用它,这选择yes  
  RemovableMedia= no;  #是否支持可移动的设备,如tap或cd,这里选择no  
  AlwaysOpen= no;   #是否确保tap设备总是可用,这里没有使用tap设备,  
  #因此设置为no  
  }  
  
  Messages {        #为存储端SD定义一个日志或消息处理机制  
  Name= Standard
  director= f10-64-build-dir = all
  }  
  
  配置bacula的FD端
  
  [iyunv@baculaClient ~] vi fd.conf //客户端的配置文件
  Director {      #定义一个允许连接FD的控制端  
  Name= f10-64-build-dir  #这里的“Name”值必须和Director端配置文件  
  #bacula-dir.conf中Director逻辑段名称相同  
  Password= "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #这里的“Password”  
  #值必须和Director端配置文件bacula-dir.conf中Client逻辑段密码相同  
  }  
  
  Director {      #定义一个允许连接FD的监控端  
  Name= f10-64-build-mon     
  Password= "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"
  Monitor= yes
  }  
  
  FileDaemon {                #定义一个FD端              
  Name= localhost.localdomain-fd   
  FDport= 9102                  #监控端口  
  WorkingDirectory= /usr/local/bacula/var/bacula/working  
  PidDirectory = /var/run  
  MaximumConcurrent Jobs = 20   #定义一次能处理的并发作业数  
  }  
  
  Messages {      #定义一个用于FD端的Messages  
  Name= Standard
  director= localhost.localdomain-dir = all, !skipped, !restored  
  }
  
  
  服务器端的启动
  [iyunv@baculaserver etc]# /usr/local/bacula/sbin/bacula
  {start|stop|restart|status}
  也可以通过分别管理bacula各个配置端的方式,依次启动或者关闭每个服务:
  [iyunv@baculaserver etc]# /usr/local/bacula/etc/bacula-ctl-dir  {start|stop|restart|status}
  [iyunv@baculaserver etc]# /usr/local/bacula/etc/bacula-ctl-sd  {start|stop|restart|status}
  [iyunv@baculaserver etc]# /usr/local/bacula/etc/bacula-ctl-fd  {start|stop|restart|status}
  
  客服端的启动:
  
  [iyunv@baculaclient etc]#/usr/local/bacula/sbin/bacula start
  Starting the Bacula File daemon
  管理客户端FD的服务,也可以通过以下方式完成:
  
  [iyunv@baculaclient etc]#/usr/local/bacula/sbin/bacula {start|stop|restart|status}
  [iyunv@ baculaclient etc]# /usr/local/bacula/etc/bacula-ctl-fd  {start|stop|restart|status}
  
  简单实例运行:
  备份恢复:
  [iyunv@baculaserveropt]#/usr/local/bacula/sbin/bconsole  
  Connectingto Director 10.0.253.117:9101  
  1000 OK:f10-64-build-dir Version: 3.0.2 (18 July 2009)
  Enter aperiod to cancel a command  
  *run
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-226171-1-1.html 上篇帖子: Bacula 下篇帖子: 转贴:Backups with Bacula: A cross-platform system to archive your data
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表