![Bacula 异地备份](https://linux22.com/image/655147/Bacula%20%E5%BC%82%E5%9C%B0%E5%A4%87%E4%BB%BD.png)
我有 2 个地点,一个在欧洲,一个在亚洲。每个地点都有一个功能齐全的 Bacula 系统来处理本地备份。
我想要做的是将一些作业从一个位置 SD 复制到另一个位置 SD。理想情况下,如果我可以在位置 A 执行备份,复制到位置 B,然后还原到位置 B 的服务器。
我了解到从版本 7.0.0 开始,Bacula 允许 SD 到 SD 备份。我认为这是我需要的功能(bacula 手册)
Bacula 7.0 版允许 SD 到 SD 的复制和迁移作业传输。这允许通常称为复制或异地传输 Bacula 备份的操作。如果复制或迁移作业的源 SD 和目标 SD 不同,则会自动进行此操作。
问题是我不知道如何设置这样的作业。我没有找到任何关于这方面的教程。
我最初的想法是我必须使用复印作业,但后来从同一本手册中得知:
迁移仅针对单个存储守护进程实施。您无法在一个存储守护进程上读取数据,而在另一个存储守护进程上写入数据。
这正是我想要做的...
我该如何实现这一目标?
答案1
我找到了(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
这里的缺点是,如果您想恢复此备份,您必须从亚洲总监那里进行,因为欧洲总监对这项工作一无所知......
答案2
补充一点。尝试使用扫描然后您可以再次“读取”卷(复制的卷)并将它们导入到其他位置的目录中。然后您也可以在第二个站点中恢复它们 ;) 这样就可以避免在出现任何问题时对第一个控制器的依赖。
希望对您有帮助。谢谢 Filipe