zoukankan      html  css  js  c++  java
  • CentOS7安装配置Bacular

    参考:

    http://blog.51cto.com/molewan/2045602

    https://blog.csdn.net/heshangkung/article/details/47955023

    https://www.cnblogs.com/bisonzhang/p/3774644.html

    https://www.baidu.com/link?url=o2QIy2YZWjsJPAFJuYFhrH3nPvtyRkSe-o5Q_FqFZ5E1EMOsIOmGeKm0HAonwHOw8WRbAKFIU1vmgAlSzC0P00CoW3DcbFJtyRPsyTbJrMq&wd=&eqid=8443d615000387c4000000065b6a8bd6

    Bacula

      Bacula是一款开源的跨平台网络备份工具,提供基于企业级的CS的备份解决方案。可以对数据进行备份、恢复、以及完整性校验。 
      功能特点:
      支持完全备份增量备份差异备份
      支持多种恢复方式
      支持多种文件系统下的备份恢复(ext3、ext2、reiserfs、xfs、jfs、smbfs、iso9660、ntfs等)
      支持各种备份介质
      支持多种操作系统
      强大的内部功能
      一个完整的bacula备份系统,由下面5个部分组成
      Director Daemon:负责监听所有的备份、恢复、验证、存档事务,以及定制备份和恢复文件计划等,并将整个系统运行状况记录在一个数据库文件中。其配置文件为bacula-dir.conf。
      Storage Daemon(SD):主要负责将数据备份存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。
      File Daemon(FD):安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操作。配置文件为bacula-fd.conf。
      Console:管理控制台。可以通过这个控制台连接到Director Daemon进行管理备份与恢复操作。
      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

    [root@localhost ~] vi /etc/sysconfig/network

    改yourname后面的值为:baculaServer

     安装:

    Ssrver端:

    [root@baculaServer ~]# yum install gcc gcc-c++  //安装C编译器

    [root@baculaServer ~]# yum install -y mysql mysql-server mysql-devel //安装musql数据库

    [root@baculaServer~]#wget http://softlayer-dal.dl.sourceforge.net/project/bacula/bacula/5.2.13/bacula-5.2.13.tar.gz  //下载bacula

    [root@baculaServer ~]# tar zxvf bacula-5.2.13.tar.gz //解压bacula

    [root@baculaServer ~]# cd bacula-5.2.13 //打开bacula

    [root@baculaServer          bacula-5.2.13]# ./configure --prefix=/usr/local/bacula --with-mysql

    [root@baculaServer bacula-5.2.13]# make

    [root@baculaServer bacula-5.2.13]# make install

    [root@baculaServer bacula-5.2.13]# make install-autostart

     如make配置时报错

    Compiling mysql.c
    mysql.c: In member function 'virtual bool BDB_MYSQL::bdb_open_database(JCR*)':
    mysql.c:201:4: error: 'my_bool' was not declared in this scope
        my_bool reconnect = 1;
        ^
    mysql.c:201:12: error: expected ';' before 'reconnect'
        my_bool reconnect = 1;
                ^
    mysql.c:262:58: error: 'reconnect' was not declared in this scope
        mysql_options(&mdb->m_instance, MYSQL_OPT_RECONNECT, &reconnect); /* so connection does not timeout */ 

    修改vim /etc/my.cnf

    在末尾添加:
    wait_timeout = 172800
    interactive-timeout = 172800

    如果是MySQL5以前的版本,需要修改连接池配置中的URL,添加

        autoReconnect=true

    如果是MySQL5 以后的版本,需要修改my.cnf(或者my.ini)文件,在[mysqld]后面添加

    wait_timeout = 172800 
    interactive-timeout = 172800

         单位都是秒,记得必须都添加,否则不起作用,通过show variables查看wait_timeout的值。

    默认情况下在MySQL版本5.1,再联接失去能力的。如果想恢复重连接就: 

    my_bool reconnect= 1;
    mysql_options (&mysql, MYSQL_OPT_RECONNECT, &reconnect);

    如果想再重新失去链接
    my_bool reconnect= 0;
    mysql_options (&mysql, MYSQL_OPT_RECONNECT, &reconnect);

    Client端:

    [root@baculaClient ~]# yum install gcc gcc-c++

    [root@baculaClient ~]# cd bacula-5.2.13

    [root@baculaClient bacula-5.2.13]# ./configure --prefix=/usr/local/bacula --enable-client-only

    [root@baculaClient bacula-5.2.13]# make install

    [root@baculaClient bacula-5.2.13]# make install-autostart

    初始化Mysql数据库:

    [root@baculaServer bacula-5.2.13]# cd

    [root@baculaServer ~]# service mysqld restart

    [root@baculaServer ~]# cd /usr/local/bacula/etc

    [root@baculaServer etc]# ./grant_mysql_privileges

    [root@baculaServer ~]# ./create_mysql_database

    [root@baculaServer ~]# ./make_mysql_tables

    bacula实例配置:

     Console端的配置

    [root@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"   

           #控制端密码文件  

    }

    [root@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"

          Maximum Concurrent 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逻辑段中进行定义。 

          Write Bootstrap = "/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      #指定备份级别为差异备份 

          Write Bootstrap = "/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"

          Write Bootstrap = "/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中密码相同 

          File Retention = 30 days    #指定保存在数据库中的记录多久循环一次,这里是30天,只 

           #影响数据库中的记录不影响备份的文件 

          Job Retention = 6 months  #指定Job的保持周期,应该大于File Retention指定的值 

          AutoPrune = yes          #当达到指定的保持周期时,是否自动删除数据库中的记录, 

           #yes表示自动清除过期的Job 

    Client { 

          Name = dbfd1

          Address = 10.0.253.118

          FDPort = 9102

          Catalog = MyCatalog

          Password = "Wr8lj3q51PgZ21U2FSaTXICYhLmQkT1XhHbm8a6/j8Bz"          

          File Retention = 30 days            

          Job Retention = 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”项名称相同 

          Media Type = 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  

          Pool Type = Backup  

          Recycle = yes                   #重复使用     

          AutoPrune = yes                #表示自动清除过期备份文件 

          Volume Retention = 7 days        #指定备份文件保留的时间 

          Label Format ="db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}" #设定备份文件的 

           #命名格式,这个设定格式会产生的命名文件为:db-2010-04-18-id139 

          Maximum Volumes = 7  #设置最多保存多少个备份文件 

          Recycle Current Volume = yes #表示可以使用最近过期的备份文件来存储新备份 

          Maximum Volume Jobs = 1  #表示每次执行备份任务创建一个备份文件 

    Console {      #限定Console利用tray-monitor获得Director的状态信息 

          Name = f10-64-build-mon 

          Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"

          CommandACL = status, .status 

    配置bacula的SD:

    [root@baculaServer ~]# vi bacula-sd.conf//服务器端的配置文件

           Storage {                 #定义存储,本例中是f10-64-build-sd               

          Name = f10-64-build-sd #定义存储名称 

          SDPort = 9103           #监听端口       

          WorkingDirectory = "/usr/local/bacula/var/bacula/working"

          Pid Directory = "/var/run"

          Maximum Concurrent 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项中被引用 

          Media Type = File   #指定存储介质的类型,File表示使用文件系统存储 

          Archive Device = /webdata  #Archive Device用来指定备份存储的介质,可以 

           #是cd、dvd、tap等,这里是将备份的文件保存的/webdata目录下 

           LabelMedia = yes;            #通过Label命令来建立卷文件 

          Random Access = 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端

    [root@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 

          Pid Directory = /var/run 

          Maximum Concurrent Jobs = 20   #定义一次能处理的并发作业数 

    Messages {      #定义一个用于FD端的Messages 

          Name = Standard

          director = localhost.localdomain-dir = all, !skipped, !restored 

    }

    服务器端的启动

    [root@baculaserver  etc]# /usr/local/bacula/sbin/bacula

     {start|stop|restart|status}

    也可以通过分别管理bacula各个配置端的方式,依次启动或者关闭每个服务:

    [root@baculaserver  etc]# /usr/local/bacula/etc/bacula-ctl-dir  {start|stop|restart|status}

    [root@baculaserver  etc]# /usr/local/bacula/etc/bacula-ctl-sd  {start|stop|restart|status}

    [root@baculaserver  etc]# /usr/local/bacula/etc/bacula-ctl-fd  {start|stop|restart|status}

    客服端的启动:

    [root@baculaclient etc]# /usr/local/bacula/sbin/bacula start

    Starting the Bacula File daemon

    管理客户端FD的服务,也可以通过以下方式完成:

    [root@baculaclient etc]# /usr/local/bacula/sbin/bacula {start|stop|restart|status}

    [root@ baculaclient  etc]# /usr/local/bacula/etc/bacula-ctl-fd  {start|stop|restart|status}

    简单实例运行:

    备份恢复:

    [root@baculaserver opt]#/usr/local/bacula/sbin/bconsole 

          Connecting to Director 10.0.253.117:9101 

          1000 OK: f10-64-build-dir Version: 3.0.2 (18 July 2009) 

          Enter a period to cancel a command 

          *run

  • 相关阅读:
    2019.9.18 csp-s模拟测试46 反思总结
    2019.9.17 csp-s模拟测试45 反思总结
    矩阵求导(包含极大似然估计)
    sir
    Square into Squares. Protect trees!(平方数分解平方和)
    最小二乘法
    2.5&2.6 numpy&pandas 笔记
    2.4 python学习笔记
    2.3 python学习笔记
    2.1&2.2python学习笔记
  • 原文地址:https://www.cnblogs.com/jackyzm/p/9438525.html
Copyright © 2011-2022 走看看