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