Резервное копирование вне сайта Bacula
У меня есть 2 локации, одна в Европе, другая в Азии. Каждое местоположение имеет полностью функциональную систему Bacula для обработки локальных резервных копий.
То, что я хочу сделать, это скопировать некоторые задания из одного местоположения SD в другое местоположение SD. В идеале, если я могу выполнить резервное копирование в расположение A, скопировать в расположение B и восстановить на сервере в местоположении B.
Я понимаю, что начиная с версии 7.0.0 Bacula разрешает резервное копирование SD на SD. Я думаю, что это особенность, которая мне нужна (bacula manual)
Bacula версии 7.0 позволяет переносить задания на копирование и миграцию с SD на SD. Это разрешает то, что обычно называют репликацией или переносом резервных копий Bacula за пределы сайта. Это происходит автоматически, если исходная SD и целевая SD задания копирования или миграции отличаются.
Проблема в том, что я не знаю, как установить такие задания. Я не нашел никаких уроков по этому вопросу.
Сначала я думал, что я должен использовать задание на копирование, но потом из того же руководства:
Миграция реализована только для одного демона Storage. Вы не можете читать на одном демоне Storage и писать на другом.
это именно то, что я хотел сделать...
Любые идеи о том, как я могу достичь этого?
2 ответа
Я нашел (а) решение...
кажется, что ключ здесь:
Это происходит автоматически, если исходная 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
}
Обратите внимание на директиву Next Pool из исходного пула, так как она указывает пул, в который будут копироваться задания.
После этого при запуске резервного копирования я получаю:
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
Недостатком здесь является то, что если вы хотите восстановить эту резервную копию, вам придется сделать это от директора по Азии, потому что директор по Европе не имеет ни малейшего представления об этой работе...
Просто чтобы добавить одну вещь. Попробуйте использовать bscan, и вы сможете снова "прочитать" тома (скопированные) и импортировать их в каталог другого местоположения. Чем вы можете восстановить их и на втором сайте;) Таким образом, вы избежите зависимости от первого директора, если что-то пойдет не так.
Надеюсь, поможет. Ура Филипе