BaculaBacula是一款開源的跨平臺網絡備份工具,提供基於企業級的CS的備份解決方案。可以對數據進行備份、恢復、以及完整性校驗。
功能特點:
支持完全備份,增量備份,差異備份。
支持多種恢復方式
支持多種文件系統下的備份恢復(ext3、ext2、reiserfs、xfs、jfs、smbfs、iso9660、ntfs等)
支持各種備份介質
支持多種操作系統
強大的內部功能
二、bacula的基本組成
一個完整的bacula備份系統,由下面5個部分組成
Director Daemon:負責監聽所有的備份、恢復、驗證、存檔事務,以及定製備份和恢復文件計劃等,並將整個系統運行狀況記錄在一個數據庫文件中。推薦使用mysql,其配置文件爲bacula-dir.conf。
Storage Daemon(SD):主要負責將數據備份到存儲介質上,而在數據恢復時,負責將數據從存儲介質中傳送出去。其配置文件爲bacula-sd.conf。
File Daemon(FD):安裝在需要備份數據的機器上的守護進程,在備份數據時,它負責把文件傳出,在恢復數據時負責接收數據並執行恢復操作。配置文件爲bacula-fd.conf。
Console:管理控制檯。可以通過這個控制檯連接到Director Daemon進行管理備份與恢復操作。
Monitor:進程監控端。 負責監控Director Daemon、Storage Daemon和File Daemon的守護進程。bacula備份系統的組成如圖1所示。
三、bacula的恢復流程
1、通過console連接到Director端,備份恢復操作開始。
2、Director端從自己的數據庫中調出記錄信息,對存儲端SD與客戶端FD的任務進行協調。
3、客戶端FD負責驗證Director的操作許可,如果驗證通過,則允許連接到存儲端SD
4、客戶端FD根據Director發出的請求去連接SD,將FD端的數據備份到存SD指定的存儲介質上,或者將SD端存儲介質中的數據傳回到客戶端FD指定的位置上,完成備份恢復過程。
需要注意的是,在bacula的整個備份恢復系統中,客戶端FD和SD要保證網絡連接暢通,爲了保證備份以及恢復數據的速度和效率,最好讓客戶端FD和SD處在一個網段中。
四、bacula的幾種網絡備份拓撲
前面介紹了bacula有5個組成部分,在實際的應用中,沒有必要將5個部分分別放在不同的服務器上,它們之間的某些部分是可以合併的,常見的bacula部署結構有如下幾種:
Director與SD以及Console在一臺機器上,而客戶端FD在另外一臺機器上,當然客戶端FD可以有一臺或者多臺上。
Director與Console在一臺機器上,SD在一臺機器上,客戶端FD在一臺或者多臺上。
Director與客戶端FD、SD以及Console端都在一臺機器上,也就是服務器自己備份自己,數據保存在本機。
五、編譯安裝bacula
一個bacula的部署環境
--------------------------------------------------------------------------------------
主機名 ip地址 操作系統 應用角色
--------------------------------------------------------------------------------------
baculaserver 192.168.137.194 centos 5.3 Director,SD,Console
baculaclient 192.168.137.194 centos 5.3 FD
--------------------------------------------------------------------------------------
1.在服務器端安裝bacula
tar xzvf bacula-5.2.6.tar.gz
cd bacula-5.2.6
./configure --prefix=/usr/local/bacula --with-mysql=/data/mysql
make install
bacula需要數據庫的支持,這裏採用的是mysql,mysql已經安裝在/data/mysql
2.在bacula客戶端安裝bacula
tar xzvf bacula-5.2.6.tar.gz
cd bacula-5.2.6
./configure --prefix=/usr/local/bacula --enable-client-only
make
make install
3.初始化mysql數據庫
在bacula服務器端執行,初始化mysql的腳本
cd /usr/local/bacula/etc/
./grant_mysql_privileges
./create_mysql_database
./make_mysql_tables
注意:在執行上面三行mysql初始化代碼時,默認由空密碼的root用戶執行。
六、配置一個bacula備份系統
根據上面的安裝已經將Director,SD,Console安裝在一臺服務器baculaserver上。
1.配置bacula的Console端
Console端的配置文件是bconsole.conf,內容如下:
Director {
Name = baculaserver.test.com-dir
DIRport = 9101
address = 192.168.137.194
Password = "hHcQvwpl7ZUSBNBKrxjpelRnbI5i0wzb5hy3w5a/oUiv"
}
Name = baculaserver.test.com-dir
DIRport = 9101
address = 192.168.137.194
Password = "hHcQvwpl7ZUSBNBKrxjpelRnbI5i0wzb5hy3w5a/oUiv"
}
2.配置bacula的Director端
•Director端的配置文件是bacula-dir.conf,bacula-dir.conf是核心配置文件,該文件非常複雜共分10個邏輯段,分別是:
•Director,定義全局設置
•Catalog,定義後臺數據庫
•Jobdefs,定義默認執行任務
•Job,自定義一個備份或者恢復任務
•Fileset,定義備份哪些數據,不備份哪些數據
•Schedule,定義備份時間策略
•Pool,定義供Job使用的池屬性
•Client,定義要備份的主機地址
•Storage,定義數據的存儲方式
•Messages,定義發送日誌報告和記錄日誌的位置
下面是一個配置好的文件
Director {
Name = baculaserver.test.com-dir
DIRport = 9101
QueryFile = "/usr/local/bacula/etc/query.sql"
WorkingDirectory = "/usr/local/bacula/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "hHcQvwpl7ZUSBNBKrxjpelRnbI5i0wzb5hy3w5a/oUiv"
Messages = Daemon
}
Job {
Name = "Client1" #自定義一個備份任務
Type = Backup #定義的Job類型,backup爲備份任務,可選的類型還有restore和verify
Level = Incremental #定義備份級別Incremental爲增量備份,Differential爲差異備份
#如果第一次沒有做完全備份,則先進行完全備份再進行Incremental。
Client = dbfd #指定要備份的客戶端主機,dbfd在後面的Client邏輯段中進行定義。
FileSet = dbfs #指定要備份的客戶端數據,dbfs在後面的FileSet邏輯段中進行定義。
Schedule = "dbscd" #指定這個備份的執行時間策略,dbscd在後面的Schedule邏輯段中進行定義。
Storage = dbsd #指定備份數據的存儲路徑與介質,dbsd在後面的Storage邏輯段中進行定義。
Messages = Standard
Pool = dbpool #指定備份使用的pool屬性,dbpool在後面的Pool邏輯段中進行定義。
Priority = 10
Write Bootstrap = "/usr/local/bacula/var/bacula/working/Client2.bsr" #指定備份的引導信息路徑。
}
Job {
Name = "Client" #一定一個名字爲Client的差異備份任務
Type = Backup
Level = Differential
Client = dbfd
FileSet = dbfs
Schedule = "dbscd"
Storage = dbsd
Messages = Standard
Pool = dbpool
Priority = 10
Write Bootstrap = "/usr/local/bacula/var/bacula/working/Client1.bsr"
}
Job {
Name = "BackupCatalog" #定義一個名爲BackupCatalog的完全備份任務
Type = Backup
Level = Full
Client = dbfd
FileSet = dbfs
Schedule = "dbscd"
Storage = dbsd
Messages = Standard
Pool = dbpool
Priority = 10
RunBeforeJob = "/usr/local/bacula/etc/make_catalog_backup bacula bacula"
RunAfterJob = "/usr/local/bacula/etc/delete_catalog_backup"
Write Bootstrap = "/usr/local/bacula/var/bacula/working/BackupCatalog.bsr"
}
#定義一個還原任務
Job {
Name = "RestoreFiles"
Type = Restore
Client = dbfd
FileSet = dbfs
Storage = dbsd
Messages = Standard
Pool = dbpool
where = /data/bacula-Restores #指定默認恢復數據到這個路徑
}
FileSet { #定義一個名爲dbfs的備份資源,也就是指定需要備份那些數據,
#需要排除那些數據,可以指定多個FileSet
Name = dbfs
Include {
Options {
signature = MD5 #表示使用MD5加密並壓縮
Compression = GZIP
}
File = /data #指定客戶端FD需要備份的文件目錄
}
Exclude { #通過Exclude排除不需要備份的文件或者目錄
File = /usr/local/bacula/var/bacula/working
File = /tmp
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}
Schedule { #定義一個名爲dbscd的備份任務調度策略
Name = "dbscd"
Run = Full 1st sun at 23:05 #第一週的星期日晚上23:05進行完全備份
Run = Differential 2nd-5th sun at 23:05 #第2-5周的星期日晚上23:05進行差異備份
Run = Incremental mon-sat at 23:05 #所有周一至週六晚上23:05進行增量備份
}
FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = "/usr/local/bacula/var/bacula/working/bacula.sql"
}
}
Client { #Client用來定義備份哪個客戶端的FD數據
Name = dbfd #Client的名稱可以在前面的Job中調用
Address = 192.168.137.195 #要備份的客戶端FD主機的IP地址
FDPort = 9102 #與客戶端FD通信的端口
Catalog = MyCatalog #使用哪個數據庫存儲信息,“MyCatalog”在後面的MyCatalog邏輯段中進行定義
#Director端與客戶端FD的驗證密碼,
#這個值必須與客戶端FD配置文件bacula-fd.conf中密碼相同
Password = "B/mFX9D8LAo/it7VmA8GAkKwF1jl5DJZcD0T4GjRvCk6"
File Retention = 30 days #指定保存在數據庫中的記錄多久循環一次,
#這裏是30天,隻影響數據庫中的記錄不影響備份的文件
Job Retention = 6 months #指定Job的保持週期,應該大於File Retention指定的值
AutoPrune = yes #當達到指定的保持週期時,是否自動刪除數據庫中的記錄,
#yes表示自動清除過期的Job
}
Client {
Name = dbfs1
Address = 192.168.137.196
FDPort = 9102
Catalog = MyCatalog
Password = "B/mFX9D8LAo/it7VmA8GAkKwF1jl5DJZdfas4GjRvCk6"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}
Storage { # Storage用來定義將客戶端的數據備份到哪個存儲設備上
Name = dbsd
Address = 192.168.137.194 #指定存儲端SD的IP地址
SDPort = 9103
#Director端與存儲端SD的驗證密碼,這個值必須
#與存儲端SD配置文件bacula-sd.conf中Director邏輯段密碼相同
Password = "E2R4gI+kVChdU2GbzZznk59sX8IZzQwfhWf+ZYSrp7zc"
Device = dbdev #指定數據備份的存儲介質,必須與存儲端的bacula-sd.conf
#配置文件中的Device邏輯段的Name項名稱相同
Media Type = File #指定存儲介質的類別,必須與存儲端SD的bacula-sd.conf
#配置文件中的Device邏輯段的Media Type項名稱相同
}
Catalog {
Name = MyCatalog # Catalog邏輯段用來定義關於日誌和數據庫設定
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}
Messages { #Messages邏輯段用來設定Director端如何保存日誌,
#以及日誌的保存格式,可以將日誌信息發送到管理員郵箱,
#前提是必須開啓sendmail服務
Name = Standard
mailcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%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/var/bacula/working/log" = all, !skipped
append = "/usr/local/bacula/var/bacula/working/err" = error, warning, fatal
catalog = all
}
Messages { #定義了一個名爲Daemon的Messages邏輯段,Daemon已經在前面進行了引用
Name = Daemon
mailcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = root@localhost = all, !skipped
console = all, !skipped, !saved
append = "/usr/local/bacula/var/bacula/working/log" = all, !skipped
}
Pool { #定義供Job任務使用的池屬性信息,例如,
#設定備份文件過期時間、是否覆蓋過期的備份數據、
#是否自動清除過期備份等
Name = dbpool
Pool Type = Backup
Recycle = yes #重複使用
AutoPrune = yes #表示自動清除過期備份文件
Volume Retention = 7 days #指定備份文件保留的時間
#設定備份文件的命名格式,這個設定格式
#會產生的命名文件爲:db-2010-04-18-id139
Label Format = "db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}"
#Maximun Volumes = 7 #設置最多保存多少個備份文件
Recycle Current Volume = yes #表示可以使用最近過期的備份文件來存儲新備份
#Maximun Volume Jobs = 1 #表示每次執行備份任務創建一個備份文件
}
Console { #限定Console利用tray-monitor獲得Director的狀態信息
Name = baculaserver.test.com-mon
Password = "SJ5PnV7A992M3p1LQ+pUidDVaXUVK6ImFbC4we8IfbJR"
CommandACL = status, .status
}
Name = baculaserver.test.com-dir
DIRport = 9101
QueryFile = "/usr/local/bacula/etc/query.sql"
WorkingDirectory = "/usr/local/bacula/var/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "hHcQvwpl7ZUSBNBKrxjpelRnbI5i0wzb5hy3w5a/oUiv"
Messages = Daemon
}
Job {
Name = "Client1" #自定義一個備份任務
Type = Backup #定義的Job類型,backup爲備份任務,可選的類型還有restore和verify
Level = Incremental #定義備份級別Incremental爲增量備份,Differential爲差異備份
#如果第一次沒有做完全備份,則先進行完全備份再進行Incremental。
Client = dbfd #指定要備份的客戶端主機,dbfd在後面的Client邏輯段中進行定義。
FileSet = dbfs #指定要備份的客戶端數據,dbfs在後面的FileSet邏輯段中進行定義。
Schedule = "dbscd" #指定這個備份的執行時間策略,dbscd在後面的Schedule邏輯段中進行定義。
Storage = dbsd #指定備份數據的存儲路徑與介質,dbsd在後面的Storage邏輯段中進行定義。
Messages = Standard
Pool = dbpool #指定備份使用的pool屬性,dbpool在後面的Pool邏輯段中進行定義。
Priority = 10
Write Bootstrap = "/usr/local/bacula/var/bacula/working/Client2.bsr" #指定備份的引導信息路徑。
}
Job {
Name = "Client" #一定一個名字爲Client的差異備份任務
Type = Backup
Level = Differential
Client = dbfd
FileSet = dbfs
Schedule = "dbscd"
Storage = dbsd
Messages = Standard
Pool = dbpool
Priority = 10
Write Bootstrap = "/usr/local/bacula/var/bacula/working/Client1.bsr"
}
Job {
Name = "BackupCatalog" #定義一個名爲BackupCatalog的完全備份任務
Type = Backup
Level = Full
Client = dbfd
FileSet = dbfs
Schedule = "dbscd"
Storage = dbsd
Messages = Standard
Pool = dbpool
Priority = 10
RunBeforeJob = "/usr/local/bacula/etc/make_catalog_backup bacula bacula"
RunAfterJob = "/usr/local/bacula/etc/delete_catalog_backup"
Write Bootstrap = "/usr/local/bacula/var/bacula/working/BackupCatalog.bsr"
}
#定義一個還原任務
Job {
Name = "RestoreFiles"
Type = Restore
Client = dbfd
FileSet = dbfs
Storage = dbsd
Messages = Standard
Pool = dbpool
where = /data/bacula-Restores #指定默認恢復數據到這個路徑
}
FileSet { #定義一個名爲dbfs的備份資源,也就是指定需要備份那些數據,
#需要排除那些數據,可以指定多個FileSet
Name = dbfs
Include {
Options {
signature = MD5 #表示使用MD5加密並壓縮
Compression = GZIP
}
File = /data #指定客戶端FD需要備份的文件目錄
}
Exclude { #通過Exclude排除不需要備份的文件或者目錄
File = /usr/local/bacula/var/bacula/working
File = /tmp
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}
Schedule { #定義一個名爲dbscd的備份任務調度策略
Name = "dbscd"
Run = Full 1st sun at 23:05 #第一週的星期日晚上23:05進行完全備份
Run = Differential 2nd-5th sun at 23:05 #第2-5周的星期日晚上23:05進行差異備份
Run = Incremental mon-sat at 23:05 #所有周一至週六晚上23:05進行增量備份
}
FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = "/usr/local/bacula/var/bacula/working/bacula.sql"
}
}
Client { #Client用來定義備份哪個客戶端的FD數據
Name = dbfd #Client的名稱可以在前面的Job中調用
Address = 192.168.137.195 #要備份的客戶端FD主機的IP地址
FDPort = 9102 #與客戶端FD通信的端口
Catalog = MyCatalog #使用哪個數據庫存儲信息,“MyCatalog”在後面的MyCatalog邏輯段中進行定義
#Director端與客戶端FD的驗證密碼,
#這個值必須與客戶端FD配置文件bacula-fd.conf中密碼相同
Password = "B/mFX9D8LAo/it7VmA8GAkKwF1jl5DJZcD0T4GjRvCk6"
File Retention = 30 days #指定保存在數據庫中的記錄多久循環一次,
#這裏是30天,隻影響數據庫中的記錄不影響備份的文件
Job Retention = 6 months #指定Job的保持週期,應該大於File Retention指定的值
AutoPrune = yes #當達到指定的保持週期時,是否自動刪除數據庫中的記錄,
#yes表示自動清除過期的Job
}
Client {
Name = dbfs1
Address = 192.168.137.196
FDPort = 9102
Catalog = MyCatalog
Password = "B/mFX9D8LAo/it7VmA8GAkKwF1jl5DJZdfas4GjRvCk6"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}
Storage { # Storage用來定義將客戶端的數據備份到哪個存儲設備上
Name = dbsd
Address = 192.168.137.194 #指定存儲端SD的IP地址
SDPort = 9103
#Director端與存儲端SD的驗證密碼,這個值必須
#與存儲端SD配置文件bacula-sd.conf中Director邏輯段密碼相同
Password = "E2R4gI+kVChdU2GbzZznk59sX8IZzQwfhWf+ZYSrp7zc"
Device = dbdev #指定數據備份的存儲介質,必須與存儲端的bacula-sd.conf
#配置文件中的Device邏輯段的Name項名稱相同
Media Type = File #指定存儲介質的類別,必須與存儲端SD的bacula-sd.conf
#配置文件中的Device邏輯段的Media Type項名稱相同
}
Catalog {
Name = MyCatalog # Catalog邏輯段用來定義關於日誌和數據庫設定
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}
Messages { #Messages邏輯段用來設定Director端如何保存日誌,
#以及日誌的保存格式,可以將日誌信息發送到管理員郵箱,
#前提是必須開啓sendmail服務
Name = Standard
mailcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%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/var/bacula/working/log" = all, !skipped
append = "/usr/local/bacula/var/bacula/working/err" = error, warning, fatal
catalog = all
}
Messages { #定義了一個名爲Daemon的Messages邏輯段,Daemon已經在前面進行了引用
Name = Daemon
mailcommand = "/usr/local/bacula/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = root@localhost = all, !skipped
console = all, !skipped, !saved
append = "/usr/local/bacula/var/bacula/working/log" = all, !skipped
}
Pool { #定義供Job任務使用的池屬性信息,例如,
#設定備份文件過期時間、是否覆蓋過期的備份數據、
#是否自動清除過期備份等
Name = dbpool
Pool Type = Backup
Recycle = yes #重複使用
AutoPrune = yes #表示自動清除過期備份文件
Volume Retention = 7 days #指定備份文件保留的時間
#設定備份文件的命名格式,這個設定格式
#會產生的命名文件爲:db-2010-04-18-id139
Label Format = "db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}"
#Maximun Volumes = 7 #設置最多保存多少個備份文件
Recycle Current Volume = yes #表示可以使用最近過期的備份文件來存儲新備份
#Maximun Volume Jobs = 1 #表示每次執行備份任務創建一個備份文件
}
Console { #限定Console利用tray-monitor獲得Director的狀態信息
Name = baculaserver.test.com-mon
Password = "SJ5PnV7A992M3p1LQ+pUidDVaXUVK6ImFbC4we8IfbJR"
CommandACL = status, .status
}
3.配置bacula的SD端
SD可以是一個單獨的服務器,也可以和Director在一臺機器上,我們現在把SD端和Director端
放在同一臺機器上。SD的配置文件是bacula-sd.conf,配置文件如下:
Storage { #定義存儲
Name = baculaserver.test.com-sd ##定義存儲名稱
SDPort = 9103 #監聽端口
WorkingDirectory = "/usr/local/bacula/var/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}
Director { #定義一個控制StorageDaemon的Director
Name = baculaserver.test.com-dir #這裏的“Name”值必須和Director端
#配置文件bacula-dir.conf中Director邏輯段名稱相同同
#這裏的“Password”值必須和Director端配置文件
#bacula-dir.conf中Storage邏輯段密碼相同
Password = "E2R4gI+kVChdU2GbzZznk59sX8IZzQwfhWf+ZYSrp7zc"
}
Director { #定義一個監控端的Director
Name = baculaserver.test.com-mon #這裏的“Name”值必須和DiDrector端配置
#文件bacula-dir.conf中Console邏輯段名稱相同
#這裏的“Password”值必須和Director端配置文件
#bacula-dir.conf中Console邏輯段密碼相同
Password = "SJ5PnV7A992M3p1LQ+pUidDVaXUVK6ImFbC4we8IfbJR"
Monitor = yes
}
Device { #定義Device
Name = dbdev #定義Device的名稱,這個名稱在Director
#端配置文件bacula-dir.conf中的Storage邏輯段Device項中被引用
Media Type = File #指定存儲介質的類型,File表示使用文件系統存儲
Archive Device = /data/webdata #Archive Device用來指定備份存儲的
#介質,可以是cd、dvd、tap等,這裏是將
#備份的文件保存的/data/webdata目錄下
LabelMedia = yes; ##通過Label命令來建立卷文件
Random Access = Yes; #設置是否採用隨機訪問存儲介質,這裏選擇yes
AutomaticMount = yes; ##表示當存儲設備打開時,是否自動使用它,這選擇yes
RemovableMedia = no; #是否支持可移動的設備,如tap或cd,這裏選擇no
AlwaysOpen = no; #是否確保tap設備總是可用,這裏沒有使用tap設備,因此設置爲no
}
Messages { #爲存儲端SD定義一個日誌或消息處理機制
Name = Standard
director = baculaserver.test.com-dir = all
}
Name = baculaserver.test.com-sd ##定義存儲名稱
SDPort = 9103 #監聽端口
WorkingDirectory = "/usr/local/bacula/var/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}
Director { #定義一個控制StorageDaemon的Director
Name = baculaserver.test.com-dir #這裏的“Name”值必須和Director端
#配置文件bacula-dir.conf中Director邏輯段名稱相同同
#這裏的“Password”值必須和Director端配置文件
#bacula-dir.conf中Storage邏輯段密碼相同
Password = "E2R4gI+kVChdU2GbzZznk59sX8IZzQwfhWf+ZYSrp7zc"
}
Director { #定義一個監控端的Director
Name = baculaserver.test.com-mon #這裏的“Name”值必須和DiDrector端配置
#文件bacula-dir.conf中Console邏輯段名稱相同
#這裏的“Password”值必須和Director端配置文件
#bacula-dir.conf中Console邏輯段密碼相同
Password = "SJ5PnV7A992M3p1LQ+pUidDVaXUVK6ImFbC4we8IfbJR"
Monitor = yes
}
Device { #定義Device
Name = dbdev #定義Device的名稱,這個名稱在Director
#端配置文件bacula-dir.conf中的Storage邏輯段Device項中被引用
Media Type = File #指定存儲介質的類型,File表示使用文件系統存儲
Archive Device = /data/webdata #Archive Device用來指定備份存儲的
#介質,可以是cd、dvd、tap等,這裏是將
#備份的文件保存的/data/webdata目錄下
LabelMedia = yes; ##通過Label命令來建立卷文件
Random Access = Yes; #設置是否採用隨機訪問存儲介質,這裏選擇yes
AutomaticMount = yes; ##表示當存儲設備打開時,是否自動使用它,這選擇yes
RemovableMedia = no; #是否支持可移動的設備,如tap或cd,這裏選擇no
AlwaysOpen = no; #是否確保tap設備總是可用,這裏沒有使用tap設備,因此設置爲no
}
Messages { #爲存儲端SD定義一個日誌或消息處理機制
Name = Standard
director = baculaserver.test.com-dir = all
}
4.配置bacula的FD端
客戶端FD運行在一臺獨立的服務器上,也就是我們需要備份的服務器,
它的配置文件爲bacula-fd.conf,內容如下:
Director { #定義一個允許連接FD的控制端
Name = baculaserver.test.com-dir #這裏的“Name”值必須和Director端配置
#文件bacula-dir.conf中Director邏輯段名稱相同
#這裏的“Password”值必須和Director端配置文件bacula-dir.conf中Client邏輯段密碼相同
Password = "B/mFX9D8LAo/it7VmA8GAkKwF1jl5DJZcD0T4GjRvCk6"
}
Director { #定義一個允許連接FD的監控端
Name = baculaclient.test.com-mon
Password = "nroBCq6jNavbl56NHPeddMNrPAFncR/1DO5hUzvqiLu8"
Monitor = yes
}
FileDaemon { #定義一個FD端
Name = baculaclient.test.com-fd
FDport = 9102
WorkingDirectory = /usr/local/bacula/var/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20 #定義一次能處理的併發作業數
}
Messages { #定義一個用於FD端的Messages
Name = Standard
director = baculaclient.test.com-dir = all, !skipped, !restored
}
Name = baculaserver.test.com-dir #這裏的“Name”值必須和Director端配置
#文件bacula-dir.conf中Director邏輯段名稱相同
#這裏的“Password”值必須和Director端配置文件bacula-dir.conf中Client邏輯段密碼相同
Password = "B/mFX9D8LAo/it7VmA8GAkKwF1jl5DJZcD0T4GjRvCk6"
}
Director { #定義一個允許連接FD的監控端
Name = baculaclient.test.com-mon
Password = "nroBCq6jNavbl56NHPeddMNrPAFncR/1DO5hUzvqiLu8"
Monitor = yes
}
FileDaemon { #定義一個FD端
Name = baculaclient.test.com-fd
FDport = 9102
WorkingDirectory = /usr/local/bacula/var/bacula/working
Pid Directory = /var/run
Maximum Concurrent Jobs = 20 #定義一次能處理的併發作業數
}
Messages { #定義一個用於FD端的Messages
Name = Standard
director = baculaclient.test.com-dir = all, !skipped, !restored
}
七、啓動bacula的Director daemon與Storage daemon
完成上面的配置後,就可以啓動或關閉bacula了。在baculaserver上啓動或關閉控制端的所有服務,有如下兩種方式。
第一種方式如下:
[root@baculaserver etc]# /usr/local/bacula/sbin/bacula {start|stop|restart|status}
也可以通過分別管理bacula各個配置端的方式,依次啓動或者關閉每個服務:
[root@baculaserver etc]# /usr/local/bacula/etc/bacula-ctl-dir {start|stop|restart|status}
[root@baculaserver etc]# /usr/local/bacula/etc/bacula-ctl-sd {start|stop|restart|status}
[root@baculaserver etc]# /usr/local/bacula/etc/bacula-ctl-fd {start|stop|restart|status}
由於將客戶端FD配置到了另一個主機baculaclient上,因此無需在baculaserver上啓動File daemon服務。啓動bacula的所有服務後,通過netstat命令,觀察啓動端口情況:
[root@localhost etc]# netstat -antl |grep 91
tcp 0 0 0.0.0.0:9101 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9103 0.0.0.0:* LISTEN
其中,9101代表Director daemon;9102代表File daemon;9103代表Storage daemon。注意在啓動bacula的所有服務前,必須啓動MySQL數據庫,
如果MySQL數據庫沒有啓動,連接bacula的控制端時會報錯.
八、啓動bacula的File daemon
最後 ,在客戶端FD(即baculaclient)上啓動File daemon服務,操作如下:
[root@baculaclient etc]# /usr/local/bacula/sbin/bacula start
Starting the Bacula File daemon
管理客戶端FD的服務,也可以通過以下方式完成:
[root@baculaclient etc]# /usr/local/bacula/sbin/bacula {start|stop|restart|status}
[root@ baculaclient etc]# /usr/local/bacula/etc/bacula-ctl-fd {start|stop|restart|status}