參考:
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既有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> 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;
2.1 安裝bacula
2.2 創建mysql腳本2.3 啟動 bacula 進程2.4 添加存儲介質
3.1 安裝bacula
3.2 啟動 bacula 的 fd 進程
二 服務端安裝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]#
*****************************************************************************************************
#./grant_mysql_privileges
***********************************************
執行這一步可能遇到這個問題: ./grant_mysql_privileges
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Error creating 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

- 主控端配置文件的 Director{}項。

因為在執行一個任務(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。
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{
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
}
#完全備份
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。
}
#差分備份
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
}
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-ctl-sd start
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;
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.
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
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
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
Status available for:
1: Director
2: Storage
3: Client
4: Scheduled
5: All
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
執行 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.
*
根據提示信息我們可以知道是否備份成功、文件保存到了哪個位置哪個文件。
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’完成文件選擇;
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 }
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 包
2.1.5 一個兼容性不錯的瀏覽器
#cd install/
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
#tar zxf ZendFramework-1.11.10-minimal.tar.gz
#cd ZendFramework-1.11.10-minimal/library/
然后將 webacula 目錄拷貝到 apache的發布目錄,並更名為webacula

#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"
;;.....
[root@localhost application]# chmod u=rw,g=r,o= /usr/local/bacula/etc/bconsole.conf

memory_limit = 32M
max_execution_time = 3600
[root@localhost install]# vi db.conf
# bacula settings
db_name="bacula"
# for Sqlite only
db_name_sqlite="/usr/local/bacula/bin/working/bacula.db"
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
#./10_make_tables.sh
#./20_acl_make_tables.sh
#service httpd start

webacula運行遇到很多有關權限的問題,猜測是因為apache用戶和root用戶之間引起的,沒去深究,直接給整個/var/www/webacula文件夾下所有文件賦777就好了。
可在 Bacula 站點( http://www.bacula.org/)獲取最新版本;
也可在開源站點 Sourceforge 的 Bacula 項目中下載此程序安裝包( Win32_64)。
其中 Bat Console 就是 Bacula 圖形化管理工具 BAT(Bacula Admin Tool)。
注 意 “Password” 值 , 默 認 是 自 動 生 成 的 , 這 里 改 成 和 主 控 端 配 置 文 件
(bacula-dir.conf,下同)”Client”項“Password”的值一致。其他均為默認值(Name
輸入主控端配置文件”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 計算機名”命令測試一下網絡是否可達。設置好后繼續安裝步驟:
保存配置文件范例。
Finish
三、啟動
當 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
這里顯示的一行:
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”,所以它看起來是這樣的:
Job { Name = "BackupLocalFiles" JobDefs = "DefaultJob" }
接下來,找到名為“RestoreFiles”(搜索“RestoreFiles”)的工作資源。 在這個崗位上,你想改變兩件事:更新的值, Name
為“RestoreLocalFiles”,而價值Where
,以“/ Bacula的/恢復”。它應該看起來像這樣:
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
下排除部分。刪除評論后,應該看起來像這樣:
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地址)。它應該看起來像這樣(替換突出顯示的詞):
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用戶設置密碼:
# 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用於寫入備份的存儲集。我們將使用文件作為存儲卷,我們將僅更新標簽,以便我們的本地備份被正確標記。 找到名為“文件”的池資源(它在注釋說“#文件池定義”),並添加一行指定標簽格式。完成后應該看起來像這樣:
# 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地址):
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
,以配合您的備份目錄:
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備份終端操作bconsole指令
1.list命令列出各種備份狀態信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
list Jobs #列出所有備份記錄狀態
list jobid=2 #列出jobid等於2有狀態信息
list Job=t3_full #列出Job名稱等於t3_full的任務信息
list jobname=t3_full #列出Job名稱等於t3_full的任務信息
list joblog jobid=78 #列出jobid=78的詳細備份日志信息
list jobmedia jobid=78 #列出jobid=78的狀態信息與所在Volume信息
list files jobid=78 #列出jobid=78的狀態信息與所備份的數據信息
list clients #列出備份的客戶端
list jobtotals #列出所有作業任務使用的空間大小
list media pool=dbpool #查看dbpool屬性的media
list Volume Pool=dbpool #查看dbpool屬性的Volume
list pool #查看定義的dbpool屬性
llist pool #查看定義的dbpool屬性(更詳細)
|
2.show查看配置信息
1
2
3
|
show Job=t3_full #查看Job名稱等於t3_full的配置信息
show pools #查看池的信息
show pools=dbpool #查看dbpool池的信息
|
3.status當着狀態信息
1
2
|
status #查看狀態信息
status client=t3-fd #客戶端名稱t3-fd的狀態信息
|
4.run執行job任務
1
2
|
run #進入交互模式操作
run job=t3_full yes #手動執行job為t3_full任務作業
|
5.delete刪除備份
1
2
|
delete JobId=79 #刪除jobid等於79的備份
list JobId=79 #查看就沒有這個備份包了,但在status中還是會出這個,實際存儲中空間並沒有減小.
|
6.估算下這個備份有多少文件,需要多大容量.
1
2
|
estimate job=t3_full listing client=t3-fd
#作業任務t3_full,客戶端t3-fd
|
7.特殊的幾個命令:
1
2
3
4
5
6
|
.jobs #查看定義的job作業任務名稱
.clients #查看定義的客戶端名稱
.filesets #查看定義的備份資源FS的名稱
.msgs #查看定義的日志消息記錄的名稱
.pools #查看定義的pool池屬性名稱
.storage #查看定義的storage數據的存儲方式的名稱
|
8.在字符界面還可以直接這么來用:
1
|
printf "list clients\r\nquit" | /opt/bacula/sbin/bconsole
|