После нескольких дней использования решения, похоже, оно работает, так что вот оно:
Допустим, у нас есть следующие задания:
Затем, принимая --job в качестве соглашения, набор файлов должен выглядеть так:
FileSet {
Name = "someapp-fileset"
Include {
Options {
signature = MD5
Compression = GZIP
}
File = "| bash -c \"echo %n | awk -F '-' '{print \$2}' | xargs -I ARG echo /opt/ARG\""
}
Exclude {
File = "| bash -c \"echo %n | awk -F '-' '{print \$2}' | xargs -I ARG echo /opt/ARG/temp\""
File = "| bash -c \"echo %n | awk -F '-' '{print \$2}' | xargs -I ARG echo /opt/ARG/logs\""
}
}
Дополнительные сведения о выполнении команд в наборе файлов см. документацию
Полное и инкрементное резервное копирование выполняется нормально.
Я не верю, что вы сможете это сделать - файл конфигурации Bacula - это файл конфигурации , а не язык программирования или оболочка.
Ваши практические варианты:
Используйте идентичные структуры каталогов на каждой машине
Это наиболее практичное решение с точки зрения Bacula. Это требует наименьшей дополнительной работы в файле конфигурации Bacula, и если ваши приложения «идентичны», это имеет наибольший смысл.
Используйте набор файлов на машину
Это раздражает больше, чем вариант (1), поскольку вы теперь поддерживаются почти идентичные наборы файлов. Это наиболее практично, если вы создаете конфигурацию Bacula с помощью какого-либо другого процесса, который может автоматически создавать наборы файлов.
Используйте один набор файлов со списком всех каталогов.
Это работает, но каждый раз, когда вы добавляете новую машину (и, следовательно, новый каталог env #
), вы будете изменять глобальный набор файлов и запускать полное резервное копирование.
Используйте директиву ClientRunBeforeJob
, чтобы поместить файлы в едином месте
Это немного грязно, но это работает - Перед тем, как сделать резервную копию, переместите среду приложения Bacula rsync
в другое место. (Если вы работаете в системе Linux, вы также можете использовать mount --bind
, чтобы разместить приложение в едином месте, не влияя ни на что другое.)
но это работает - установите Bacula rsync
среду приложения в другое место, прежде чем она сделает резервную копию. (Если вы работаете в системе Linux, вы также можете использовать mount --bind
, чтобы разместить приложение в едином месте, не влияя ни на что другое.)
но это работает - установите Bacula rsync
среду приложения в другое место, прежде чем она сделает резервную копию. (Если вы работаете в системе Linux, вы также можете использовать mount --bind
, чтобы разместить приложение в едином месте, не влияя ни на что другое.)
Основным недостатком этого подхода является то, что вы удваиваете свои требования к хранилищу: у вас есть работающая производственная копия приложения и теневая копия, которую Bacula создает для резервного копирования.