bacula配置

Bacula

  Bacula是一款開源的跨平臺網絡備份工具,提供基於企業級的CS的備份解決方案。能夠對數據進行備份、恢復、以及完整性校驗。 
  功能特色:
  支持徹底備份增量備份差別備份
  支持多種恢復方式
  支持多種文件系統下的備份恢復(ext三、ext二、reiserfs、xfs、jfs、smbfs、iso9660、ntfs等)
  支持各類備份介質
  支持多種操做系統
  強大的內部功能
  一個完整的bacula備份系統,由下面5個部分組成
  Director Daemon:負責監聽全部的備份、恢復、驗證、存檔事務,以及定製備份和恢復文件計劃等,並將整個系統運行情況記錄在一個數據庫文件中。其配置文件爲bacula-dir.conf。
  Storage Daemon(SD):主要負責將數據備份存儲介質上,而在數據恢復時,負責將數據從存儲介質中傳送出去。其配置文件爲bacula-sd.conf。
  File Daemon(FD):安裝在須要備份數據的機器上的守護進程,在備份數據時,它負責把文件傳出,在恢復數據時負責接收數據並執行恢復操做。配置文件爲bacula-fd.conf。
  Console:管理控制檯。能夠經過這個控制檯鏈接到Director Daemon進行管理備份與恢復操做。
  Monitor:進程監控端。
  工做流程
  一、經過console鏈接到Director端,備份恢復操做開始。
  二、Director端從本身的數據庫中調出記錄信息,對存儲端SD與客戶端FD的任務進行協調。
  三、客戶端FD負責驗證Director的操做許可,若是驗證經過,則容許鏈接到存儲端SD
  四、客戶端FD根據Director發出的請求去鏈接SD,將FD端的數據備份到存SD指定的存儲介質上,或者將SD端存儲介質中的數據傳回到客戶端FD指定的位置上,完成備份恢復過程。
  軟件類別:國外軟件 受權方式:免費版 運行環境:Win2003, WinXp, Win2000, Nt, WinMe, Win9x,和Linux平臺。
  html

 

 

本次實驗:服務器ip:10.0.253.117,客戶端ip:10.0.253.118mysql

 

 

改Localhost爲baculaServerc++

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

改yourname後面的值爲:baculaServersql

 

安裝:數據庫

Ssrver端:服務器

[root@baculaServer ~]# yum install gcc gcc-c++  //安裝C編譯器網絡

 

[root@baculaServer ~]# yum install -y mysql mysql-server mysql-devel //安裝musql數據庫併發

 

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

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

 

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

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

 

[root@baculaServer bacula-5.2.13]# make

 

[root@baculaServer bacula-5.2.13]# make install

 

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

 

 

 

Client端:

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

[root@baculaClient ~]# cd bacula-5.2.13

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

[root@baculaClient bacula-5.2.13]# make install

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

 

 

初始化Mysql數據庫:

[root@baculaServer bacula-5.2.13]# cd

[root@baculaServer ~]# service mysqld restart

 

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

[root@baculaServer etc]# ./grant_mysql_privileges

 

[root@baculaServer ~]# ./create_mysql_database

 

[root@baculaServer ~]# ./make_mysql_tables

 

bacula實例配置:

 

 Console端的配置

[root@baculaServer ~]# vi bconsole.conf // Console端的配置文件

Director

       Name = f10-64-build-dir  #控制端名稱,在下面的bacula-dir.conf和bacula-sd.conf 

       #文件中會陸續的被引用 

      DIRport = 9101    #控制端服務端口 

      address = 10.0.253.117  #控制端服務器IP地址 

      Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"   

       #控制端密碼文件  

}

 

[root@baculaServer ~]# vi bacula-dir.conf //Director端的配置文件

Director {                            #定義bacula的全局配置 

      Name = f10-64-build-dir 

      DIRport = 9101                 #定義Director的監聽端口 

      QueryFile = "/usr/local/bacula/etc/query.sql"

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

      PidDirectory = "/var/run"

      Maximum Concurrent Jobs = 1    #定義一次能處理的最大併發數 

 

     #驗證密碼,這個密碼必須與bconsole.conf文件中對應的Director邏輯段密碼相同 

      Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"     

 

      #定義日誌輸出方式,「Daemon」在下面的Messages邏輯段中進行了定義 

      Messages = Daemon   

 

Job {        #自定義一個備份任務 

       Name = "Client1"  #備份任務名稱 

      Client = dbfd   #指定要備份的客戶端主機,「dbfd」在後面Client邏輯段中 

       #進行定義 

      Level = Incremental      #定義備份的級別,Incremental爲增量備份。Level的取值#可爲Full(徹底備份)、Incremental(增量備份)和Differential(差別備份),若是第一#次沒作徹底備份,則先進行徹底備份後再執行Incremental 

      Type = Backup                  #定義Job的類型,「backup」爲備份任務,可選 

       #的類型還有restore"恢復"和verify"驗證"等 

      FileSet = dbfs     #指定要備份的客戶端數據,「dbfs」在後面FileSet 

       #邏輯段中進行定義 

      Schedule = dbscd    #指定這個備份任務的執行時間策略,「dbscd」在 

       #後面的Schedule邏輯段中進行了定義 

      Storage = dbsd     #指定備份數據的存儲路徑與介質,「dbsd」 在後 

       #面的Storage邏輯段中進行定義 

      Messages = Standard

      Pool = dbpool     #指定備份使用的pool屬性,「dbpool」在後面的 

       # Pool邏輯段中進行定義。 

      Write Bootstrap = "/usr/local/bacula/var/bacula/working/Client2.bsr" #指定備份的引導信息路徑 

 

 

Job {         #定義一個名爲Client的差別備份的任務 

      Name = "Client"

      Type = Backup

      FileSet = dbfs

      Schedule = dbscd

      Storage = dbsd

      Messages = Standard

      Pool = dbpool

      Client = dbfd

      Level = Differential      #指定備份級別爲差別備份 

      Write Bootstrap = "/usr/local/bacula/var/bacula/working/Client1.bsr"

 

 

Job {        #定義一個名爲BackupCatalog的徹底備份任務 

      Name = "BackupCatalog"    

      Type = Backup

      Level = Full        #指定備份級別爲徹底備份 

      Client = dbfd

      FileSet="dbfs"

      Schedule = "dbscd"

      Pool = dbpool

      Storage = dbsd

      Messages = Standard

      RunBeforeJob = "/usr/local/bacula/etc/make_catalog_backup bacula bacula"

      RunAfterJob  = "/usr/local/bacula/etc/delete_catalog_backup"

      Write Bootstrap = "/usr/local/var/bacula/working/BackupCatalog.bsr"               

 

 

Job {           #定義一個還原任務 

      Name = "RestoreFiles"

      Type = Restore       #定義Job的類型爲「Restore 」,即恢復數據 

      Client=dbfd               

      FileSet=dbfs                   

      Storage = dbsd              

      Pool = dbpool

      Messages = Standard

      Where = /tmp/bacula-restores  #指定默認恢復數據到這個路徑 

 

 

FileSet {  #定義一個名爲dbfs的備份資源,也就是指定須要備份哪些數據,須要排除哪 

#些數據等,能夠指定多個FileSet 

      Name = dbfs    

      Include { 

           Options { 

          signature = MD5; Compression=GZIP; }   #表示使用MD5簽名並壓縮 

           File = /cws3            #指定客戶端FD須要備份的文件目錄 

 } 

 

Exclude {    #經過Exclude排除不須要備份的文件或者目錄,可根據具體狀況修改 

           File = /usr/local/bacula/var/bacula/working 

           File = /tmp 

           File = /proc 

           File = /tmp 

           File = /.journal 

           File = /.fsck 

 } 

 

Schedule {        #定義一個名爲dbscd的備份任務調度策略 

      Name = dbscd

      Run = Full 1st sun at 23:05  #第一週的週日晚23:05分進行徹底備份 

      Run = Differential 2nd-5th sun at 23:05 #第2~5周的週日晚23:05進行差別備份 

      Run = Incremental mon-sat at 23:05  #全部週一至週六晚23:05分進行增量備份 

 

 

FileSet { 

      Name = "Catalog"

      Include { 

           Options { 

          signature = MD5

           } 

           File = /usr/local/bacula/var/bacula/working/bacula.sql 

  } 

 

 

Client {        #Client用來定義備份哪一個客戶端FD的數據 

      Name = dbfd  #Clinet的名稱,能夠在前面的Job中調用 

      Address = 10.0.253.118    #要備份的客戶端FD主機的IP地址 

      FDPort = 9102      #與客戶端FD通訊的端口 

      Catalog = MyCatalog     #使用哪一個數據庫存儲信息,「MyCatalog」在後面 

       #的MyCatalog邏輯段中進行定義 

      Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #Director端與客戶端FD 

       #的驗證密碼,這個值必須與客戶端FD配置文件bacula-fd.conf中密碼相同 

      File Retention = 30 days    #指定保存在數據庫中的記錄多久循環一次,這裏是30天,只 

       #影響數據庫中的記錄不影響備份的文件 

      Job Retention = 6 months  #指定Job的保持週期,應該大於File Retention指定的值 

      AutoPrune = yes          #當達到指定的保持週期時,是否自動刪除數據庫中的記錄, 

       #yes表示自動清除過時的Job 

 

Client { 

      Name = dbfd1

      Address = 10.0.253.118

      FDPort = 9102

      Catalog = MyCatalog

      Password = "Wr8lj3q51PgZ21U2FSaTXICYhLmQkT1XhHbm8a6/j8Bz"          

      File Retention = 30 days            

      Job Retention = 6 months             

      AutoPrune = yes                     

 

 

Storage {      # Storage用來定義將客戶端的數據備份到哪一個存儲設備上 

      Name = dbsd    

      Address = 10.0.253.117  #指定存儲端SD的IP地址 

      SDPort = 9103    #指定存儲端SD通訊的端口 

      Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #Director端與存儲端 

       #SD的驗證密碼,這個值必須與存儲端SD配置文件bacula-sd.conf中Director邏輯段密碼 

       #相同 

      Device = dbdev #指定數據備份的存儲介質,必須與存儲端(這裏是10.0.253.117) 

       #的bacula-sd.conf配置文件中的「Device」 邏輯段的「Name」項名稱相同 

      Media Type = File #指定存儲介質的類別,必須與存儲端SD(這裏是10.0.253.117) 

       #的bacula-sd.conf配置文件中的「Device」 邏輯段的「Media Type」項名稱相同 

 

 

Catalog {         # Catalog邏輯段用來定義關於日誌和數據庫設定 

      ame = MyCatalog

      dbname = "bacula"; dbuser = "bacula"; dbpassword = ""   #指定庫名、用戶名和密碼 

 

Messages { # Messages邏輯段用來設定Director端如何保存日誌,以及日誌的保存格式, 

       #能夠將日誌信息發送到管理員郵箱,前提是必須開啓sendmail服務 

      Name = Standard

      mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r" 

      operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r" 

      mail = dba.gao@gmail.com = all, !skipped             

      operator = exitgogo@126.com = mount

      console = all, !skipped, !saved 

      append = "/usr/local/bacula/log/bacula.log" = all, !skipped   #定義bacula的運行日誌 

      append ="/usr/local/bacula/log/bacula.err.log" = error,warning, fatal #定義bacula的錯誤日誌 

      catalog = all

 

Messages { #定義了一個名爲Daemon的Messages邏輯段,「Daemon」已經 

       #在前面進行了引用 

      Name = Daemon

      mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r" 

      mail = exitgogo@126.com = all, !skipped             

      console = all, !skipped, !saved 

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

 

 

Pool {  #定義供Job任務使用的池屬性信息,例如,設定備份文件過時時間、 

       #是否覆蓋過時的備份數據、是否自動清除過時備份等 

      Name = dbpool  

      Pool Type = Backup  

      Recycle = yes                   #重複使用     

      AutoPrune = yes                #表示自動清除過時備份文件 

      Volume Retention = 7 days        #指定備份文件保留的時間 

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

       #命名格式,這個設定格式會產生的命名文件爲:db-2010-04-18-id139 

      Maximum Volumes = 7  #設置最多保存多少個備份文件 

      Recycle Current Volume = yes #表示可使用最近過時的備份文件來存儲新備份 

      Maximum Volume Jobs = 1  #表示每次執行備份任務建立一個備份文件 

 

Console {      #限定Console利用tray-monitor得到Director的狀態信息 

      Name = f10-64-build-mon 

      Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"

      CommandACL = status, .status 

 

 

配置bacula的SD:

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

       Storage {                 #定義存儲,本例中是f10-64-build-sd               

      Name = f10-64-build-sd #定義存儲名稱 

      SDPort = 9103           #監聽端口       

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

      Pid Directory = "/var/run"

      Maximum Concurrent Jobs = 20

}  

 

Director {        #定義一個控制StorageDaemon的Director 

      Name = f10-64-build-dir     #這裏的「Name」值必須和Director端配置文件 

       #bacula-dir.conf中Director邏輯段名稱相同 

      Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"   #這裏的「Password」值 

       #必須和Director端配置文件bacula-dir.conf中Storage邏輯段密碼相同 

 

Director {      #定義一個監控端的Director 

      Name = f10-64-build-mon    #這裏的「Name」值必須和Director端配置文件 

       #bacula-dir.conf中Console邏輯段名稱相同 

      Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"   #這裏的「Password」 

       #值必須和Director端配置文件bacula-dir.conf中Console邏輯段密碼相同 

      Monitor = yes

 

Device {       #定義Device 

      Name = dbdev    #定義Device的名稱,這個名稱在Director端配置文件 

       #bacula-dir.conf中的Storage邏輯段Device項中被引用 

      Media Type = File   #指定存儲介質的類型,File表示使用文件系統存儲 

      Archive Device = /webdata  #Archive Device用來指定備份存儲的介質,能夠 

       #是cd、dvd、tap等,這裏是將備份的文件保存的/webdata目錄下 

       LabelMedia = yes;            #經過Label命令來創建卷文件 

      Random Access = yes;   #設置是否採用隨機訪問存儲介質,這裏選擇yes 

      AutomaticMount = yes;  #表示當存儲設備打開時,是否自動使用它,這選擇yes 

      RemovableMedia = no;  #是否支持可移動的設備,如tap或cd,這裏選擇no 

      AlwaysOpen = no;   #是否確保tap設備老是可用,這裏沒有使用tap設備, 

       #所以設置爲no 

 

Messages {        #爲存儲端SD定義一個日誌或消息處理機制 

      Name = Standard

      director = f10-64-build-dir = all

 

配置bacula的FD端

 

[root@baculaClient ~] vi fd.conf //客戶端的配置文件

Director {      #定義一個容許鏈接FD的控制端 

      Name = f10-64-build-dir  #這裏的「Name」值必須和Director端配置文件 

       #bacula-dir.conf中Director邏輯段名稱相同 

      Password = "ouDao0SGXx/F+Tx4YygkK4so0l/ieqGJIkQ5DMsTQh6t"  #這裏的「Password」 

       #值必須和Director端配置文件bacula-dir.conf中Client邏輯段密碼相同 

 

Director {      #定義一個容許鏈接FD的監控端 

      Name = f10-64-build-mon    

      Password = "RSQy3sRjak3ktZ8Hr07gc728VkZHBr0QCjOC5x3pXEap"

      Monitor = yes

 

FileDaemon {                #定義一個FD端             

      Name = localhost.localdomain-fd  

      FDport = 9102                  #監控端口 

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

      Pid Directory = /var/run 

      Maximum Concurrent Jobs = 20   #定義一次能處理的併發做業數 

 

Messages {      #定義一個用於FD端的Messages 

      Name = Standard

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

}

 

 

服務器端的啓動

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

 {start|stop|restart|status}

也能夠經過分別管理bacula各個配置端的方式,依次啓動或者關閉每一個服務:

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

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

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

 

客服端的啓動:

 

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

Starting the Bacula File daemon

管理客戶端FD的服務,也能夠經過如下方式完成:

 

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

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

 

簡單實例運行:

備份恢復:

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

      Connecting to Director 10.0.253.117:9101 

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

      Enter a period to cancel a command 

      *run

相關文章
相關標籤/搜索