zoukankan      html  css  js  c++  java
  • CentOS7安装配置Bacula yum方法

    参考:

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

    https://blog.csdn.net/hexuan1/article/details/46820723

    https://blog.csdn.net/u011016554/article/details/50446458

    介绍

    Bacula是一个开源网络备份解决方案,允许您创建备份和执行计算机系统的数据恢复。它非常灵活和健壮,这使得它,虽然配置稍微麻烦,适合在许多情况下的备份。备份系统是在大多数服务器基础架构的重要组成部分 ,从数据丢失恢复往往是灾难恢复计划的重要组成部分。 在本教程中,我们将向您展示如何在CentOS 7服务器上安装和配置Bacula的服务器组件。我们将配置Bacula执行每周作业,创建本地备份(即其自己的主机的备份)。这本身并不是Bacula的特别引人注目的用途,但它将为您创建其他服务器(即备份客户端)的备份提供一个良好的起点。本系列的下一个教程将介绍如何通过安装和配置Bacula客户端以及配置Bacula服务器来创建其他远程服务器的备份。 如果您想使用Ubuntu 14.04代替,请点击此链接: 如何在Ubuntu 14.04安装Bacula的服务器 。

    bacula的功能特点与原理:

    一、bacula是什么
    bacula是一款开源的跨平台网络备份工具,它提供了基于企业级的客户端/服务器的备份恢复解决方案,通过它,系统管理人员可以对数据进行备份、恢复,以及完整性验证等操作,同时,它还提供了许多高级存储管理功能,使系统管理人员能够很容易发现并恢复丢失的或已经损坏的文件。bacula既有Windows版本的,也有Linux和UNIX版本的。

    二、 bacula适合哪些用户
    如果业务系统数据量巨大,每天都在迅速增长,还需要以tar打包方式进行低级备份,并且没有相应的异地容灾策略时,那么就应该考虑使用bacula。bacula拥有一个完美的增量备份功能,同时还支持远程容灾备份。通过bacula,可以将数据备份到任意一个远程主机上,用户只需要对bacula进行简单的设置即可自动完成数据备份。
    如果用户已经拥有一套存储设备,如磁盘阵列、磁带/带库,只是需要将业务数据从服务器自动备份到这些存储设备上,bacula无疑也是最佳选择,因为bacula具有介质管理功能,利用它可以轻松地实现将服务器数据保存到一个或者多个已经挂载的磁带或带库中。虽然商业的备份软件也能完成将数据自动备份到存储设备上,但代价昂贵。
    对于正在使用一个商业的备份软件如legato和Veritas等的用户,更应该尝试一下bacula,因为bacula完全可以和这些商业软件相媲美,更重要的是,bacula是开源软件,如果某些关键功能无法通过实现,可以选择修改开源软件代码的方式来实现。通过对开源软件进行简单的修改来满足特殊需求,大大简化了用户的工作。

    三、bacula的功能特点

    1.支持多种备份方式
    (1)完全备份
    完整备份就是完整地备份业务数据。例如,星期一用一盘磁带对整个业务系统进行备份,星期二用另一盘磁带对整个业务系统进行备份,依此类推。
    这种备份策略的优点是:当发生数据丢失时,只要用一盘磁带(即灾难发生前一天的备份磁带)就可以恢复丢失的数据。当然,它也有不足之处。首先,由于每天都对整个系统进行完全备份,难免造成备份数据大量重复。这些重复的数据占用了大量的磁带空间,这对用户来说就意味着增加成本。其次,如果备份的数据量很大,那么备份所需的时间也就较长。对于一些业务繁忙、备份时间有限的企业来说,选择这种备份策略是不明智的。
    (2)增量备份
    增量备份是以上次备份为基准的备份方式,也就是只对每天新增的或被修改过的数据进行备份,例如,星期天进行一次完全备份,星期一备份从星期天到星期一之间增加的数据,星期二备份从星期一到星期二之间增加的数据,依次类推。
    这种备份策略的优点是:只备份当天更新或者增加的数据,因而数据量小,节省了磁带空间,缩短了备份时间。当然,它也是有缺点的。当灾难发生时,数据的恢复过程比较麻烦。如果系统在星期五的早晨发生故障,丢失了大量的数据,那么现在就要将系统恢复到星期四时的状态。这时系统管理员首先要找到星期天的完全备份进行系统恢复,然后找到星期一的备份来恢复星期一的数据,接着找到星期二的备份来恢复星期二的数据。按照这种方式,直到恢复周四的数据为止,很明显,这种方式很繁琐。备份的可靠性也很差。在这种备份方式下,各个备份间的关系就像一个链子,环环相扣,其中任何一个备份出了问题都会导致整条链子脱节。在上例中,若星期三的备份出了故障,那么管理员最多只能将系统数据恢复到星期二时的状态。
    (3)差异备份
    差异备份是以完全备份为基准的一种备份方式。例如,系统管理员在星期天对系统进行一次完全备份,在星期一备份星期天到星期一之间的数据,在星期二备份星期天到星期二之间的数据,依次类推,也就是备份当天所有与星期天不同的数据(新的或修改过的)。
    差异备份方式避免了上面两种备份策略的缺陷,同时,又具有以上两种备份方式的所有优点。首先,它无需每天都对系统做完全备份,因此备份数据量小,备份所需时间短,并节省空间;其次,它在灾难恢复时也很方便,只需要两个备份即可,即完全备份与灾难发生前一天的备份,就可以将系统恢复。
    其实每种备份方式都不是孤立存在的,在实际的备份应用中,通常采用以上三种方式相结合的备份策略。例如每周一至周六进行一次增量备份或差异备份,每周日进行全备份,每月底进行一次完全备份,每年底进行一次完全备份。
    通过对完三种备份方式的介绍,可以知道每种备份的数据量是不同的:完全备份>差分备份>增量备份。因而,在进行数据恢复时,使用的数据也不尽相同。如果使用完全备份的方式,只需要利用上次的完全备份就可以恢复所有数据;如果使用完全备份+增量备份的方式,则需要利用上次的完全备份+上次完全备份后的所有增量备份才能恢复所有数据;如果使用完全备份+差异备份的方式,则只需要利用上次的完全备份+最近的一个差异备份就可以恢复所有数据。

    2.支持多种恢复方式
     可以恢复某个目录、文件到指定的位置,恢复时自动恢复数据的原始结构。
     可以恢复所有数据到指定位置,恢复时自动恢复数据的原始结构。
     可以保存恢复文件或目录的权限、属主、访问时间等属性。
     可以恢复某个时间点的备份到指定位置,恢复时自动恢复数据的原始结构。

    3.支持多种文件系统下的备份与恢复
    bacula支持的文件系统有:ext3、ext2、reiserfs、xfs、jfs、smbfs、 iso9660和ntfs等。

    4.支持各种备份介质
     支持把备份写到磁盘
     支持把备份写到磁带
     支持把备份写到磁盘阵列
     支持把备份写到光盘

    5.支持多种操作系统
     Linux(RHEL/SUSE/Centos)
     UNIX
     Mac
     Windows (Windows 98、 Windows Me、 Windows NT、Windows XP、Windows 2000和 Windows 2003)

    6.强大的内部功能
     支持定时备份,无需人工干预
     支持终端命令控制,更加灵活
     支持正则表达式,可以对备份文件进行更严格的匹配
     支持MD5和SHA1两种签名校验
     支持压缩备份,备份效率更高,传输更快
     支持报表自动绘制功能,可以自动生成备份报表和恢复报表

    四、bacula的工作原理

    1.bacula基本组成
    一个完整的bacula备份系统,由下面5个部分组成。
     Director Daemon:以下简称Director,负责监听所有的备份、恢复、验证、存档事务,以及定制备份和恢复文件计划等,并将整个系统运行状况记录在一个数据库中。支持Director Daemon的数据库有MySQL、PostgreSQL 和SQLite,推荐使用MySQL。Director的配置文件为bacula-dir.conf。
     Storage Daemon:以下简称SD,在备份数据时,用来指定备份和恢复数据的存储介质(存储介质可以是本地磁盘,光纤磁盘阵列、磁带和DVD等),主要负责将数据备份到存储介质上。而在数据恢复时,负责将数据从存储介质中传送出去。SD的配置文件为bacula-sd.conf。
     File Daemon:以下简称FD,是一个安装在需要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出;在恢复数据时,它负责接收数据并执行恢复操作。FD的配置文件为bacula-fd.conf。
     Console:是一个管理控制台,用户可以通过这个控制台连接到Director Daemon进行管理备份与恢复操作,有三种管理方式:基于文本的控制台界面、 GNOME的界面和wxWidgets的图形界面。Console 端的配置文件是bconsole.conf。
    Monitor:一个进程监控端,负责监控Director Daemon、Storage Daemon和File Daemon的守护进程。bacula备份系统的组成如图1所示。

    图1 bacula备份系统的组成

    从图1中可以看出,bacula的备份恢复流程如下:
    首选,通过Console连接到Director端,备份恢复操作开始。
    接着,Director端从自己的数据库中调出记录信息,对存储端SD与客户端FD的任务进行协调。
    然后,客户端FD负责验证Director的操作许可,如果验证通过,则允许连接存储端SD。
    最后,客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD指定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD指定的位置上,完成备份恢复过程。
    需要注意的是,在bacula的整个备份恢复系统中,客户端FD和SD要保证网络连接畅通,为了保证备份以及恢复数据的速度和效率,最好让客户端FD和SD处在一个网段中。

    2.bacula各个组成部分的关联性
    在baclua的5个组成部分中,3个主要配置文件是相互关联的,修改任何一个配置文件,另外两个文件都要进行相应的改动。为了使读者对这3个配置文件有更清晰的认识,图2列出了这3个文件之间的相互关系。

     图2 bacula配置文件之间的关系

    Bacula安装

    根据要求:1、支持远程备份;2、支持完全、增量、压缩备份、差分备份。 决定先学习Bacula摘要:只使用1台主机,搭建bacula环境,实现服务器备份。安装环境 centos 7

       
     
               目 录
    一、系统要求

    1.1检查gccgcc-c++编译环境

    1.2 检查mysql

    关闭防火墙

    systemctl stop firewalld

    systemctl disable firewalld

    关闭selinux

    setenforce 0

    # vim /etc/selinux/config 

    卸载旧版mysql 

    安装新mysql 5.7.23

    SELINUX=disabled

    getenforce

    https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar

    mysql安装参照:通道

     进入mysql-设置root密码-修改密码复杂度-建立bacula账号-授权-flush privileges;-exit
    设置初始root密码:
    mysql>alter user root@localhost identified by '密码要求复杂度';
    修改mysql密码复杂度:
    mysql> show variables like'validate_password%';
    mysql> show variables like'validate_password%';
    +--------------------------------------+--------+
    | Variable_name                        | Value  |
    +--------------------------------------+--------+
    | validate_password_check_user_name    | OFF    |
    | validate_password_dictionary_file    |        |
    | validate_password_length             | 8      |
    | validate_password_mixed_case_count   | 1      |
    | validate_password_number_count       | 1      |
    | validate_password_policy             | MEDIUM |
    | validate_password_special_char_count | 1      |
    +--------------------------------------+--------+
    7 rows in set (0.00 sec)
     
    mysql> set global validate_password_policy=0;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> set global validate_password_length=1;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show variables like 'validate_password%';
    +--------------------------------------+-------+
    | Variable_name                        | Value |
    +--------------------------------------+-------+
    | validate_password_check_user_name    | OFF   |
    | validate_password_dictionary_file    |       |
    | validate_password_length             | 4     |
    | validate_password_mixed_case_count   | 1     |
    | validate_password_number_count       | 1     |
    | validate_password_policy             | LOW   |
    | validate_password_special_char_count | 1     |
    +--------------------------------------+-------+
    7 rows in set (0.00 sec)
    mysql> alter user root@localhost identified by 'aaa111';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> create user bacula@localhost identified by 'bbb222';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> create user bacula@'%' identified by 'bbb222';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> grant all privileges on *.* to bacula@localhost;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> grant all privileges on *.* to bacula@'%';
    Query OK, 0 rows affected (0.00 sec)

       mysql> flush privileges;
       Query OK, 0 rows affected (0.00 sec)

    查看mysql全部用户: 

    mysql>select user,host from mysql.user;

    查看mysql库列表:

    mysql>show databases;

    进入库:

    mysql>use 库名;

    查看指定库中列表:

    mysql>show tables; 

    查看指定用户权限:

    mysql> show grants for bacula;

     
    二 服务端安装bacula
    2.1 安装bacula
    2.2 创建mysql脚本
    2.3 启动 bacula 进程
    2.4 添加存储介质
    三、客户端安装bacula
    3.1 安装bacula
    3.2 启动 bacula 的 fd 进程

    一、系统要求
      安装和使用bacula需要gcc、gcc-c++、mysql的支持,安装前先确保已安装上述程序

    1.1检查gccgcc-c++编译环境

       #rpm -qa gcc gcc-c++

     yum install -y gcc gcc-c++

     1.2 检查mysql 
        # rpm -qa mysql mysql-devel mysql-server     
     

    二 服务端安装bacula
      2.1 下载&安装bacula
    在这个server上安装的bacula 具备了directory、storage、catalog.三个功能。

    #  tar zxvf bacula-7.0.5.tar.gz
    # cd bacula-7.0.5

    ./configure --prefix=/usr/local/bacula
    --sbindir=/usr/local/bacula/sbin
    --sysconfdir=/usr/local/bacula/etc
    --enable-smartalloc
    --with-working-dir=/usr/local/bacula/bin/working
    --with-subsys-dir=/usr/local/bacula/bin/working
    --with-pid-dir=/usr/local/bacula/bin/working
    --with-mysql


    # make&&make install

    #make install-autostart
    这里指定了路径为/usr/local/bacula,默认情况下,bacula 的安装路径为/etc/bacula. 

    设置环境变量:

    vim /etc/profile 在最后一行加入: export PATH=$PATH:/usr/local/bacula/sbin 保存退出:source /etc/profile


    ****************************************************
    bacula目录结构:

    [root@localhost home]# cd bacula/
    [root@localhost bacula]# ls 
    bin  etc  lib  sbin  share
    [root@localhost bacula]# ls etc/
    bacula           btraceback.gdb          grant_bacula_privileges
    bacula_config    btraceback.mdb          grant_mysql_privileges
    bacula-ctl-dir   create_bacula_database  make_bacula_tables
    bacula-ctl-fd    create_mysql_database   make_catalog_backup
    bacula-ctl-sd    delete_catalog_backup   make_catalog_backup.pl
    bacula-dir.conf  disk-changer            make_mysql_tables
    bacula-fd.conf   drop_bacula_database    mtx-changer
    bacula-sd.conf   drop_bacula_tables      mtx-changer.conf
    bconsole         drop_mysql_database     query.sql
    bconsole.conf    drop_mysql_tables       update_bacula_tables
    btraceback.dbx   dvd-handler             update_mysql_tables
    [root@localhost bacula]# 


    *****************************************************************************************************

    1.2 创建mysql脚本
     由于bacula的操作数据需要保存到数据库,所以要创建mysql数据库和相关的表。
    # cd bacula/etc

    #./grant_mysql_privileges

    ***********************************************
    执行这一步可能遇到这个问题: ./grant_mysql_privileges 
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    Error creating privileges.

    解决策略:
    (1)在命令后面加上 -p密码
         ./grant_mysql_privileges  -proot
    (2)用vi打开 grant_mysql_privileges文本,加入登录密码

    if $bindir/mysql $* -u root -proot -f <<END-OF-DATA

    #!/bin/sh
    #
    # shell script to grant privileges to the bacula database
    #
    # Copyright (C) 2000-2017 Kern Sibbald
    # License: BSD 2-Clause; see file LICENSE-FOSS
    #
    db_user=${db_user:-bacula}
    bindir=/usr/bin
    db_name=${db_name:-bacula}
    db_password=
    if [ "$db_password" != "" ]; then
       pass="identified by '$db_password'"
    fi
    db_ssl_options=
    if [ "$db_ssl_options" != "" ]; then
       ssl_options="require $db_ssl_options"
    fi
    
    if $bindir/mysql $* -u root -p -f 2>/dev/null 1>/dev/null  <<EOD
    use mysql;
    create user ${db_user} ${pass};
    EOD
    then
      echo "Created MySQL database user: ${db_user}"
    fi
    
    if $bindir/mysql $* -u root -p -f <<END-OF-DATA
    use mysql
    grant all privileges on ${db_name}.* to ${db_user}@localhost ${pass} ${ssl_options};
    grant all privileges on ${db_name}.* to ${db_user}@"%" ${pass} ${ssl_options};
    select * from user;
    flush privileges;
    END-OF-DATA
    then
       echo "Privileges for user ${db_user} granted on database ${db_name}."
       exit 0
    else
       echo "Error creating privileges."
       exit 1
    fi
    

      


    接下来的建库建表同上
    ***********************************************
    #./ create_mysql_database
    #./ make_mysql_tables

    二、客户端安装bacula

    关闭防火墙

    systemctl stop firewalld

    systemctl disable firewalld

    检查gcc gcc-c++环境

    rpm -qa | grep gcc*

    安装gcc gcc-c++

    yum install -y gcc gcc-c++
    2.1 安装 bacula
    该客户端bacula只作fd(被备份文件)。
    # tar zxvf bacula-7.0.5.tar.gz
    # cd bacula-7.0.5
    # ./configure --enable-client-only   # 默认安装在/etc/bacula/目录下,也可以加--prefix=    指定安装路径
    #make&&make install

    bacula的配置文件有四个,分别对应主控端(bacula-dir.conf)、存储端(bacula-sd.conf)、客户端(bacula-fd.conf)、控制台(bconsole.conf)。
     

    一、各配置文件之间的关系
    组成 Bacula 备份系统有三个主要的部分,包括主控端、存储端和客户端,这三个部分都 有 各 自 的 配 置 文 件 , 相 对 应 的 是 主 控 端 ( bacula-dir.conf , 下 同 )、 存 储 端(bacula-sd.conf,下同)和客户端(bacula-fd.conf,下同),各配置文件中的部分项存在一定的关联,官方也用一张图形象的表示了它们之间的关系,看下图:


    图中使用箭头连接主控端配置文件的相关项与其它配置文件的相关项,所连接的相关项的值必须是相同的。下面用文件说明一下:
    1.   主控端配置文件的 Director{}项。
    Name 值与控制台配置文件(bconsole.conf,下同)的 Director{}项、存储端配置文件的 Director{}项及客户端配置文件的 Director{}项的 Name 值相同;Password 值与控制台配置文件的 Director{}项的 Password 值相同。
        2.     主控端配置文件的 Storage{}项。Device 值与存储端配置文件的 Device{}项的 Name 值相同;MediaType 值与存储端配置文件的 Device{}项的 MediaType 值相同;Password 值与存储端配置文件的 Director{}项的 Password 值相同。
        3.     主控端配置文件的 Client{}项。Password 值与客户端配置文件的 Director{}项的 Password 值相同。

    理解了图中表示的意思,对配置 Bacula 非常有帮助。所以希望大家先熟悉此图之后再做配置。

     
    二 主控端( bacula-dir.conf)文件配置

    下图是主控端配置文件的主要选项。图中对其做了简单的介绍:

    为什么 Job 项与其他选项用线连接呢?
    因为在执行一个任务(Job)的过程中,需要调用到其他选项的参数设置,从而使得任务的完整。如果这么多的参数全部写在 Job 选项里,那么就会将导致 Job 选项的参数设置非常复杂,这样的模块化设计显得更直观,也能使程序运行更效高效。下面用一句话说明一下:
    建立一个备份任务(Job)时,就需要选择一台备份的计算机(Client),然后确定需要备份的文件(FileSet)及备份时间周期和备份类型(Schedule),最后选择备份到哪里(Storage)以及文件存储的方式(Pool),让管理者知道备份任务的的情况(Messages)。
    注意:Job 项也可以是还原任务。
    Bacula Director 服务管理所有的备份,恢复,验证和存档事务,所以主控端的配置文件也是最为复杂的。下面结合实际使用的配置文件对文件中各选项的参数设置进行详细的介绍。
     

    Director{
        Name = saas-dir                                               #指定主控端名称
        Password = "ConsolePassword"                    #设置主控端密码,控制台连接时需要使用。
        
        QueryFile = "/usr/local/bacula/etc/query.sql"             #指定执行sql脚本存放的路径
          WorkingDirectory = "/usr/local/bacula/bin/working"
          PidDirectory = "/usr/local/bacula/bin/working"                #指定进程 ID 文件存放目录,必选。一般在./configure 时已经指定
        Maximum Concurrent Jobs = 20                                   #设置同时执行的最大任务数量,默认设置为 1。

        DirPort = 9101    #default 9101                                        #指定端口号监听控制台连接,默认是 9101。        

        #troggle
        MaximumConsoleConnections = 20  #指定控制台最大同时连接数,默认是 20。
        Messages = Daemon                          #引用 Messages{}的 Name 值

    }
     

    #JobDefs 选项允许所有可以出现在 Job 选项中的参数。但是,JobDefs 不会创建一个作业(Job),而是 Job{}引用它的参数设置。
    JobDefs{
        
        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 时,此时必选。

    }



    Storage{
        
        Name = saas-sd                 
        Address =192.168.1.170 #storage Ip               #指定存储端的地址,可以是 IP 或者计算机名,如果选择计算机名,必须在/etc/hosts文件中加入解析条目,让系统能解析到此计算机名。必选。
        SD Port =9103                                                      #指定存储端的端口号,默认为 9103。
        Password = "StoragePassword"                         #指定存储端的密码

        Device = FileStorage #指定存储的设备。引用存储端配置文件的 Device{}的 Name 值,必选。
        Media Type = File        #与存储端配置文件的 Device{}的 Media Type 值相同,必选

        Maximum Concurrent Jobs = 20         #定义此存储端所允许同时进行的任务最大数量,默认为 1。
      
    }


    Schedule{
        
        Name = "schedule"
        Run = Level=Full daily at 11:20          #指定覆盖 Job{}默认参数的参数及执行作业的时间周期。具体语法规范见附件。
        Run = Level=Incremental daily at 11:25   

    }



     

    #Fileset{}定义哪些文件需要备份或者哪些文件排除在备份任务中,定义一个Fileset{}是每个备份任务必须的。可定义一个文件或者目录清单,可将压缩、加密和签名各种备份方案应用到每个文件。
    Fileset{
        Name = "Full Set"  
        Include{

            Options{
                compression=GZIP

                signature = MD5
            }
            File = /root/桌面/备份用的test
        }
    }



    Client{
        
        Name= saas-fd
        Address = localhost   #client IP 指定客户端地址,可以是 IP 或者计算机名,如果选择计算机名,必须在/etc/hosts文件中加入解析条目,让系统能解析到此计算机名。必选。
        FDPort = 9102            #指定客户端的端口号,默认为 9102。
        Password = "ClientPassword"   #客户端的密码
        Catalog = MyCatalog      #引用 Catalog{}的 Name 值,为客户端调用。必选。
        Maximum Concurrent Jobs = 20
        
        
    }

    Catalog {   # 关于数据库的定义

      Name = MyCatalog         

      dbname = "bacula";        #指定数据库名称
      dbuser = "bacula";         #指定用户名,
      dbpassword = ""           #指定数据库密码


    }

    #完全备份
    Job{
        
        Name = "FullBackup"
        Type=Backup
        Level=Full
        JobDefs="DefaultJob"   #引用 JobDefs{}的 Name 值。可选。

    }

    #增量备份
    Job{

        Name = "IncrementalBackup"
        Type=Backup                             #Job 类型,定义备份作业或还原作业。取值有 Backup、Restore、Verify 和 Admin。
        Level=Incremental                    #备份类型,当 type 参数为备份作业时,取值有 Full、Incremental 和 Differential;还原作业不需要设置此选项;当 type 参数为 Verify 作业时,取值有 InitCatalog、Catalog、VolumeToCatalog 和 DiskToCatalog。

       
        JobDefs="DefaultJob"          #引用 JobDefs{}的 Name 值。可选。


    }

    #差分备份
    Job{
        
        Name = "DifferentialBackup"
        Type=Backup
        Level=Differential
        JobDefs="DefaultJob"
        Rerun Failed Levels = yes #当运行任务运行失败后一次备份作业时,将提升更高的备份类型,比如差异备份异常终止,下次备份将执行完全备份。默认为 no

    }


    #备份还原
    Job{

        Name="restore"
        Type= Restore
        Bootstrap =    "/usr/local/bacula/working/Restore1.bsr"  #指定引导文件,启动还原作业时自动创建。此参数只用于 Job 类型为 Restore 时,此时必选。 这个文件必须存在于电脑上,如果没有手动touch
        
        Pool = Default    
        Client =  saas-fd
        Fileset =  "Full Set"
        Messages =Standard
        Storage = saas-sd
        
        #Where = /root/桌面/备份用的test 
        
    }




    # Reasonable message delivery -- send most everything to email address
    #  and to the console
    Messages {
      Name = Standard

     mailcommand = "/sbin/bsmtp -h localhost -f "BaculaBacula <%r>" -s "Bacula: %t %e of %c %l" %r"
      operatorcommand = "/sbin/bsmtp -h localhost -f "BaculaBacula <%r>" -s "Bacula: Intervention needed
    for %j" %r"
      mail = root@localhost = all, !skipped
      operator = root@localhost = mount
      console = all, !skipped, !saved

      append = "/usr/local/bacula/log/bacula.log" = all, !skipped
      catalog = all
    }


    #
    # Message delivery for daemon messages (no job).
    Messages {
     Name = Daemon
      mailcommand = "/sbin/bsmtp -h localhost -f "BaculaBacula <%r>" -s "Bacula daemon message" %r"
      mail = root@localhost = all, !skipped
      console = all, !skipped, !saved
      append = "/usr/local/bacula/log/bacula.log" = all, !skipped
    }

    # Default pool definition 
    Pool {
      Name = Default
      Pool Type = Backup
      Recycle = yes                       # 是否重复使用 Volume
      AutoPrune = yes                     # 是否自动修剪

      Volume Retention = 365 days         # Volume 保留时间,默认为 1 年

      Maximum Volume Bytes = 50G          # 最大Volume(卷)的大小
      Maximum Volumes = 100               # Limit number of Volumes in Pool
    }


    #
    # Restricted console used by tray-monitor to get the status of the director
    #
    Console {
      Name = saas-mon                 #指定 Console{}名称,必选。
      Password = "MonitorPassword"              #指定 Console{}密码,必选。
      CommandACL = status, .status
    }



    三 、存储端配置文件详解
     

    Storage{

        Name = saas-sd            #指定 Storage{}名称,与主控端storage{}名称相同
          WorkingDirectory = "/usr/local/bacula/bin/working"           #指定工作目录,目录必须已经存在,必选。一般在./configure时已经指定。
          PidDirectory = "/usr/local/bacula/bin/working"      #指定进程 ID 文件存放目录,必选。一般在./configure 时已经指定。

        SDPort =9103                 
        
        Maximum Concurrent Jobs = 20 

    }


    Device {                           #定义Device

        Name = FileStorage                #定义Device的名称,这个名称在Director端配置文件bacula-dir.conf中的Storage逻辑段Device项中被引用

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

        Archive Device = /tmp/backup     #Archive Device用来指定备份存储的介质,可以是cd、dvd、tap等,这里是将备份的文件保存的/tmp/backup目录下

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

        Random Access = Yes;               #设置是否采用随机访问存储介质,这里选择yes

        AutomaticMount = yes;               #表示当存储设备打开时,是否自动使用它,这选择yes

        RemovableMedia = no;                #是否支持可移动的设备,如tap或cd,这里选择no

        AlwaysOpen = no;                   #是否确保t设备总是可用

    }


    Director{

        Name =saas-dir           #指定 Director{}名称,设置主控端 配 置 文 件 中 Director{} 的 Name 值
        Password="StoragePassword" #指 定 主 控 端 配 置 文 件Storage{}的 Password 值,必选。

    }
     

    #托盘监控相关设置
    Director {
      Name = saas-mon   #指定 Director{}名称,设置托盘监控配置文件中 Monitor{}的Name 值,必选。
      Password = "MonitorPassword"
      Monitor = yes              #是否开启监控。默认值 no

    }


     Messages {            # 为存储端SD定义一个日志或消息处理机制
      Name = Standard
      director = saas-dir = all
    }

    四、客户端配置文件详解 (bacula-fd.conf)


    Director {
      Name = saas-dir  # 与服务器上的bacula-dir.conf中一致

      Password = "ClientPassword"  # 与服务器上的bacula-dir.conf文本中client定义的一致
    }

    Director {
      Name = saas-mon        # 与服务器上的bacula-dir.conf中一致
      Password = "MonitorPassword"  # 与服务器上的bacula-dir.conf中一致
      Monitor = yes
    }

    FileDaemon {                       
      Name = saas-fd      # 指自己,对应主控制器中client的Name

      FDport = 9102                  # 监听端口r
      WorkingDirectory = /usr/local/bacula/bin/working
      Pid Directory = /var/run
      Maximum Concurrent Jobs = 20
    }
    Messages {
      Name = Standard
      director = Client-dir = all, !skipped, !restored
    }



    五、管理配置文件介绍(bconsole.conf)

    Director {
      Name = saas-dir
      DIRport = 9101
      address = localhost          # 服务器位置
      Password = "ConsolePassword"  # 与bacula-dir.conf中director中一致
    }

     用如下命令验证各配置是否有问题:

    bacula-dir -tc bacula-dir.conf

    如果bacula-dir未安装,则先安装

    yum search bacula-dir

    [root@centos7-6 etc]# yum search bacula-dir
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.aliyun.com
     * extras: mirrors.shu.edu.cn
     * updates: mirrors.aliyun.com
    ================================================ N/S matched: bacula-dir ================================================
    bacula-director.x86_64 : Bacula Director files
    
      Name and summary matches only, use "search all" for everything.
    

    yum install -y bacula-director.x86_64

    在安装和配置好了bacula后,我们就可以开始使用它来进行备份和还原操作。


    一、开启主控端、存储端、客户端线程
       启动线程方式有两种,一种是执行bacula启动脚本(存在与bacula/etc目录下(安装时指定的)),另一种是执行bacula启动二进制文件(存在/bacula/sbin目录下)。建议使用第一种,原因是执行时终端可以看到执行过程。
    1.1启动服务端线程(服务端装有主控端、存储端和控制台):
    #./bacula-ctl-dir start
    #./bacula-ctl-sd start
    或(第二种)
     #./bacula-dir  
    #./bacula-sd

    1.2 启动客户端线程
    (按照我的文档,客户端存储路径在/etc/bacula(默认路径)下,找到对应的文件)。
    #./bacula-ctl-fd start
    #./bacula-fd
     查看9101 9102 9103端口是否启用
    netstat -lnp | grep 91
    [root@centos7-6 ~]# netstat -lnp | grep 91
    tcp        0      0 192.168.10.106:9101     0.0.0.0:*               LISTEN      10763/bacula-dir    
    tcp        0      0 0.0.0.0:9102            0.0.0.0:*               LISTEN      10584/bacula-fd     
    tcp        0      0 0.0.0.0:9103            0.0.0.0:*               LISTEN      10625/bacula-sd  
    

    如9101未启用,进mysql添加bacula用户并授权:

    create user 'bacula'@'localhost' identified by 'bbb222';
    create user 'bacula'@'%' identified by 'bbb222';
    GRANT  ALL  ON  *.*  TO  ‘bacula’@‘%’;

    flush privileges;
    把bacula的密码,填入bconsole.conf 文件中bacula用户密码部分
     
    二、Bconsole (bacula控制台)
    Bconsole 是一个 shell 界面(TTY 风格)的控制台,允许用户在 Bacula 主控端守护进程运行时管理 Bacula。控制台也有两种方式进入,二进制和脚本,在对应目录下输入 # ./bacula
        在 Bconsole 中可以执行很多操作,如执行备份任务、还原任务、查看消息、查看任务状态等等,下面是所有可以执行的操作。
    [root@localhost sbin]# ./bconsole 
    Connecting to Director localhost:9101
    1000 OK: 1 saas-dir Version: 7.0.5 (28 July 2014)
    Enter a period to cancel a command.
    *help
      Command       Description
      =======       ===========
      add           Add media to a pool
      autodisplay   Autodisplay console messages
      automount     Automount after label
      cancel        Cancel a job
      create        Create DB Pool from resource
      delete        Delete volume, pool or job
      disable       Disable a job, attributes batch process
      enable        Enable a job, attributes batch process
      estimate      Performs FileSet estimate, listing gives full listing
      exit          Terminate Bconsole session
      gui           Non-interactive gui mode
      help          Print help on specific command
      label         Label a tape
      list          List objects from catalog
      llist         Full or long list like list command
      messages      Display pending messages
      memory        Print current memory usage
      mount         Mount storage
      prune         Prune expired records from catalog
      purge         Purge records from catalog
      quit          Terminate Bconsole session
      query         Query catalog
      restore       Restore files
      relabel       Relabel a tape
      release       Release storage
      reload        Reload conf file
      run           Run a job
      status        Report status
      stop          Stop a job
      setdebug      Sets debug level
      setbandwidth  Sets bandwidth
      setip         Sets new client address -- if authorized
      show          Show resource records
      sqlquery      Use SQL to query catalog
      time          Print current time
      trace         Turn on/off trace to file
      truncate      Truncate one or more Volumes
      unmount       Unmount storage
      umount        Umount - for old-time Unix guys, see unmount
      update        Update volume, pool or stats
      use           Use catalog xxx
      var           Does variable expansion
      version       Print Director version
      wait          Wait until no jobs are running

    When at a prompt, entering a period cancels the command.

    三、备份还原演示
    3.1. 备份 Job
     进入 bconsole 之后,输入 run 命令
     
    [root@localhost sbin]# ./bconsole 
    Connecting to Director localhost:9101
    1000 OK: 1 saas-dir Version: 7.0.5 (28 July 2014)
    Enter a period to cancel a command.
    *run
    Automatically selected Catalog: MyCatalog
    Using Catalog "MyCatalog"
    A job name must be specified.
    The defined Job resources are:
         1: FullBackup
         2: IncrementalBackup
         3: DifferentialBackup
         4: restore
    Select Job resource (1-4): 1

    列表中的 Job 名对应的是 bacula-dir.conf 配置文件中的 Job{}中的 Name 值,这里选择1,回车
     
    Select Job resource (1-4): 1
    Run Backup job
    JobName:  FullBackup
    Level:    Full
    Client:   saas-fd
    FileSet:  Full Set
    Pool:     Default (From Job resource)
    Storage:  saas-sd (From Job resource)
    When:     2015-07-02 13:49:03
    Priority: 10
    OK to run? (yes/mod/no): mod
     
    系统会自动列出配置文件中的 FullBackup 已定义好的设定值,因为是实时执行 Job,该执行时间是当前时间,如果马上执行输入’yes’就可以了,如果要修改相关选项,需要输入’mod’,这里更改一下执行时间;

    OK to run? (yes/mod/no): mod
    Parameters to modify:
         1: Level
         2: Storage
         3: Job
         4: FileSet
         5: Client
         6: When
         7: Priority
         8: Pool
         9: Plugin Options
    Select parameter to modify (1-9): 6
    Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): 2015-07-02 14:00:00
    Run Backup job
    JobName:  FullBackup
    Level:    Full
    Client:   saas-fd
    FileSet:  Full Set
    Pool:     Default (From Job resource)
    Storage:  saas-sd (From Job resource)
    When:     2015-07-02 14:00:00
    Priority: 10
    OK to run? (yes/mod/no): yes
    Job queued. JobId=80
    *
     
    已建立 Job,JobId 为 80。

    3.2 查看 Job 状态
    执行 status 命令(或st ) 查看任务状态,JobId 为 80;
     
    *status
    Status available for:
         1: Director
         2: Storage
         3: Client
         4: Scheduled
         5: All
    Select daemon type for status (1-5): 5
    saas-dir Version: 7.0.5 (28 July 2014) x86_64-unknown-linux-gnu redhat (Core)
    Daemon started 02-7月015 10:11. Jobs: run=6, running=1 mode=0,0
     Heap: heap=393,216 smbytes=416,834 max_bytes=769,569 bufs=356 max_bufs=484

    Scheduled Jobs:
    Level          Type     Pri  Scheduled          Job Name           Volume
    ===================================================================================
    Full           Backup    10  03-7月015 11:20   FullBackup         test10
    Full           Backup    10  03-7月015 11:20   DifferentialBackup test10
    Full           Backup    10  03-7月015 11:20   IncrementalBackup  test10
    Incremental    Backup    10  03-7月015 11:25   FullBackup         test10
    Incremental    Backup    10  03-7月015 11:25   IncrementalBackup  test10
    Incremental    Backup    10  03-7月015 11:25   DifferentialBackup test10
    ====

    Running Jobs:
    Console connected at 02-7月015 13:57
     JobId  Type Level     Files     Bytes  Name              Status
    ======================================================================
        80  Back Full          0         0  FullBackup        is waiting for its start time (02-7月 14:00)
    ====

    Terminated Jobs:
     JobId  Level    Files      Bytes   Status   Finished        Name 
    ====================================================================
        65  Full          6    39.56 K  OK       01-7月015 19:47 FullBackup
        67                0         0   Cancel   01-7月015 20:24 restore
        71                6    39.56 K  OK       01-7月015 20:29 restore
        72                6    39.56 K  OK       01-7月015 20:32 restore
        74  Full          2    19.78 K  OK       02-7月015 11:37 FullBackup
        75  Full          2    19.78 K  OK       02-7月015 11:37 IncrementalBackup
        76  Full          2    19.78 K  OK       02-7月015 11:37 DifferentialBackup
        77  Incr          2    19.78 K  OK       02-7月015 11:37 FullBackup
        78  Incr          2    19.78 K  OK       02-7月015 11:37 IncrementalBackup
        79  Full          2    19.78 K  OK       02-7月015 11:37 DifferentialBackup

    ====
    Connecting to Storage daemon saas-sd at 192.168.1.170:9103

    saas-sd Version: 7.0.5 (28 July 2014) x86_64-unknown-linux-gnu redhat (Core)
    Daemon started 02-7月015 11:37. Jobs: run=6, running=0.
     Heap: heap=135,168 smbytes=473,290 max_bytes=1,086,762 bufs=111 max_bufs=177
     Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0

    Running Jobs:
    No Jobs running.
    ====

    Jobs waiting to reserve a drive:
    ====

    Terminated Jobs:
     JobId  Level    Files      Bytes   Status   Finished        Name 
    ===================================================================
        63                2    20.02 K  OK       01-7月015 16:28 restore
        65  Full          6    40.32 K  OK       01-7月015 19:47 FullBackup
        71                6    40.32 K  OK       01-7月015 20:29 restore
        72                6    40.32 K  OK       01-7月015 20:32 restore
        74  Full          2    20.02 K  OK       02-7月015 11:37 FullBackup
        75  Full          2    20.02 K  OK       02-7月015 11:37 IncrementalBackup
        76  Full          2    20.02 K  OK       02-7月015 11:37 DifferentialBackup
        77  Incr          2    20.02 K  OK       02-7月015 11:37 FullBackup
        78  Incr          2    20.02 K  OK       02-7月015 11:37 IncrementalBackup
        79  Full          2    20.02 K  OK       02-7月015 11:37 DifferentialBackup
    ====

    Device status:

    Device "FileStorage" (/tmp/backup) is not open.
    ==
    ====

    Used Volume status:
    ====

    ====

    Connecting to Client saas-fd at localhost:9102

    saas-fd Version: 7.0.5 (28 July 2014)  x86_64-unknown-linux-gnu redhat (Core)
    Daemon started 02-7月015 11:37. Jobs: run=6 running=0.
     Heap: heap=135,168 smbytes=588,233 max_bytes=886,066 bufs=86 max_bufs=153
     Sizes: boffset_t=8 size_t=8 debug=0 trace=0 mode=0,0 bwlimit=0kB/s

    Running Jobs:
    Director connected at: 02-7月015 13:57
    No Jobs running.
    ====

    Terminated Jobs:
     JobId  Level    Files      Bytes   Status   Finished        Name 
    ===================================================================
        63                2    19.78 K  OK       01-7月015 16:28 restore
        65  Full          6    39.56 K  OK       01-7月015 19:47 FullBackup
        71                6    39.56 K  OK       01-7月015 20:29 restore
        72                6    39.56 K  OK       01-7月015 20:32 restore
        74  Full          2    19.78 K  OK       02-7月015 11:37 FullBackup
        75  Full          2    19.78 K  OK       02-7月015 11:37 IncrementalBackup
        76  Full          2    19.78 K  OK       02-7月015 11:37 DifferentialBackup
        77  Incr          2    19.78 K  OK       02-7月015 11:37 FullBackup
        78  Incr          2    19.78 K  OK       02-7月015 11:37 IncrementalBackup
        79  Full          2    19.78 K  OK       02-7月015 11:37 DifferentialBackup
    3.3 查看 Job 执行详情
    执行 messages 命令查看日志。注意当 Job 执行完成后,系统自动将信息显示在bconsole 控制台,如果信息已显示后,再次查看此任务信息,则需要查看 Bacula 日志文件(日志文件由bacula配置bacula-dir.conf中的Messages指定)

    You have messages.
    *messages
    02-7月 14:00 saas-dir JobId 80: Start Backup JobId 80, Job=FullBackup.2015-07-02_13.53.30_12
    02-7月 14:00 saas-dir JobId 80: Using Device "FileStorage" to write.
    02-7月 14:00 saas-sd JobId 80: Volume "test10" previously written, moving to end of data.
    02-7月 14:00 saas-sd JobId 80: Ready to append to end of Volume "test10" size=185,783
    02-7月 14:00 saas-sd JobId 80: Elapsed time=00:00:10, Transfer rate=2.002 K Bytes/second
    02-7月 14:00 saas-dir JobId 80: Bacula saas-dir 7.0.5 (28Jul14):
      Build OS:               x86_64-unknown-linux-gnu redhat (Core)
      JobId:                  80
      Job:                    FullBackup.2015-07-02_13.53.30_12
      Backup Level:           Full
      Client:                 "saas-fd" 7.0.5 (28Jul14) x86_64-unknown-linux-gnu,redhat,(Core)
      FileSet:                "Full Set" 2015-06-30 19:26:42
      Pool:                   "Default" (From Job resource)
      Catalog:                "MyCatalog" (From Client resource)
      Storage:                "saas-sd" (From Job resource)
      Scheduled time:         02-7月-2015 14:00:00
      Start time:             02-7月-2015 14:00:02
      End time:               02-7月-2015 14:00:13
      Elapsed time:           11 secs
      Priority:               10
      FD Files Written:       2
      SD Files Written:       2
      FD Bytes Written:       19,780 (19.78 KB)
      SD Bytes Written:       20,028 (20.02 KB)
      Rate:                   1.8 KB/s
      Software Compression:   None
      VSS:                    no
      Encryption:             no
      Accurate:               no
      Volume name(s):         test10
      Volume Session Id:      7
      Volume Session Time:    1435808229
      Last Volume Bytes:      206,249 (206.2 KB)
      Non-fatal FD errors:    0
      SD Errors:              0
      FD termination status:  OK
      SD termination status:  OK
      Termination:            Backup OK

    02-7月 14:00 saas-dir JobId 80: Begin pruning Jobs older than 6 months .
    02-7月 14:00 saas-dir JobId 80: No Jobs found to prune.
    02-7月 14:00 saas-dir JobId 80: Begin pruning Files.
    02-7月 14:00 saas-dir JobId 80: No Files found to prune.
    02-7月 14:00 saas-dir JobId 80: End auto prune.

    *
    根据提示信息我们可以知道是否备份成功、文件保存到了哪个位置哪个文件。

    3.4 还原Job
    还原 Job 使用 run 和 restore 命令都可以执行,但是使用 run 命令执行一个还原 Job 时,还原的数据是该 Job 最近一次的备份;而 restore 命令执行还原很早的备份 Job,执行不同要求的还原 Job。
    由于本地测试run执行还原未成功,所以run还原在此不做讲解,有兴趣的可以移步到附件《bacula_管理.pdf》第 2.2.4. 还原 Job 中学习。
     
    restore 命令执行还原
     
    *restore
    Automatically selected Catalog: MyCatalog
    Using Catalog "MyCatalog"

    First you select one or more JobIds that contain files
    to be restored. You will be presented several methods
    of specifying the JobIds. Then you will be allowed to
    select which files from those JobIds are to be restored.

    To select the JobIds, you have the following choices:
         1: List last 20 Jobs run            
         2: List Jobs where a given File is saved
         3: Enter list of comma separated JobIds to select
         4: Enter SQL list command
         5: Select the most recent backup for a client
         6: Select backup for a client before a specified time
         7: Enter a list of files to restore
         8: Enter a list of files to restore before a specified time
         9: Find the JobIds of the most recent backup for a client
        10: Find the JobIds for a backup for a client before a specified time
        11: Enter a list of directories to restore for found JobIds
        12: Select full restore to a specified Job date
        13: Cancel
    Select item:  (1-13): 5

    这里列出了很多种还原方式,这里选择第 5 种,还原最近的一次备份。


    You are now entering file selection mode where you add (mark) and
    remove (unmark) files to be restored. No files are initially added, unless
    you used the "all" keyword on the command line.
    Enter "done" to leave this mode.

    cwd is: /
    $ mark *
    2 files marked.
    $ done

    输入 JobId 后,系统提示进入’文件选择模式’,也就是说可以选择哪些文件需要还原’mark’,哪些文件不需要还原’unmark’,还原所有文件为’mark *’。输入’mark *’之后,输入’done’完成文件选择;

    $ done
    Bootstrap records written to /usr/local/bacula/bin/working/saas-dir.restore.1.bsr

    The Job will require the following (*=>InChanger):
       Volume(s)                 Storage(s)                SD Device(s)
    ===========================================================================
       
        test10                    saas-sd                   FileStorage              

    Volumes marked with "*" are in the Autochanger.


    2 files selected to be restored.

    Using Catalog "MyCatalog"
    Run Restore job
    JobName:         restore
    Bootstrap:       /usr/local/bacula/bin/working/saas-dir.restore.1.bsr
    Where:           *None*
    Replace:         always
    FileSet:         Full Set
    Backup Client:   saas-fd
    Restore Client:  saas-fd
    Storage:         saas-sd
    When:            2015-07-02 14:19:11
    Catalog:         MyCatalog
    Priority:        10
    OK to run? (yes/mod/no): yes
    Job queued. JobId=81

    还原后,也可以通过messages查看是否还原成功。同样的也可以通过status命令查看。
     
    远程客户端配置:
    #
    Director {
      Name = zdy1.cluster.com-dir
      Password = "cerU/APZwPP2zVSfrZuU+Y4osaZH5xrdEIwrpkCXqUMW"
      #此密码和在服务器中(client172.conf)定义的客户端密码相同
    }
    
    Director {
      Name = zdy1.cluster.com-mon
      Password = "qYhhy5PNCZTgW/nzE1JYiPRr+fBmUYR93uqLIyFNCDR1"           #服务器zdy1中dir.conf中的第一个director密码
      Monitor = yes
    }
    
    FileDaemon {                          # this is me
      Name = zdy2.cluster.com-fd
      FDport = 9102                  # where we listen for the director
      WorkingDirectory = /usr/local/bacula/opt/bacula/working
      Pid Directory = /var/run
      Maximum Concurrent Jobs = 20
    }
    

    本地配置信息:

    bacula-dir.conf

    # Client (File Services) to backup
    Client {
      Name = centos7-7-fd
      Address = 192.168.10.107
      FDPort = 9102
      Catalog = MyCatalog
      Password = "IpDC19/nvcfwOMHK5Ijwonuj1YqOJsIOb1yi/MirGaz6"          # password for FileDaemon
      File Retention = 60 days            # 60 days
      Job Retention = 6 months            # six months
      AutoPrune = yes                     # Prune expired Jobs/Files
    }
    
    Job {
      Name = "Backup-7-7"
      Type = Backup
      Client = centos7-7-fd
    #  Address = 192.168.10.107
      JobDefs = "DefaultJob"
      Level = Full
    Job {
      Name = "Backup-7-7"
      Type = Backup
      Client = centos7-7-fd
    #  Address = 192.168.10.107
      JobDefs = "DefaultJob"
      Level = Full
      FileSet="Full Set"
      Schedule = "WeeklyCycleAfterBackup"
      Storage = File1
      Messages = Standard
      Pool = File
    
    # This creates an ASCII copy of the catalog
    # Arguments to make_catalog_backup.pl are:
    # make_catalog_backup.pl <catalog-name>
    #  RunBeforeJob = "/usr/local/bacula/etc/make_catalog_backup.pl MyCatalog"
    # This deletes the copy of the catalog
    #  RunAfterJob  = "/usr/local/bacula/etc/delete_catalog_backup"
    
      Write Bootstrap = "/opt/bacula/working/%n.bsr"
      Priority = 11                   # run after main backup
    }
    #
    
    # Standard Restore template, to be changed by Console program
    #  Only one such job is needed for all Jobs/Clients/Storage ...
    #
    Job {
      Name = "RestoreFiles-7-7"
      Type = Restore
      Client=centos7-7-fd
      Storage = File1
    # The FileSet and Pool directives are not used by Restore Jobs
    # but must not be removed
      FileSet="Full Set"
      Pool = File
      Messages = Standard
    #  Where = /tmp/bacula-restores
      Where = /bacula/restore/centos7-7-fd
    }
    #
    

    远程客户端:bacula-fd.conf

    # List Directors who are permitted to contact this File daemon
    #
    #Director {
    #  Name = centos7-7-dir
    #  Password = "FhvXq+VG53KfZD/OcebnbR+HI5IpH3yXSZPhoKsvzjTj"
    #  Password = "IpDC19/nvcfwOMHK5Ijwonuj1YqOJsIOb1yi/MirGaz6"
    #}
    
    Director {
      Name = centos7-6-dir
      Password = "IpDC19/nvcfwOMHK5Ijwonuj1YqOJsIOb1yi/MirGaz6"
    }
    
    #
    # Restricted Director, used by tray-monitor to get the
    #   status of the file daemon
    #
    #Director {
    #  Name = centos7-7-mon
    #  Password = "w/9xNagm9iPLEa0hZnIajVXCWKfxpAatVpGT8L1y8HCs"
    #  Password = "5PvITI2xWIZKIb+aExPtQhyGoeB55YhjVU+Bx6IKB71u"
    #  Monitor = yes
    #}
    
    Director {
      Name = centos7-6-mon
      Password = "5PvITI2xWIZKIb+aExPtQhyGoeB55YhjVU+Bx6IKB71u6"
      Monitor = yes
    }
    
    
    
    #
    # "Global" File daemon configuration specifications
    #
    FileDaemon {                          # this is me
      Name = centos7-7-fd
      FDport = 9102                  # where we listen for the director
      WorkingDirectory = /opt/bacula/working
      Pid Directory = /var/run
      Maximum Concurrent Jobs = 20
      Plugin Directory = /usr/lib64
    }
    
    # Send all messages except skipped files back to Director
    Messages {
      Name = Standard
      director = centos7-7-dir = all, !skipped, !restored
    }
    

      

     
    1、下载webacula: http://osdn.jp/projects/sfnet_webacula/downloads/webacula/7.0.0/webacula-7.0.0.tar.gz/
       解压  #tar zxf webacula-7.0.0.tar.gz

     
    2、安装 &&配置 
     2.1 安装要求 
      2.1.1 Bacula 3.0 或以上版本 
      2.1.2 系统安装有 Mysql,PostgreSQL 或 SQlite 数据库 
      2.1.3 Zend Framework 1.8.3 或更高版本 
      2.1.4 PHP 5.2.4 或更高版本,并安装 php-gd、php-pdo、php-dom、php-xml、php-mysql 及 php-pgsql 包
    如果安装php-mysql时报错:Require:libmysqlclient.so.18(libmysqlclient_18)(64bit)
    安装兼容包解决rpm -ivh mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
    mysql打包文件中有以上文件 mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar

      2.1.5  一个兼容性不错的浏览器 
     
    2.2 检查是否符合安装要求 
    #cd webacula-7.0.0 
    #cd install/ 
    # ./check_system_requirements.php
     
    2.2.1 如果缺少2.1中 的安装条件,则可能会出现下面的错误信息
    bash: ./check_system_requirements.php: /usr/bin/php: 坏的解释器: 没有那个文件或目录
     
    没有安装php: yum install php
     
    继续执行检查,显示:sh: psql: 未找到命令(有可能是别的如mysql、sqlite、php等) 
    没有安装postgreSQL
     
    安装:centos7安装postgreSQL   http://www.cnblogs.com/tjpanda88/p/4306149.html
    yum install http//yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
    yum install postgresql94server postgresql94 -contrib

    2.2.2 再次检查是否符合安装要求
      # ./check_system_requirements.php
     
    Webacula check System Requirements...

    Current MySQL version = 5.6.25    OK
    Current PostgreSQL version = 9.4.4    OK
    Current Sqlite version = 3.7.17    OK

    Current PHP version = 5.4.16    OK

    php pdo installed.    OK
    php gd installed.    OK
    php xml installed.    OK
    php dom installed.    OK

    php pdo_mysql installed.    OK
    php pdo_pgsql installed.    OK
    php pdo_sqlite installed.    OK
    php-dom, php-xml installed.    OK

     2.3 安装 ZendFramework,并拷贝文件 
    Download ZendFramework(http://framework.zend.com/download/latest) ,下载Zend Framework 1.12.13 Minimal 

    #tar zxf ZendFramework-1.11.10-minimal.tar.gz
    #cd ZendFramework-1.11.10-minimal/library/

    ZendFramework
     cp -R ZendFramework-1.12.13-minimal/library/ webacula-7.0.0/

    然后将 webacula 目录拷贝到 apache的发布目录,并更名为webacula
    cp -R webacula-7.0.0 /var/www/webacula
      
    最终的目录结构是这样的: 
    2015-06-30 21:31:29的屏幕截图.png


     
    2.4 编辑 webacula 的 config.ini 文件
     需要修改的内容如下(尤其注意红色部分)
     
    #cd /var/www/webacula/application/
    #vi config.ini 
    db.adapter = PDO_MYSQL 
    db.config.host = localhost 
    db.config.username = root 
    ;;your database password 
    db.config.password = "123456"  ;;这个密码是root的密码。
    db.config.dbname = bacula 
    bacula.sudo = "" 
    bacula.bconsole = "/usr/local/bacula/sbin/bconsole"   ;; 这个路径的bconsole是二进制可执行文件,在bacula/etc下也有一个bconsole文件,那个是shell脚本。(这里必须用二进制文件) 

    [webacula] 
    ;db.adapter = PDO_MYSQL 
    ;db.config.host = localhost 
    ;db.config.username = wbuser 
    ;db.config.password = "wbpass" 
    ;;..... 

    2.4 添加 apache 用户权限
     
     Create system group account (if not yet created) :
    #groupadd bacula
     
    Add apache to group:
    #usermod -aG bacula apache
     
    [root@localhost application]# chown root:bacula /usr/local/bacula/sbin/bconsole  //这个路径的bconsole是二进制可执行文件,在bacula/etc下也有一个bconsole文件,那个是shell脚本。(这里必须用二进制文件)
    [root@localhost application]# chmod u=rwx,g=rx,o= /usr/local/bacula/sbin/bacula
     
    [root@localhost application]# chown root:bacula /usr/local/bacula/etc/bconsole.conf
    [root@localhost application]# chmod u=rw,g=r,o= /usr/local/bacula/etc/bconsole.conf

    2.5 设置 apache 发布 webacula 
        在/etc/httpd/conf.d/ 目录下新建文件 webacula.conf,写入如下内容(注意里面的ip地址的设置)

    webacula.conf
     
    2.6 编辑 php 配置文件 
    #vi /etc/php.ini
    memory_limit = 32M 
    max_execution_time = 3600 
     
    2.7 设置数据库连接设置及 WEB 登录用户名密码(root:123456)
    [root@localhost conf.d]# cd /var/www/webacula/install/
    [root@localhost install]# vi db.conf

    # See also application/config.ini 

    # bacula settings 
    db_name="bacula"      
    # for Sqlite only 
    db_name_sqlite="/usr/local/bacula/bin/working/bacula.db" 
    db_user="root"              #数据库root登陆 名 
     
    # !!! CHANGE_THIS !!! 
    db_pwd=""                  #root密码 

    # Webacula web interface settings 

    # Built-in superuser login is 'root' 

    # !!! CHANGE_THIS !!!
    # Use
    #       ./password-to-hash.php <password>
    # and insert the resulting hash below         #这个密码要先运行./password-to-hash.php <password> ,如 ./password-to-hash.php 123456 ,将结果写到这里。 
    webacula_root_pwd="$P$BWMY1REK18VlkYh7jWqtSfj0uOrB561"          #加了盐,每次生成都不一样,不要直接复制这行到时候出现用户名密码错误。

    ~                                                                               
    ~                                                                               
    "db.conf" 21L, 423C

    2.8 执行 mysql 脚本
     
    # cd /var/www/webacula/install/MySql/
    #./10_make_tables.sh
    #./20_acl_make_tables.sh

     
    2.9 重启服务 
    #service mysqld restart 
    #service httpd start 
      重启bconsole服务 

    3、访问webacula

    使用 root(pwd:123456)登录 Webacula,http://localhost/webacula/

    webacula.png
    当访问时apache错误日志(/etc/httpd/logs/error.log)可能会报一个:
     PHP Fatal error:  Uncaught exception 'Zend_Exception' with message 'Directory "/var/www/webacula/data/cache" is not exists or not writable.' in /var/www/webacula/html/index.php:203 Stack trace: #0 {main}   thrown in /var/www/webacula/html/index.php on line 203 

    可更改目录权限解决问题
    #chmod 777 /var/www/webacula/data/cache 

    webacula运行遇到很多有关权限的问题,猜测是因为apache用户和root用户之间引起的,没去深究,直接给整个/var/www/webacula文件夹下所有文件赋777就好了。
     
    用于管理的用户名和密码保存在mysql -->root用户--》bacula-->webacula_users
     
    在windows下bacula一般只用来作备份客户端。

    一、下载源程序包
        可在 Bacula 站点(http://www.bacula.org/)获取最新版本;
        也可在开源站点 Sourceforge 的 Bacula 项目中下载此程序安装包(Win32_64)。
        以下的下载链接 Bacula 客户端版本为 5.0.1
    http://ncu.dl.sourceforge.net/project/bacula/Win32_64/5.0.1/win32bacul a-5.0.1.exe

    二、安装
    下面为安装操作过程贴图


    Next>

    I Agree



    选择 Custom,Next>



    其中 Bat Console 就是 Bacula 图形化管理工具 BAT(Bacula Admin Tool)。
    Next>


    Next>



    注 意 “Password” 值 , 默 认 是 自 动 生 成 的 , 这 里 改 成 和 主 控 端 配 置 文 件
    (bacula-dir.conf,下同)”Client”项“Password”的值一致。其他均为默认值(Name
    值为计算机名-fd;Port 值为 9102,也就是客户端端口号;Max Jobs 值为 10。)。

    Next>




    输入主控端配置文件”Director”项相对应的相关值。详细介绍可查看 Bacula 配置部分。
    注意”DIR Address”值为主控端计算机名或者 IP,如果填写的是计算机名,那么本机
    的 hosts 文 件 一 定 能 解 析 到 , 也 就 是 在 Windows 系 统 的 hosts 文 件
    (C:WindowsSystem32driversetchosts)中加入解析条目。格式如下:
    # 编辑 C:WindowsSystem32driversetchosts
    # 格式: IP 计算机名
    # 以下是范例
    192.168.160.129 ser1
    192.168.160.131
    redhat
    192.168.160.1 sen-lenovo
    可以用”ping 计算机名”命令测试一下网络是否可达。设置好后继续安装步骤:
    点击 Install



    保存配置文件范例。
    Next>



    Finish
    到此,Bacula for Windows 7 系统的客户端就安装完成了,还需要对 Bacula 进行配置之后再启动 Bacula。配置 Bacula 可参考 Bacula 配置文档。

    三、启动
    当 Bacula 安装完成后,系统托盘会出现类似磁带形状的图标。中间那个图标就是 Bacula 托盘图标。双击可以查看 Bacula 工作状态。图标中间两个漏洞由白色两个漏洞将变成红色变成绿色,Bacula 开始保存文件;如果发生错误,。
    如果任务栏没有发现托盘图标,"Bacula File Service"服务不能启动,有可能是配置文件
    错误导致,可以使用-t 参数测试 Bacula 客户端配置文件是否正确及其他错误。
    进入 Bacula 安装目录
    # cd C:Program FilesBacula
    # bacula-fd.exe -t bacula-fd.conf
    如果各项参数配置没有问题,服务启动时发生 1067 错误,将 bacula-fd.conf 覆盖到
    C:ProgramData 目录下,然后尝试启动服务。

    先决条件

    您必须在CentOS 7服务器上具有超级用户(sudo)访问权限。此外,服务器将需要足够的磁盘空间用于计划在任何给定时间保留的所有备份。 如果你正在使用DigitalOcean,您应在Bacula的服务器上启用专用网络 ,以及所有在同一个数据中心的区域客户端服务器。这将允许您的服务器在执行备份时使用专用网络,从而减少网络开销。 我们将配置Bacula的使用我们的服务器,如私人FQDN bacula.private.example.com 。如果您没有DNS设置,请改用相应的IP地址。如果您没有启用专用网络,请将本教程中的所有网络连接信息替换为相关服务器可访问的网络地址(例如公共IP地址或VPN隧道)。 最后一个假设是SELinux被禁用,或者你能够自己解决SELinux相关的问题。 让我们先来看看Bacula的组件概述。

    关闭selinux

    临时关闭SELinux

    setenforce 0

    临时打开SELinux

    setenforce 1

    开机关闭SELinux

    vi /etc/selinux/config
    修改"SELINUX=disabled"为"SELINUX=disabled"

    查看SELinux状态

    getenforce

    设置后需要重启才能生效

    卸载并安装mysql

    Bacula组件概述

    虽然Bacula由几个软件组件组成,它遵循服务器 - 客户端备份模型;为了简化讨论,我们将集中更多的备份服务器 ,并比个人Bacula的组件备份客户端上。但是,重要的是要对各种Bacula组件有粗略的了解,所以我们现在将讨论它们。 一个Bacula的服务器 ,我们也称之为“备份服务器”,以下组件:

    • Bacula Director (DIR):软件控制的备份和恢复由该文件和存储守护程序执行的操作
    • Storage Daemon (SD):执行读取和用于备份的存储设备写入软件
    • Catalog:即维护备份文件的数据库服务。数据库存储在SQL数据库(如MySQL或PostgreSQL)中
    • Bacula Console:一个命令行界面,允许备份管理员进行交互和控制
    Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.

    一个Bacula的客户端 ,也就是将要备份的服务器,运行文件守护程序(FD)的组成部分。文件守护程序是为Bacula服务器(特别是主任)提供对将要备份的数据的访问的软件。我们还将这些服务器称为“备份客户端”或“客户端”。 正如我们在介绍中指出的,我们将配置备份服务器以创建其自己的文件系统的备份。这意味着备份服务器也将是一个备份客户端,并将运行文件守护程序组件。 让我们开始安装。

    server和client端解压bacula压缩包,cd bacula-5.2.13

    server端执行./configure--prefix=/usr/local/bacula --with-mysql

    client端执行./configure--prefix=/usr/local/bacula --enable-client-only

    安装Bacula和MySQL

    Bacula使用SQL数据库(如MySQL或PostreSQL)来管理其备份目录。在本教程中,我们将使用MariaDB,一个替代MySQL的插件。 使用yum安装Bacula和MariaDB服务器软件包:

    sudo yum install -y bacula-director bacula-storage bacula-console bacula-client mariadb-server

    安装完成后,我们需要使用以下命令启动MySQL:

    sudo systemctl start mariadb

    MySQL8.0后的命令和之前不一样!

    新建bacula用户:

    use mysql;

    创建用户

    CREATE USER 'bacula'@'localhost' IDENTIFIED WITH mysql_native_password BY 'baculadb'; 

    create user bacula2@localhost identified by 'baculadb2';

    修改密码

    ALTER USER 'bacula'@'localhost' IDENTIFIED WITH mysql_native_password BY 'baculadb';

    FLUSH PRIVILEGES;

     给bacula用户授全权:切换到root用户后

    grant all privileges on *.* to bacula@localhost;

    flush privileges;

    查看数据库列表

    show databases;

    查看用户状态

    select host,user from mysql.user;

    关闭防火墙:

    //临时关闭 systemctl stop firewalld 
    //禁止开机启动 systemctl disable firewalld

    现在MySQL(MariaDB)已安装并运行,让我们使用这些脚本创建Bacula数据库用户和表:

    /usr/libexec/bacula/grant_mysql_privileges
    /usr/libexec/bacula/create_mysql_database -u root -p
    /usr/libexec/bacula/make_mysql_tables -u bacula -p

    接下来,我们要运行一个简单的安全脚本,它将删除一些危险的默认值,并锁定对我们的数据库系统的访问一点。通过运行以下命令来启动交互式脚本:

    sudo mysql_secure_installation

    提示将要求您输入当前的root密码。因为你刚刚安装MySQL,你很可能不会有一个,所以留空,按enter键。然后提示将询问您是否要设置root密码。来吧,打Enter ,并设置密码。 对于剩余的问题,您应该简单地打Enter通过每个提示键接受默认值。这将删除一些示例用户和数据库,禁用远程根登录,并加载这些新规则,以便MySQL立即尊重我们所做的更改。 现在我们需要为Bacula数据库用户设置密码。 输入MySQL控制台,作为根MySQL用户:

    mysql -u root -p

    输入您刚刚设置的MySQL根密码,在提示符下。 现在设置Bacula数据库用户的密码。使用此命令,但替换突出了“Bacula的数据库密码”具有较强的密码:

    UPDATE mysql.user SET Password=PASSWORD('bacula_db_password') WHERE User='bacula';
    FLUSH PRIVILEGES;

    一旦你完成这里,退出MySQL提示:

    exit

    启用MariaDB在启动时启动。使用以下命令:

    sudo systemctl enable mariadb

    设置Bacula使用MySQL库

    默认情况下,Bacula设置为使用PostgreSQL库。因为我们使用MySQL,我们需要将其设置为使用MySQL库。 运行此命令:

    sudo alternatives --config libbaccats.so

    您将看到以下提示。输入1(MySQL):

    There are 3 programs which provide 'libbaccats.so'.
    
      Selection    Command
    -----------------------------------------------
       1           /usr/lib64/libbaccats-mysql.so
       2           /usr/lib64/libbaccats-sqlite3.so
    *+ 3           /usr/lib64/libbaccats-postgresql.so
    
    Enter to keep the current selection[+], or type selection number: 1
    

    Bacula服务器(和客户端)组件现在已安装。让我们创建备份和恢复目录。

    创建备份和还原目录

    Bacula的需要一个备份目录,用于存储备份存档和恢复目录,其中恢复的文件将被放置。如果系统有多个分区,请确保在具有足够空间的目录上创建目录。 让我们为这两个目的创建新目录:

    sudo mkdir -p /bacula/backup /bacula/restore

    我们需要更改文件权限,以便只有bacula进程(和超级用户)可以访问这些位置:

    sudo chown -R bacula:bacula /bacula
    sudo chmod -R 700 /bacula

    现在我们准备配置Bacula Director。

    配置Bacula Director

    Bacula有几个组件,必须独立配置才能正常工作。配置文件都可以在找到/etc/bacula目录中。 我们将从Bacula Director开始。 在您喜欢的文本编辑器中打开Bacula Director配置文件。我们将使用vi:

    sudo vi /etc/bacula/bacula-dir.conf

    配置Director资源

    查找主任资源,并将其配置为监听127.0.0.1 (本地主机),加入DirAddress这里显示的一行:

    bacula-dir.conf - 添加Director DirAddress
    Director {                            # define myself
      Name = bacula-dir
      DIRport = 9101                # where we listen for UA connections
      QueryFile = "/etc/bacula/query.sql"
      WorkingDirectory = "/var/spool/bacula"
      PidDirectory = "/var/run"
      Maximum Concurrent Jobs = 1
      Password = "@@DIR_PASSWORD@@"         # Console password
      Messages = Daemon
      DirAddress = 127.0.0.1
    }

    现在移动到文件的其余部分。

    配置本地作业

    Bacula作业用于执行备份和恢复操作。作业资源定义特定作业将执行的操作的详细信息,包括客户端的名称,要备份或恢复的FileSet等。 在这里,我们将配置将用于执行本地文件系统备份的作业。 在Director配置,找到“BackupClient1”(搜索“BackupClient1”)的名称作业的资源。 的值更改Name为“BackupLocalFiles”,所以它看起来是这样的:

    bacula-dir.conf - 重命名BackupClient1作业
    Job {
      Name = "BackupLocalFiles"
      JobDefs = "DefaultJob"
    }

    接下来,找到名为“RestoreFiles”(搜索“RestoreFiles”)的工作资源。 在这个岗位上,你想改变两件事:更新的值, Name为“RestoreLocalFiles”,而价值Where ,以“/ Bacula的/恢复”。它应该看起来像这样:

    bacula-dir.conf - 重命名RestoreFiles作业
    Job {
      Name = "RestoreLocalFiles"
      Type = Restore
      Client=BackupServer-fd
      FileSet="Full Set"
      Storage = File
      Pool = Default
      Messages = Standard
      Where = /bacula/restore
    }

    此配置RestoreLocalFiles作业以还原文件/bacula/restore的目录中,我们前面创建。

    配置文件集

    一个文件集Bacula的定义了一组文件或目录包含排除备份选择的文件,并通过作业使用。 找到名为“完整集”的FileSet资源(它在注释说“#要备份的文件列表”)。在这里,我们将实现三个转变:(1)添加到使用gzip压缩我们的备份选项,(2)改变包括文件/usr/sbin/ ,和(3)添加File = /bacula下排除部分。删除评论后,应该看起来像这样:

    bacula-dir.conf - 更新“完全设置”FileSet
    FileSet {
      Name = "Full Set"
      Include {
        Options {
          signature = MD5
          compression = GZIP
        }    
    File = /
    }
      Exclude {
        File = /var/lib/bacula
        File = /proc
        File = /tmp
        File = /.journal
        File = /.fsck
        File = /bacula
      }
    }

    让我们来看看我们对“完全集”FileSet所做的更改。首先,我们在创建备份存档时启用gzip压缩。第二,我们在包括/ ,即根分区,来进行备份。 第三,我们均不含/bacula ,因为我们不想冗余备份Bacula的我们的备份和恢复的文件。

    Note: If you have partitions that are mounted within /, and you want to include those in the FileSet, you will need to include additional File records for each of them.

    请记住,如果您始终在备份作业中使用广泛的文件集(例如“完整集”),则备份将需要比备份选择更具体的磁盘空间。例如,只包含自定义配置文件和数据库的FileSet可能足以满足您的需要,如果您有一个明确的恢复计划,详细安装所需的软件包,并将恢复的文件放置在正确的位置,而只使用一小部分备份存档的磁盘空间。

    配置存储后台进程连接

    在Bacula Director配置文件中,存储资源定义了Director应连接到的存储后台程序。我们将在稍后配置实际的存储守护程序。 查找存储资源,并更换地址,值localhost ,用你的备份服务器的FQDN私人(或私有IP地址)。它应该看起来像这样(替换突出显示的词):

    bacula-dir.conf - 更新存储地址
    Storage {
      Name = File
    # Do not use "localhost" here
      Address = backup_server_private_FQDN                # N.B. Use a fully qualified name here
      SDPort = 9103
      Password = "@@SD_PASSWORD@@"
      Device = FileStorage
      Media Type = File
    }

    这是必要的,因为我们将配置存储守护程序在专用网络接口上侦听,以便远程客户端可以连接到它。

    配置目录连接

    在Bacula Director配置文件中,Catalog资源定义了Director应该使用和连接到的数据库。 找到名为“MyCatalog”(这是一个评论,说:“通用目录服务”下),以及更新的价值目录资源dbpassword所以它匹配您的Bacula的 MySQL用户设置密码:

    bacula-dir.conf - 更新目录dbpassword
    # Generic catalog service
    Catalog {
      Name = MyCatalog
    # Uncomment the following line if you want the dbi driver
    # dbdriver = "dbi:postgresql"; dbaddress = 127.0.0.1; dbport =
      dbname = "bacula"; dbuser = "bacula"; dbpassword = "bacula_db_password"
    }

    这将允许Bacula Director连接到MySQL数据库。

    配置池

    池资源定义了Bacula用于写入备份的存储集。我们将使用文件作为存储卷,我们将仅更新标签,以便我们的本地备份被正确标记。 找到名为“文件”的池资源(它在注释说“#文件池定义”),并添加一行指定标签格式。完成后应该看起来像这样:

    bacula-dir.conf - 更新池:
    # File Pool definition
    Pool {
      Name = File
      Pool Type = Backup
      Label Format = Local-
      Recycle = yes                       # Bacula can automatically recycle Volumes
      AutoPrune = yes                     # Prune expired volumes
      Volume Retention = 365 days         # one year
      Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
      Maximum Volumes = 100               # Limit number of Volumes in Pool
    }

    保存并退出。你终于完成了Bacula Director的配置。

    检查引导程序配置:

    让我们验证您的Director配置文件中没有语法错误:

    sudo bacula-dir -tc /etc/bacula/bacula-dir.conf

    如果没有错误信息,您bacula-dir.conf文件没有语法错误。 接下来,我们将配置存储后台程序。

    配置存储后台进程

    我们的Bacula服务器几乎已经设置好,但是我们仍然需要配置存储后台程序,因此Bacula知道在哪里存储备份。 在您喜欢的文本编辑器中打开SD配置。我们将使用vi:

    sudo vi /etc/bacula/bacula-sd.conf

    配置存储资源

    查找存储资源。这定义了SD进程将侦听连接的位置。添加SDAddress参数,并将其分配给备份服务器的FQDN私人(或私有IP地址):

    bacula-sd.conf - 更新SDAddress
    Storage {                             # definition of myself
      Name = BackupServer-sd
      SDPort = 9103                  # Director's port
      WorkingDirectory = "/var/lib/bacula"
      Pid Directory = "/var/run/bacula"
      Maximum Concurrent Jobs = 20
      SDAddress = backup_server_private_FQDN
    }

    配置存储设备

    接下来,找到名为“FileStorage”(搜索“FileStorage”),设备资源,更新的价值Archive Device ,以配合您的备份目录:

    bacula-sd.conf - 更新存档设备
    Device {
      Name = FileStorage
      Media Type = File
      Archive Device = /bacula/backup 
      LabelMedia = yes;                   # lets Bacula label unlabeled media
      Random Access = Yes;
      AutomaticMount = yes;               # when device opened, read it
      RemovableMedia = no;
      AlwaysOpen = no;
    }

    保存并退出。

    验证存储后台进程配置

    让我们验证您的存储后台程序配置文件中没有语法错误:

    sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

    如果没有错误信息,您bacula-sd.conf文件中有没有语法错误。 我们已经完成了Bacula配置。我们准备重新启动Bacula服务器组件。

    设置Bacula组件密码

    每个Bacula组件(例如Director,SD和FD)都有用于组件间身份验证的密码 - 您在查看配置文件时可能会注意到占位符。可以手动设置这些密码,但是,因为你实际上不需要知道这些密码,我们将运行命令来生成随机密码并将它们插入到各种Bacula配置文件中。 这些命令生成并设置Director密码。该bconsole连接到处长,所以它需要的密码太:

    DIR_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
    sudo sed -i "s/@@DIR_PASSWORD@@/${DIR_PASSWORD}/" /etc/bacula/bacula-dir.conf
    sudo sed -i "s/@@DIR_PASSWORD@@/${DIR_PASSWORD}/" /etc/bacula/bconsole.conf

    这些命令生成并设置Storage Daemon密码。 Director连接到SD,所以它还需要密码:

    SD_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
    sudo sed -i "s/@@SD_PASSWORD@@/${SD_PASSWORD}/" /etc/bacula/bacula-sd.conf
    sudo sed -i "s/@@SD_PASSWORD@@/${SD_PASSWORD}/" /etc/bacula/bacula-dir.conf

    这些命令生成并设置本地文件守护程序(Bacula客户端软件)密码。 Director连接到此FD,因此它还需要密码:

    FD_PASSWORD=`date +%s | sha256sum | base64 | head -c 33`
    sudo sed -i "s/@@FD_PASSWORD@@/${FD_PASSWORD}/" /etc/bacula/bacula-dir.conf
    sudo sed -i "s/@@FD_PASSWORD@@/${FD_PASSWORD}/" /etc/bacula/bacula-fd.conf

    现在我们准备好开始我们的Bacula组件!

    启动Bacula组件

    使用以下命令启动Bacula Director,Storage Daemon和本地文件守护程序:

    sudo systemctl start bacula-dir
    sudo systemctl start bacula-sd
    sudo systemctl start bacula-fd

    如果它们都正确启动,请运行这些命令,使它们在启动时自动启动:

    sudo systemctl enable bacula-dir
    sudo systemctl enable bacula-sd
    sudo systemctl enable bacula-fd

    让我们通过运行备份作业来测试Bacula的工作原理。

    测试备份作业

    我们将使用Bacula控制台运行我们的第一个备份作业。如果它运行没有任何问题,我们将知道Bacula配置正确。 现在使用此命令输入控制台:

    sudo bconsole

    这将带您到Bacula的控制台提示,由记*提示。

    创建标签

    通过发出一个开始label的命令:

    label

    将提示您输入卷名称。输入任何您想要的名称:

    MyVolume
    

    然后选择备份应使用的池。我们将使用我们之前配置的“文件”池,输入“2”:

    2

    此处报错:

    [root@centos7-3 bacula]# bconsole
    Connecting to Director localhost:9101
    1000 OK: bacula-dir Version: 5.2.13 (19 February 2013)
    Enter a period to cancel a command.
    *label
    Automatically selected Catalog: MyCatalog
    Using Catalog "MyCatalog"
    Automatically selected Storage: File
    Enter new Volume name: myvolume
    Defined Pools:
         1: Default
         2: File
         3: Scratch
    Select the Pool (1-3): 2
    Connecting to Storage daemon File at 192.168.10.103:9103 ...
    Failed to connect to Storage daemon.
    Do not forget to mount the drive!!!
    You have messages.
    *messages
    10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql_get.c:1030 sql_get.c:1030 query SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,EndFile,EndBlock,VolParts,LabelType,LabelDate,StorageId,Enabled,LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge FROM Media WHERE VolumeName='myvolume' failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=1 failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=3 failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:34 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql_get.c:1030 sql_get.c:1030 query SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,EndFile,EndBlock,VolParts,LabelType,LabelDate,StorageId,Enabled,LocationId,RecycleCount,InitialWrite,ScratchPoolId,RecyclePoolId,VolReadTime,VolWriteTime,ActionOnPurge FROM Media WHERE VolumeName='myvolume' failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=1 failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=3 failed:
    Table 'bacula.Media' doesn't exist
    10-Aug 08:47 bacula-dir JobId 0: Fatal error: sql.c:338 sql.c:338 query SELECT count(*) from Media WHERE PoolId=2 failed:
    Table 'bacula.Media' doesn't exist
    *
    

    查看: vim /usr/libexec/bacula/make_mysql_tables

    重新运行:/usr/libexec/bacula/make_mysql_tables结果好多表么有建出来

    [root@centos7-3 bacula]# /usr/libexec/bacula/make_mysql_tables
    Enter password: 
    ERROR 1050 (42S01) at line 7: Table 'Filename' already exists
    ERROR 1050 (42S01) at line 14: Table 'Path' already exists
    ERROR 1050 (42S01) at line 35: Table 'File' already exists
    ERROR 1050 (42S01) at line 50: Table 'RestoreObject' already exists
    ERROR 1050 (42S01) at line 76: Table 'MediaType' already exists
    ERROR 1050 (42S01) at line 83: Table 'Storage' already exists
    ERROR 1050 (42S01) at line 90: Table 'Device' already exists
    ERROR 1067 (42000) at line 110: Invalid default value for 'SchedTime'
    ERROR 1067 (42000) at line 143: Invalid default value for 'SchedTime'
    ERROR 1050 (42S01) at line 175: Table 'Location' already exists
    ERROR 1067 (42000) at line 183: Invalid default value for 'Date'
    ERROR 1067 (42000) at line 197: Invalid default value for 'CreateTime'
    ERROR 1050 (42S01) at line 205: Table 'JobMedia' already exists
    ERROR 1067 (42000) at line 221: Invalid default value for 'FirstWritten'
    ERROR 1050 (42S01) at line 270: Table 'Pool' already exists
    ERROR 1050 (42S01) at line 301: Table 'Client' already exists
    ERROR 1067 (42000) at line 312: Invalid default value for 'Time'
    ERROR 1050 (42S01) at line 322: Table 'BaseFiles' already exists
    ERROR 1061 (42000) at line 331: Duplicate key name 'basefiles_jobid_idx'
    ERROR 1050 (42S01) at line 333: Table 'UnsavedFiles' already exists
    ERROR 1050 (42S01) at line 343: Table 'Counters' already exists
    ERROR 1050 (42S01) at line 352: Table 'CDImages' already exists
    ERROR 1050 (42S01) at line 358: Table 'Status' already exists
    ERROR 1062 (23000) at line 365: Duplicate entry 'C' for key 'PRIMARY'
    ERROR 1050 (42S01) at line 388: Table 'PathHierarchy' already exists
    ERROR 1061 (42000) at line 395: Duplicate key name 'pathhierarchy_ppathid'
    ERROR 1050 (42S01) at line 398: Table 'PathVisibility' already exists
    ERROR 1061 (42000) at line 406: Duplicate key name 'pathvisibility_jobid'
    ERROR 1050 (42S01) at line 409: Table 'Version' already exists
    Creation of Bacula MySQL tables succeeded.
    

      暂时无法解决,请大家指导!

    手动运行备份作业

    Bacula现在知道我们要如何为我们的备份写入数据。我们现在可以运行备份来测试它是否正常工作:

    run

    系统将提示您选择要运行的作业。我们要运行“BackupLocalFiles”作业,因此在提示符处输入“1”:

    1

    在“运行备份作业”确认提示下,查看详细信息,然后输入“yes”运行作业:

    yes

    检查消息和状态

    运行一个工作后,Bacula会告诉你你有消息。消息是通过运行作业生成的。 键入以下内容检查消息:

    messages

    消息应该说“找不到先前的完全备份作业记录”,并且备份作业已启动。如果有任何错误,有什么问题,他们应该给你一个提示,为什么工作没有运行。 另一种查看作业状态的方法是检查Director的状态。为此,请在bconsole提示符处输入此命令:

    status director

    如果一切正常,您应该看到您的作业正在运行。这样的东西:

    Running Jobs:
    Console connected at 09-Apr-15 12:16
     JobId Level   Name                       Status
    ======================================================================
         3 Full    BackupLocalFiles.2015-04-09_12.31.41_06 is running
    ====

    作业完成后,它将移动到状态报告的“终止的作业”部分,如下所示:

    Terminated Jobs:
     JobId  Level    Files      Bytes   Status   Finished        Name
    ====================================================================
         3  Full    161,124    877.5 M  OK       09-Apr-15 12:34 BackupLocalFiles

    “OK”状态表示备份作业没有任何问题。恭喜!您有Bacula服务器的“完整集”的备份。 下一步是测试还原作业。

    测试恢复作业

    现在已经创建了一个备份,重要的是检查它是否可以正确恢复。该restore命令将允许我们恢复已备份的文件。

    运行还原所有作业

    为了演示,我们将恢复上次备份中的所有文件:

    restore all

    将出现一个选择菜单,其中有许多不同的选项,用于标识要还原哪个备份集。由于我们只有一个备份,让我们选择最近的备份 - 选择选项5:

    5

    因为只有一个客户端,Bacula服务器,它会自动被选中。 下一个提示将询问您要使用哪个FileSet。选择“Full Set”,应为2:

    2

    这将使您进入具有所备份的整个目录结构的虚拟文件树。这个类shell接口允许简单的命令来标记和取消标记要恢复的文件。 因为我们指定我们想要“还原所有”,每个备份的文件已经标记为还原。标记的文件是由领先的表示*字符。 如果要调整选择,可以使用“ls”和“cd”命令导航和列出文件,使用“mark”标记要恢复的文件,并取消标记具有“unmark”的文件。通过在控制台中输入“help”可以获得完整的命令列表。 完成恢复选择后,请键入以下内容继续:

    done

    确认要运行还原作业:

    yes

    检查消息和状态

    与备份作业一样,应在运行还原作业后检查消息和Director状态。 键入以下内容检查消息:

    messages

    应该有一条消息表明还原作业已启动或已通过“恢复确定”状态终止。如果有任何错误,有什么问题,他们应该给你一个提示,为什么工作没有运行。 同样,检查Director状态是一个很好的方式来查看恢复作业的状态:

    status director

    当你与恢复完成后,键入exit离开Bacula的控制台:

    exit

    验证恢复

    要验证还原作业实际还原选定的文件,你可以看看在/bacula/restore目录(这是在Director配置了“RestoreLocalFiles”的工作定义):

    sudo ls -la /bacula/restore

    您应该在根文件系统中看到已恢复的文件副本,但不包括在“RestoreLocalFiles”作业的“排除”部分中列出的文件和目录。如果您尝试从数据丢失中恢复,您可以将恢复的文件复制到其相应的位置。

    删除已恢复的文件

    您可能需要删除已恢复的文件以释放磁盘空间。为此,请使用以下命令:

    sudo -u root bash -c "rm -rf /bacula/restore/*"

    请注意,您必须先运行此rm命令,作为根,因为很多恢复的文件属于root。

    结论

    您现在有一个基本的Bacula设置,可以备份和恢复本地文件系统。下一步是将其他服务器添加为备份客户端,以便在数据丢失的情况下恢复它们。 接下来的教程将告诉你如何将其他远程服务器添加为客户Bacula的: 如何备份一个CentOS 7服务器与Bacula 。

    bacula备份终端操作bconsole指令

     

    1.list命令列出各种备份状态信息

    2.show查看配置信息

    3.status当着状态信息

    4.run执行job任务

    5.delete删除备份

    6.估算下这个备份有多少文件,需要多大容量.

    7.特殊的几个命令:

    8.在字符界面还可以直接这么来用:

  • 相关阅读:
    python day05--字典
    python day14--内置函数二
    day12作业答案
    python day12 ——1.生成器2.生成器表达式 3.列表推导式
    python day11 ——1. 函数名的使⽤ 2. 闭包 3. 迭代器
    python day10作业答案
    python基础 :函数 装饰器,迭代器,面向过程编程
    python 基础:文件处理
    python 快速入门(变量,八大数据类型,if嵌套 ,for循环,while循环)
    计算机基础知识
  • 原文地址:https://www.cnblogs.com/jackyzm/p/9442758.html
Copyright © 2011-2022 走看看