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\nStack trace:\n#0 {main}\n  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:\Windows\System32\drivers\etc\hosts)中加入解析條目。格式如下:
# 編輯 C:\Windows\System32\drivers\etc\hosts
# 格式: 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 Files\Bacula
# 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.在字符界面還可以直接這么來用:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM