1. 程式人生 > >Bacula配置

Bacula配置

bacula的配置檔案有四個,分別對應主控端(bacula-dir.conf)、儲存端(bacula-sd.conf)、客戶端(bacula-fd.conf)、控制檯(bconsole.conf)。
一、各配置檔案之間的關係
組成 Bacula 備份系統有三個主要的部分,包括主控端、儲存端和客戶端,這三個部分都 有 各 自 的 配 置 文 件 , 相 對 應 的 是 主 控 端 ( bacula-dir.conf , 下 同 )、 存 儲 端(bacula-sd.conf,下同)和客戶端(bacula-fd.conf,下同),各配置檔案中的部分項存在一定的關聯,官方也用一張圖形象的表示了它們之間的關係,看下圖:
bacula各個配置檔案之間的關係.png

圖中使用箭頭連線主控端配置檔案的相關項與其它配置檔案的相關項,所連線的相關項的值必須是相同的。下面用檔案說明一下:
  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)檔案配置


下圖是主控端配置檔案的主要選項。圖中對其做了簡單的介紹:
主控端配置檔案.png
為什麼 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 \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed
for %j\" %r"
  mail =
[email protected]
= all, !skipped
  operator = [email protected] = 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 \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
  mail =
[email protected]
= 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中一致
}