Backup

Bacula 異地備份

  • January 28, 2022

我有 2 個地點,一個在歐洲,一個在亞洲。每個位置都有一個功能齊全的 Bacula 系統來處理本地備份。

我想要做的是將一些工作從一個位置 SD 複製到另一個位置 SD。理想情況下,如果我可以在位置 A 上執行備份,複製到位置 B,然後還原到位置 B 的伺服器。

我知道從 Bacula 版本 7.0.0 開始允許 SD 到 SD 備份。我認為這是我需要的功能(bacula 手冊)

Bacula 7.0 版允許複製和遷移作業的 SD 到 SD 傳輸。這允許通常稱為 Bacula 備份的複製或異地傳輸。如果復製或遷移作業的源 SD 和目標 SD 不同,它會自動發生。

問題是我不知道如何設置這樣的工作。我沒有找到任何關於此的教程。

我最初的想法是我必須使用複印作業,但隨後來自同一手冊:

遷移僅針對單個儲存守護程序實施。您不能在一個儲存守護程序上讀取並在另一個上寫入。

這正是我想要做的……

關於如何實現這一目標的任何想法?

我找到了(a)解決方案……

似乎關鍵在這裡:

如果復製或遷移作業的源 SD 和目標 SD 不同,它會自動發生。

我的目標是將一些備份工作從亞洲複製到歐洲。為此,我在歐洲 SD 中創建了一個設備:

Device {
 Name = asiaBackup
 Media Type = File1
 Device Type = File
 Archive Device = /bacula/asia
 LabelMedia = yes
 Random Access = Yes;
 AutomaticMount = yes;
 RemovableMedia = no;
 AlwaysOpen = no;
 Maximum Concurrent Jobs = 40;
 Autochanger = no;
}

然後在亞洲導演中,我創建了一個從歐洲 SD 指向該設備的儲存。

Storage {
 Name = europeStorage
 Address = myEuropeDomain.com
 SDPort = 9103
 Password = "blaBlaBla...."
 Device = asiaBackup
 Media Type = File1
 Maximum Concurrent Jobs = 5
 Heartbeat Interval = 10
}

/* dbPool = the pool where the backup sits locally */
Pool {
 Name = dbPool
 Label Format = "dbBackup"
 Pool Type = Backup
 Recycle = yes                       
 AutoPrune = yes                     
 Volume Retention = 365 days         
 Maximum Volume Bytes = 5G          
 Maximum Volumes = 1000             
 Label Format = "dbVol-"            
 Recycle Oldest Volume = yes
 Next pool = "europeBackupPool"
 Storage = dbStorage
}


/* europeBackupPool = the destination pool of copy job */
Pool {
 Name = europeBackupPool
 Label Format = "dbBackup"
 Pool Type = Backup
 Recycle = yes                       
 AutoPrune = yes                     
 Volume Retention = 365 days         
 Maximum Volume Bytes = 5G          
 Maximum Volumes = 1000             
 Label Format = "euBKVol-"          
 Recycle Oldest Volume = yes
 Storage = europeStorage
}

和這個複印工作

Job {
   Name = backupToEurope
   Type = Copy
   Pool = dbPool
   Selection Type = PoolUncopiedJobs
   Schedule = "dailyFullSchedule"
   Client = "none"
   FileSet = "none"
   Messages = Standard
}

注意初始池中的“下一個池”指令,因為它指定了將復製作業的池。

之後,當我執行備份時,我得到:

   Run Copy job
JobName:       backupToEurope
Bootstrap:     *None*
Client:        none
FileSet:       none
Pool:          dbPool (From Job resource)
NextPool:      europeBackupPool (From Job Pool's NextPool resource)
Read Storage:  dbStorage (From Pool resource)
Write Storage: europeStorage (From Job Pool's NextPool resource)
JobId:         *None*
When:          2015-04-01 18:44:27
Catalog:       MyCatalog
Priority:      10

這裡的缺點是,如果你想恢復這個備份,你必須從亞洲總監那裡做,因為歐洲總監對這個工作一無所知……

引用自:https://serverfault.com/questions/679311