@ Карта сайта News Автора!

Bog BOS: Сетевая система резервного копирования и восстановления данных bacula

Последние изменения:
2018.08.30: sysadmin: переработана статья про syslog

Последнее изменение файла: 2018.11.14
Скопировано с www.bog.pp.ru: 2018.11.15

Bog BOS: Сетевая система резервного копирования и восстановления данных bacula

Общая характеристика системы

Сетевая система резервного копирования и восстановления данных bacula позволяет системному администратору сохранять данные с многочисленных компьютеров сети на накопители на магнитной ленте, устройства записи на DVD (growisofs 6.1, удалено) или жёсткие диски, а также искать и восстанавливать утерянные данные. Поддержка автозагрузчиков со считывателем штрихкода с динамической разметкой томов (метки тома в форматах IBM и ANSI, утилита проверки совместимости). Возможность кеширования данных на диск при записи на ленту или DVD. Возможность кеширования метаданных на диск перед записью в СУБД.

Серверная часть для Linux, FreeBSD 5.0 и выше, Solaris 8 и выше. Клиенты для Linux, FreeBSD, Solaris, Win32 (W98, Me, NT, 2000, XP, 2003, Vista), Win64 (2008, Vista, Windows 7, Windows 8), MacOS X/Darwin, OpenBSD, Irix (?), Tru64 (?), AIX (?), HPUX (?). Система поставляется в виде исходных текстов, что позволяет адаптировать её под любую системы при наличии компилятора C++ не хуже gcc 2.95 (для версии 1.36, для более новых версий требуется более новая версия gcc). Имена файлов произвольной длины (для Win32 в версии 1 не длинее 260). Хранение атрибутов файлов: времена создания (не используется при восстановлении), изменения и доступа, владелец и группа, права доступа, POSIX ACL (в т.ч. для NTFS), в версии 2 - ACL SunOS, в версии 3 - атрибуты для каждой платформы сохраняются особым образом и восстанавливаются только для родной платформы, добавлена поддержка Solaris ZFS/NFSv4 ACL (с возможностью конвертации из UFS в ZFS). Расширенные атрибуты (xattr, libattr, getxattr, setxattr) сохраняются, начиная с версии 3 (включая атрибуты SELinux и Samba). Для каждого файла хранится также имя клиента и имя носителя. Возможность сохранения открытых файлов NTFS (с помощью VSS - Volume Shadow Copy; W98 и W2000 не имеют VSS!, только одна задача может использовать VSS!). Поддержка имён файлов в UTF-8 для Unix/Linux и UTF-16 для Win32 (преобразуется в UTF-8 при хранении). Возможность сохранять и восстанавливать разделы диска (только целиком) и fifo-файлы (это позволяет дописывать свои программы хранения и восстановления). Имеется возможность добавлять свои расширения (в комплекте расширения bpipe и exchange).

Система хорошо масштабируема. Управляющий директор, СУБД, сервер хранения, сервер доступа к файловой системе, монитор и консоль выделены в отдельные процессы и могут быть в нескольких экземплярах расположены в различных узлах сети. При этом сохраняется возможность единой точки управления и мониторинга. Компоненты могут быть легко разнесены в нужные места сети или удалённых сетей, интерфейс прост, описан и управляем с точки зрения сетевого экрана.

Процесс резервирования автоматизирован с помощью единого планировщика (типа cron, т.е. туп). Возможно параллельное выполнение нескольких заданий, включая запись в один том. Приоритизация заданий (подход специфический, рекомендуется изучить перед планированием использования). Отсутствует автоматический запуск пропущенных заданий (есть повтор неудавшегося задания и автоматическое преобразование резервного копирования изменений в полное копирование).

Ограничения на размер файлов, файловых систем и разделов - не более 4 миллиардов файлов в СУБД. Если надо более, то необходимо разбить БД на несколько (по клиентам) или перед сборкой переключить FileId с 32-битного на 64-битное представление (в версии 3 переключено по умолчанию). Есть поддержка многотомных архивов.

Имеется (имелась?) отдельная процедура резервного копирования с целью восстановления "с нуля" (загружаемый CD). При этом восстанавливаются не только данные, но и большинство системной информации (разбиение на разделы, LVM). К сожалению, не восстанавливаются атрибуты файловых систем и софтовый RAID (md). Пользоваться невозможно, в версии 3 полностью переделано.

Отсутствуют "тяжелые" механизмы типа CDP, LAN-free, Serverless, снятие копии со снапшота (что-то появилось), дедупликация (возможно с помощью внешних средств - ZFS и пр., требуется дополнение без исходных текстов - aligned-sd.so, не пробовал, но эффективность сомнительна; данные хранятся отдельно от метаданных и маленьких файлов с выравниванием каждого файла на границу записи), автоматическое распараллеливание копирования с одного клиента (мне не удалось увидеть скорость потока более 200МБ/сек).

Миграция заданий между пулами реализована в версии 2.2 (только перемещение и только внутри одного сервера хранения). В версии 3 добавлена возможность копирования заданий (опять внутри одного сервера хранения?). В версии 3 появилась функция консолидации архивов. В версии 9 доделана возможность создания виртуальной полной копии (создаётся на сервере из полной копии и изменений) с автоматическим удалением ненужного.

Возможность запускать скрипты до и после задания на клиенте и сервере хранения. Это позволяет создавать свои агенты для резервирования и восстановления БД.

Средств управления хранением данных (иерархическое хранения, учёт жизненного цикла) и работы с архивами нет.

Сжатие производится пофайлово на стороне клиента (gzip или LZO, однопоточное), что позволяет минимизировать ущерб ошибок чтения. Каждый блок (около 64 КБ, размер задаётся) тома содержит контрольную сумму. Возможность ограничения трафика появилась в версии ?. Полная свобода выбора месторасположения сервера (серверов) хранения. Поддержка SAN средствами ОС.

Формат архива - свой. Имеются автономные утилиты получения оглавления, восстановления файлов (до версии 3 с ограничениями), восстановления БД по архивам, а также описание формата архива (и исходные тексты ;).

Основным интерфейсом является командная строка с выбором из меню при нехватке параметров. В версии 2.2 появился многообещающий графический интерфейс bat (требуетсся осторожность при больших установках). Графические консоли управления в предыдущих версиях бесполезны. Имеется веб-интерфейс baculam (не освоено, т.к. предыдущие варианты преданы забвению). Интерактивное восстановление файлов с возможностью выбора нужной копии. Имеется возможность указывать исключения в списке файлов с помощью регулярных выражений. Автоматический запрос оператору на установку нужного тома. Извещения о проблемах и необходимости ручного вмешательства по email (различные сообщение на различные адреса для различных событий для различных групп серверов) и syslog.

Для индивидуального применения лучше подыскать другую программу (эта слишком тяжела в развёртывании), зато после настройки работает в полностью автоматическом режиме. Плохо переносит резкие смены конфигурации (как убрать все упоминания об удалённом клиенте, его заданиях и томах - в версии 9.2.1 появилась команда "delete client=имя", недоделанная). Плохая обработка ошибок при работе с диском (заполненный диск, глюки с созданием нового тома при наличии файла) и сетью, перезагрузке серверов и клиентов, завершившиеся с ошибкой задания остаются в БД навсегда (и, вообще, БД не чистится от мусора). Хорошо хоть оператора извещает. Много ручной работы (беготня по меню), нет создания нескольких копий одновременно, нет консолидации частично заполненных носителей, нет автоматического обнаружения новых серверов, файловых систем, СУБД. Ручная установка как серверов, так и клиентов. Средства перехода на новую версию - вручную. Требуется LD_ASSUME_KERNEL=2.4.19 для запуска в RH с ядром 2.4 (проблема с нитями).

Своя система аутентификации и авторизации для администраторов с возможностью разбивки по ролям и областям ответственности, учёт действий пользователей. Для аутентификации между процессами используется CRAM-MD5, обеспечивающий достаточный (?) уровень защиты, пароли не передаются, но хранятся в открытом виде. Передаваемые между серверами данные можно шифровать с помощью TLS. В версии 3 добавлена возможность аутентификации с помощью TLS. Шифровка данных на стороне клиента в версии 2. SSL при обращении к СУБД с версии 7.

Высокая скорость (наличие каталога с информацией о местонахождении требуемого файла) и лёгкость восстановления (поиск по имени, времени). Слабая защита "от дурака" в текстовой версии. Независимость восстановления от платформы в версии 2 (с потерей атрибутов). Возможность восстановления на другой хост, другой каталог (и возможность ограничить это).

Информация о заданиях, томах и файлах сохраняется во внешней СУБД (MySQL от 4.1, PostgreSQL от 7.4, SQLite от 2.8.16 или SQLite 3): какой файл с какого клиента был записан на какой носитель и когда. Возможность восстановления каталога из резервной копии и с носителя. В версии 3 добавлна возможность доступа к СУБД через libdbi (удалена).

Управление и учёт носителей (сколько времени хранить, где находится, что содержит); метки на носителях (физические и логические), отслеживания перемещений нет. Группировка томов в пулы со своими свойствами и назначением.

Имеется режим верификации, который позволяет сопоставить атрибуты файлов в каталоге с текущим состоянием (в т.ч. MD5 или SHA1 хеши).

В версии 3 появилась возможность отслеживания удаления и переименования файлов после сохранения (иначе при восстановлении удалённые файлы появятся вновь).

Написание скриптов на python (2.2, 2.3, 2.4 или 2.5).

Распространяется с открытыми источниками (почти GPL2 в версии 1 и просто GPL2 в версиях 2 и 3, с небольшими исключениями, сейчас Affero GPL Version 3). Требуется компилятор GNU C++ 2.95 и выше (для версии 1.38), Visual Studio для версии 1 и mingw32 для версии 2). Начальные разработчики - John Walker и Kern Sibbald (2000), передан Free Software Foundation of Europe. Создана фирма для поддержки пользователей - Bacula Systems S.A. (Kern Sibbald). Документация написана для версии 1 ("the current production Bacula release is version 1.38.11"), к которой приложена пачка изменений. Версии: 1.38.11, 2.0.3, 2.2.8, 2.4.4, 3.0.3, 5.0.2, 5.2.13, 7.4.4, 9.0.8, 9.2.1. Последняя бесплатная версия под MS Windows - 5.2.10 (вроде одумался и исполняемые файлы для версии 9 имеются). Загрузка пакетов после регистрации, но без SMS (не пробовал). Работа со снимками (LVM, ZFS, btrfs) и дедупликацией (Deduplication Optimized Volumes, Aligned Volumes) только с помощью бинарных пакетов (bsnapshot и ?).

Недовольные коммерциализацией и медленным развитием сделали форк - bareos (был суд), тоже не очень бурно развивается, плагины и рефакторинг, рефакторинг и плагины (версия 16.2). Квоты, дедупликация (такая же ерунда как в bacula?), аудит (?), стыковка с Gluster и Ceph, инициация со стороны клиента (?), Always Incremental.

Имеются проблемы при работе с большим количеством файлов в задании - тормозит как СУБД (MySQL), так и директор, особенно при восстановлении при большом количестве инкрементных заданий. Время обработки данных до начала восстановления (52 миллиона файлов, Xeon 3.5 GHz, ОП более чем достаточно, версия 5.2.13, Accurate в Job, "restore all done", директор работает в 1 поток - создаёт restore.bsr, экономит количество монтирований томов?):

Я не использовал НЛМ при работе с bacula.

Архитектура системы, основные понятия и компоненты

Система состоит из набора сервисов 5 типов (может быть один или несколько сервисов каждого типа, расположение различных сервисов в сети определяется администратором):

Дополнительные компоненты:

В качестве РСУБД можно использовать MySQL (версии от 4.1; желательно не в режиме совместимости ANSI/ISO; при установке из пакетов потребуются пакеты mysql, mysql-server и mysql-devel; при самостоятельной сборке требуется указать --enable-thread-safe-client), PostgreSQL (не пробовал) или SQLLite (в крайнем случае или для тестирования). Автор рекомендует использовать PostgreSQL, если требуется более 2 миллионов файлов на задание в режиме Accurate. В версии 3 добавлена возможность доступа к СУБД через libdbi (пока к тем же самым типам СУБД, выброшен?). При установке bacula с MySQL устанавливаются скрипты работы с СУБД (в скриптах можно указывать дополнительные параметры, например: "-u root -p"):

Основной единицей работы является задание (Job). Данные хранятся в томах, тома разбиваются на пулы томов. Типы заданий - Backup, Restore, Admin (для запуска скриптов), Migration (перемещение сохранённых данных с одного тома в другой), Copy (копирование сохранённых данных с одного тома в другой), Verify, Archive, внутренние работы, соединение с консолью. При описании задания определяются: что сохранять - клиент и набор файлов, куда сохранять - сервер хранения и пул (не том!) и каталог для метаданных), время запуска. Запуск задания производится автоматически планировщиком или вручную с консоли, директор обращается к файловому серверу и серверу хранения, файловый сервер обращается к серверу хранения (если не используется "SD calls Client") и передаёт данные и метаданные, сервер хранения передаёт полученные метаданные жиректору для включения в каталог.

Типы заданий резервирования:

Информация хранится в БД ограниченное время. Можно отдельно задать периоды хранения информации о файлах (определяется в описании клиента при настройке директора), заданиях (при удалении задания удаляется информация о связанных с ним файлах; определяется в описании клиента при настройке директора) и томах (определяется в описании пула при настройке директора, вместе с информацией о томе удаляется информация о заданиях и файлах). Срок хранения информации о файлах и заданиях обычно проверяется в конце задания сохранения для данного клиента. После удаления информации о файлах из каталога можно восстановить только всё задание целиком (или необходимо предварительно поменять параметры хранения и восстановить каталог утилитой bscan). Консоль имеет команды ручного удаления: prune (с учётом времени хранения) и purge (без учёта). Рекомендуется ежегодно выполнять dbcheck и OPTIMIZE TABLE в MySQL (или mysqldump с последующим восстановлением).

Данные сохраняются на тома (магнитная лента, DVD или файл). Имя тома может состоять из букв, цифр и символов "-_:.". На один том можно записывать произвольное количество заданий (регулируется настройкой). Одно задание может быть разбито на несколько томов. В начале каждого тома пишется метка тома, которая позволяет избежать установки неправильной ленты. Имя файла является частью метки фалового тома, так что переименовывать файлы нельзя. Тома группируются в пулы томов: в описании задания указывается имя пула, а не конкретного тома. Типы пулов: Backup (здесь хранятся данные), Scratch (резервные тома, при потребности перемещаются в нужный пул), Recycle (тома после очистки). Параметры пула задаются при настройке директора (записываются в каталог при запуске директора или командой create в консоли). При изменении параметров пула необходимо перезапустить директора или выполнить команду "update pool" в консоли. Для автоматического изменения информации о пуле в каталоге, пул должен быть упомянут хотя бы в одном задании. Информация о реальных томах, входящих в пул, хранится в каталоге. Добавление тома в пул осуществляется командой label в консоли. Эта же команда записывает метку в начало тома (или утилита btape). Команда relabel позволяет записать новую метку тома (том должен быть предварительно очищен). Команда add добавляет том в пул, не записывая метку. Возможно автоматическое (по потребности) добавление томов в пул (полезно для дисковых томов). При инициализации тома его атрибуты по умолчанию берутся из описания пула в каталоге (можно изменить командой "update volume" из консоли, в меню есть возможность обновить все параметры томов в пуле по изменившемуся описанию пула - reload, update pool). Атрибут "Media Type" тома должен соответствовать типу носителя, который описан для указанного в задании устройства хранения. Возможные состояния тома:

Срок хранения информации в каталоге о томе проверяется только когда требуется новый том для записи, а свободного (Append) тома не найдено. В этом случае просматриваются все полностью заполненные (Full) или запрещённые к дальнейшему использованию (состояние Used) тома (превышение времени использования, числа заданий и т.п.), помеченные для автоматической очистки (атрибут AutoPrune при описании пула) и информация о файлах и заданиях на этом томе удаляется из каталога в соответствии со сроком хранения. Если в результате была удалена информации о всех файлах и заданиях, относящихся к данному тому, то он переводится в состояние очищенного (Purged). Из этого состояния том может быть немедленно переведён в состояние Recycled и использован для записи, если отмечена возможность его повторного использования (атрибут Recycle при описании пула), и он является самым старым (RecycleOldestVolume). Опция PurgeOldestVolume позволяет повторно использовать самый старый том независимо от установленных сроков хранения информации в БД. Опция Recycle Current Volume позволяет повторно использовать текущий том, установленный в устройстве. Если подходящего тома найти не удалось и не разрешена автоматическая разметка новых томов (перед разметкой происходит событие NewVolume для интерпретатора phyton) или достигнут разрешённый максимум числа томов, то bacula требует вмешательства оператора. При использовании автоподатчиков и ленточных библиотек bacula стремится минимизировать ручное вмешательство. Имеется возможность создать специальный пул Scratch, тома из которого автоматически передаются в требуемый пул (настройки тома берутся из текущего пула). Состояние тома можно узнать командой консоли "list volumes". Удалить вручную информацию о заданиях и файлах на этом томе без проверки сроков хранения можно командой консоли "purge jobs volume": (том переводится в состояние очищенного - Purged), с проверкой сроков хранения - prune. Удаление тома из каталога производится командой: delete volume (у меня удаление тома занимает 5 минут; размер БД более 4 ГБ). В версии 2 появилась возможность переноса задания с одного тома на другой (миграция), пока внутри одного сервера хранения. В версии 3 появилась возможность копирования задания и возможность выбора копии при восстановлении.

Для записи на DVD (-R, +R, -RW, +RW) используется модифицированная версия growisofs (dvd+rw-tools-5.21.4.10.8 с заплатками), в версию 7 они уже встроены. Предварительно поток кешируется в файл, а при достижении оговоренного размера содержимое кеша записывается как сессия на DVD. Болванка выдерживает не более 1000 сессий записи (монтирование в режиме RW считается записью даже, если в реальности ничего не записывается). Болванка выдерживает не более 10 форматирований. bacula не может записывать на болванку, на которой сформирована файловая система (можно проверить попытавшись смонтировать диск). Полная или быстрая очистка болванки перед первым использованием:

growisofs -Z /dev/xxx=/dev/zero
или
dd if=/dev/zero bs=1024 count=512 | growisofs -Z /dev/xxx=/dev/fd/0

При описании каждого задания (Job) указывается какие файлы и как сохранять (FileSet), откуда их сохранять (Client), когда сохранять (Shedule), куда сохранять (Pool, Storage). Кроме заданий на сохранение можно описывать задания на восстановление, верификацию и администрирование.

Общий синтаксис файлов настройки и ключи

Каждый сервис имеет собственный файл настройки, имя которого можно задать при запуске (ключ "-c"). По умолчанию, в текущем каталоге ищется файл с именем bacula-sd.conf, bacula-fd.conf, bacula-dir.conf, console.conf (bconsole.conf, bgnome-console.conf, bwx-console.conf, bat.conf) или tray-monitor.conf. Используется кодировка UTF-8.

Каждый конфигурационный файл состоит из "ресурсов" различных типов. Ресурс состоит из имени типа ресурса и перечня директив в фигурных скобках. Каждая директива располагается на отдельной строке и состоит из имени директивы и значения, разделённых знаком равенства. Длина строки ограничена 499 байтами (2000?) до версии 7.0. Пробелы в имени являются незначащими, прописные и строчные буквы не различаются. Значение, содержащее пробелы и прочие символы, необходимо заключать в кавычки. Обратная косая черта маскирует специальное значение следующего символа. Пустые строчки и символы от знака '#' до конца строки игнорируются. Символ ';' означает конец директивы, далее может идти следующая директива. Конструкция '@абсолютное-имя-файла' на месте любой лексемы включает содержимое указанного файла. Конструкция '@|sh -c команда' позволяет сгенерировать список включаемых файлов. Каждый ресурс должен иметь директиву Name (с уникальным значением) и может иметь директиву Description (должно показываться оператору, но непоказывается даже в команде show). Например:

Storage {
  Name = FileStorage; Description = "huge hard disk storage"
  Address ...
}

Типы данных:

Общие ключи запуска серверов:

Во всех файлах настройки задаётся ресурс Messages, который управляет рассылкой сообщений, в зависимости от типа сообщения и имени задания. Можно задавать несколько ресурсов Messages для заданий различного типа (имя ресурса Messages указывается при описании задания). Сообщение может быть отправлено в несколько мест назначения (в syslog и по e-mail) или не отправлено никуда. Рекомендуется настраивать файловые сервера и сервера хранения так, чтобы все сообщения пересылать директору - это позволяет централизовать обработку сообщений.

Каждое сообщение имеет один из следующих типов:

Директивы:

TLS. Во всех файлах настройки (директор, сервер хранения, клиент, консоль) могут быть заданы директивы, обеспечивающие шифрование передачи данных (не хранение!) с помощью TLS и системы сертификатов PKI (не путать с директивами PKI, обеспечивающими шифрование хранения!). Не поддерживается режим анонимного согласования Diffie-Hellman. Имеется возможность использовать TLS для аутентификации вместо CRAM-MD5. В данном описании клиентом называется тот, кто обращается к серверу, а сервером - тот кто отвечает на запросы клиента. Директивы (пример использования):

Сервер хранения

В файле настройки (/usr/local/bacula/etc/bacula-sd.conf) должны быть описаны следующие ресурсы:

Файловый сервер (клиент)

В файле настройки (/usr/local/bacula/etc/bacula-fd.conf) должны быть описаны следующие ресурсы:

Клиент может работать в режиме "читать всё, без права записи": "bacula-fd -k -u nobody -g nobody".

Обещана работа клиента под Windows XP, Windows Server 2000, Windows Server 2003, Windows Server 2008, Vista, Windows 7 и Windows 8. Запускается как системный сервис, иконка с меню в трее.

Клиент версии 7.0 периодически посылает сообщения директору о количестве обработанных файлов и байт. Директора старых версий пугаются.

Консоль управления

Модификации консоли:

Аутентификация и авторизация доступа к директору может быть 3 типов:

В файле настройки (bconsole.conf, gnome-console.conf, wx-console.conf, bat.conf) должны быть описаны следующие ресурсы:

Ключи bconsole:

Команды консоли (имя команды можно сокращать (даже при неоднозначности!), имя параметра - нет; если параметров недостаточно, то недостающие будут запрошены; для прерывания интерактивного задания параметров - не при вводе имени тома - необходимо ввести "."; запущенную на выполнение команду прервать нельзя (^C не работает); команды могут читаться из файла перенаправлением ввода; максимальная длина команды - 511 символов):

Команды для работы в пакетном режиме и для графических оболочек:

Команды, выполняемые самой консолью (только текстовый вариант):

Команды интерактивного режима выбора файлов при восстановлении ("нехорошие" имена файлов необходимо заключать в кавычки):

gnome-console (gnome-console.conf) и wx-console отличаются только возможностью выбирать восстанавливаемые файлы мышкой (wx-console медленна и с неправильным шрифтом).

Монитор

Монитор позволяет узнать состояние серверов (директоров, файловых серверов, серверов хранения), к которым ему разрешён доступ.

В файле настройки (/usr/local/bacula/etc/tray-monitor.conf) должны быть описаны следующие ресурсы:

Директор

В файле настройки (bacula-dir.conf) должны быть описаны следующие ресурсы:

Схема "перекрёстного опыления" на дисковые массивы

Гибкость настройки системы bacula позволяет выработать и определить стратегию резервного копирования и восстановления, подходящую для каждого конкретного случая.

В нашем случае мы имеем два здания, соединённых достаточно быстрым каналом связи (100/1000 Mbps). В каждом здании имеется серверная, в которой расположены основные серверы организации и коммутационное оборудование. Часть серверов и рабочих станций, подлежащих копированию, разбросана по зданиям. Было принято решение установить по серверу резервного копирования в каждой серверной и настроить их таким образом, чтобы резервное копирование компьютеров из первого здания осуществлялось сервером копирования из второго здания, а компьютеров из второго здания - сервером копирования из первого здания. Это обеспечивает сохранность резервных копий в случае локальных катастроф (пожар или приход ОБЭП ;), в т.ч. копий самих серверов копирования. В качестве носителей было принято решение использовать НЖМД (каталог /backup/bacula на отдельном разделе - в нашем случае RAID-5).

После установки и опробования начнём настройку компонент bacula. Основной принцип - разделяй и властвуй, т.е. для каждого клиента определяется отдельное задание, отдельный планировщик, отдельный FileSet, отдельные пулы (для каждого типа задания отдельный пул), отдельный каталог (MediaType) и т.д. Несколько раз пробовал группировать для упрощения настройки и каждый раз жалел при первом же изменении стратегии резервного копирования. Отдельный вопрос - настройка сетевых экранов.

Настройка первого сервера хранения (bacula-sd.conf, для второго сервера хранения настройки аналогичны):

Storage {
  Name = backup1-sd
  Description = "backup storage server здание А"
  WorkingDirectory = "/usr/local/bacula/var"
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20 # реальное ограничение в настройках директора
  SDPort = 9103
}
Director {
  Name = backup1-dir
  Password = "backup1-dir-to-backup1-sd"
}
Director {
  Name = backup2-dir
  Password = "backup2-dir-to-backup1-sd"
}
Director {
  Name = console-mon
  Password = "tray-password"
  Monitor = yes
}
# для каждого клиента отдельное "устройство"
Device {
  Name = FileStorage-ИмяКлиента
  Archive Device = /backup/bacula/ИмяКлиента
  Device Type = File
  Media Type = File-ИмяКлиента
  Removable Media = no
  Random Access = Yes
# Block Positioning = no # при чтении старых томов в новой версии
  LabelMedia = Yes
  Automatic Mount = Yes
  AlwaysOpen = No
  Maximum Network Buffer Size = 65536
}
...
Messages {
  Name = Standard
  director = backup1-dir = all
}

Клиенты из второго здания первого сервера хранения (bacula-fd.conf, для клиентов второго сервера хранения настройки аналогичны):

Director {
  Name = backup1-dir
  Password = "backup1-dir-to-ИмяКлиента-fd"
}
Director {
  Name = backup2-dir
  Password = "backup2-dir-to-ИмяКлиента-sd"
}
Director {
  Name = console-mon
  Password = "tray-password"
  Monitor = yes
}
FileDaemon {
  Name = ИмяКлиента-fd
  FDport = 9102
  # FDAddress для компьтеров с несколькими интерфейсами
  WorkingDirectory = /usr/local/bacula/var
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20 # реальное ограничение в настройках директора
}
Messages {
  Name = Standard
  director = backup1-dir = all, !skipped, !restored
}

Настройка первого директора (bacula-dir.conf, настройки второго директора аналогичны):

Director {
  Name = backup1-dir
  Description = "backup director здания А"
  Password = "universal-password-to-backup1-dir"
  Messages = Daemon
  WorkingDirectory = "/usr/local/bacula/var"
  PidDirectory = "/var/run"
  # Scripts Directory
  QueryFile = "/usr/local/bacula/etc/query.sql"
  Maximum Concurrent Jobs = 5 # подбирается экспериментально
  DIRport = 9101
}
#
# для каждого клиента
#
Job {
  Name = ИмяКлиента
  # Enabled = No # для временного отключения планирования
  Type = Backup
  Level = Full
  Write Bootstrap = "/usr/local/bacula/var/ИмяКлиента.bsr"
  Client = ИмяКлиента-fd
  FileSet = ИмяКлиента
  Messages = Standard
  Pool = ИмяКлиента-monthly
  Incremental Backup Pool = ИмяКлиента-daily
  Schedule = ИмяКлиента-year
  Rerun Failed Levels = Yes
# для рабочих станций
#  Run Script {
#    Runs When = Before
#    Runs On Client = No
#    Fail Job On Error = Yes
# не запускать по праздникам
#    Command = /usr/local/bacula/etc/holiday.sh
#  }
#  Reschedule On Error = Yes
#  Reschedule Interval = 30 minutes
#  Reschedule Times = 16
}
#
# для каждого клиента под Linux
#
FileSet {
  Name = ИмяКлиента
# не делать полное копирование после изменения списка
# Ignore FileSet Changes = Yes
  Include {
    Options {
      compression = GZIP
      signature = SHA1
      onefs = yes
      aclsupport = yes
      noatime = yes
      checkfilechanges = yes
    }
    File = /
# каждую файловую систему отдельно
    ...
  }
  Exclude {
    File = /proc
    File = /sys
    File = /net
    File = /media
# для devfs
#    File = /dev
# для прочих
    File = /dev/pts
    File = /dev/shm
    File = /tmp
    File = /var/cache/yum
    File = /.journal
    File = /.fsck
    File = /var/lib/nfs/rpc_pipefs
    File = /.autofsck
    File = /selinux
    File = /var/named/chroot/proc
    File = ...
  }
}
#
# для каждого клиента под MS Windows XP/2003
#
FileSet {
  Name = ИмяКлиента
# не делать полное копирование после изменения списка
# Ignore FileSet Changes = Yes
  Enable VSS = Yes
  Include {
    Options {
      compression = GZIP
      signature = SHA1
      onefs = yes
      portable = no
      noatime = yes
      checkfilechanges = yes
      Ignore Case = yes
      wildfile = "*.avi"
      wildfile = "*.wmv"
      wildfile = "*.mp3"
      wildfile = "pagefile.sys"
      wildfile = "hiberfil.sys"
      wilddir = "System Volume Information"
      wilddir = "TEMP"
      wild = ...
      exclude = yes
    }
    File = "e:/"
# каждый диск отдельно
    ...
  }
}
# долговременное хранение для серверов с возможностью восстановления 
# состояния на любой день в течении недели, на любое воскресенье в течении месяца,
# на первое воскресенье в течении года
#   ночью первого воскресенья месяца - полное копирование на тома пула ИмяКлиента-monthly
#   в остальные воскресенья - полное копирование на тома пула ИмяКлиента-weekly
#   в прочие дни - копирование изменений на тома пула ИмяКлиента-daily
Schedule {
  Name = "ИмяКлиента-year"
  Run = Level=Full Pool=ИмяКлиента-monthly 1st sun at 00:05
  Run = Level=Full Pool=ИмяКлиента-weekly 2nd-5th sun at 00:05
  Run = Level=Incremental Pool=ИмяКлиента-daily mon-sat at 00:05
}
# среднесрочное хранение для серверов с возможностью восстановления 
# состояния на любой день в течении недели, на любое воскресенье в течении месяца
#   ночью в воскресенье - полное копирование на тома пула ИмяКлиента-weekly
#   в прочие дни - копирование изменений на тома пула ИмяКлиента-daily
Schedule {
  Name = "ИмяКлиента-year"
  Run = Level=Full Pool=ИмяКлиента-weekly sun at 00:05
  Run = Level=Incremental Pool=ИмяКлиента-daily mon-sat at 00:05
}

#
# для каждого клиента
#
Client {
  Name = ИмяКлиента-fd
  Address = полное-имя-или-адрес
  FDPort = 9102
  Catalog = MyCatalog
  Password = "backup1-dir-to-ИмяКлиента-fd"
  AutoPrune = yes
# это ограничение на срок хранения сверху, реальный срок задаётся в Pool
  File Retention = 1 year
  Job Retention = 1 year
}
#
# для каждого клиента
#
Storage {
  Name = File-ИмяКлиента
# DNS-разрешение происходит на клиенте, не надо вписывать сюда 127.0.0.1!
  Address = адрес-первого-сервера-хранения
  SDPort = 9103
  Password = "backup1-dir-to-backup1-sd"
  Device = FileStorage-ИмяКлиента
  Media Type = File-ИмяКлиента
}
#
# каталог один на всех
#
Catalog {
  Name = MyCatalog
# DB Address и DB Port, если сервер SQL вынесен на другой хост
  dbname = bacula; user = bacula; password = "пароль для MySQL"
}
#
# обработка сообщений, приписанных заданию
#
Messages {
  Name = Standard
  mailcommand = "/usr/local/bacula/sbin/bsmtp -h SMTP-сервер -f \"\(Bacula: %d\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/local/bacula/sbin/bsmtp -h SMTP-сервер -f \"\(Bacula: %d\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = e-mail-адрес = all, !skipped, !saved, !restored
  operator = e-mail-адрес = mount, terminate, alert
  console = all, !skipped, !saved, !restored
  append = "/var/log/bacula.log" = all, !skipped
  syslog = all, !skipped, !saved, !restored
  catalog = all, !skipped
}
#
# обработка сообщений вне заданий
#
Messages {
  Name = Daemon
  mailcommand = "/usr/local/bacula/sbin/bsmtp -h SMTP-сервер -f \"\(Bacula: %d\) \<%r\>\" -s \"Bacula daemon message\" %r"
  mail = e-mail-адрес = all, !skipped, !saved
  console = all, !skipped, !saved, !restored
  append = "/var/log/bacula.log" = all, !skipped
  syslog = all, !skipped
  catalog = all, !skipped
}
#
# для каждого клиента описываются 3 пула (ежемесячный, еженедельный, ежедневный)
#
Pool {
  Name = ИмяКлиента-monthly
  Pool Type = Backup
  Maximum Volume Jobs = 1
  Maximum Volume Bytes = 4650000000 # по размеру DVD-R
  Volume Retention = 1 year
  AutoPrune = yes
  RecyclePool = ИмяКлиента-monthly
  Recycle = yes
  Recycle Oldest Volume = yes
  Label Format = "ИмяКлиента-monthly-${Year}${Month:p/2/0/r}${Day:p/2/0/r}-${Hour:p/2/0/r}${Minute:p/2/0/r}"
  Storage = File-ИмяКлиента
}
Pool {
  Name = ИмяКлиента-weekly
  Pool Type = Backup
  Maximum Volume Jobs = 1
  Maximum Volume Bytes = 4650000000 # по размеру DVD-R
  Volume Retention = 35 days
  AutoPrune = yes
  RecyclePool = ИмяКлиента-weekly
  Recycle = yes
  Recycle Oldest Volume = yes
  Label Format = "ИмяКлиента-weekly-${Year}${Month:p/2/0/r}${Day:p/2/0/r}-${Hour:p/2/0/r}${Minute:p/2/0/r}"
  Storage = File-ИмяКлиента
}
Pool {
  Name = ИмяКлиента-daily
  Pool Type = Backup
  Volume Use Duration = 6 days 18 hours
  Maximum Volume Bytes = 4650000000 # по размеру DVD-R
  Volume Retention = 7 days
# Volume Retention = 31 days # для восстановления состояния на любой день месяца
  AutoPrune = yes
  RecyclePool = ИмяКлиента-daily
  Recycle = yes
  Recycle Oldest Volume = yes
  Label Format = "ИмяКлиента-daily-${Year}${Month:p/2/0/r}${Day:p/2/0/r}-${Hour:p/2/0/r}${Minute:p/2/0/r}"
  Storage = File-ИмяКлиента
}
#
# права для мониторинга
#
Console {
  Name = console-mon
  Password = "tray-password"
  CommandACL = status, .status
}

Проще всего сгенерировать шаблон для каждого клиента с помощью скрипта bacula-client-gen.sh (параметры: имя клиента, тип ОС клиента (Linux, Windows), server/workstation), отредактировать (список файлов и исключений; адрес и пароль клиента; адрес и пароль сервера хранения) и поместить в файл /usr/local/bacula/etc/Имя-клиента.include, и включать в конфигурационный файл с помощью директивы '@'.

Ключи ./configure при сборке из исходных текстов

Некоторые ключи (обрабатываются также стандартные ключи configure):

Установка 9.2.1 на CentOS 7.5 x86-64 (директор, хранитель, текстовая консоль и клиент)

Предварительно необходимо установить и настроить MariaDB (5.5.60 из пакетов, включая пакеты mysql, mysql-server и mysql-devel), readline-devel, zlib-devel, lzo-devel, openssl-devel, krb5-devel, libacl, libacl-devel, libattr, libattr-devel, python-devel.

Процесс установки

  1. развернуть bacula-9.2.1.tar.gz
  2. [make distclean] (удаление кеша ./configure)
  3. QTDIR=/usr/lib64/qt4 PATH=/usr/lib64/qt4/bin:$PATH ./configure --prefix=/usr/local/bacula921 --mandir=/usr/local/bacula921/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --enable-batch-insert --with-sd-user=baculas --with-sd-group=bacula --with-mysql --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula921/var --enable-lockmgr --disable-conio --enable-readline --enable-bat --disable-ipv6 --with-lzo --with-systemd --with-logdir=/var/log/bacula
  4. просмотреть результат (config.out)
  5. make [-j8]
  6. добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow
  7. [остановить и удалить предыдущую версию] (оставлял версию bacula-fd 5.2.13 для работы с директором 5.2.13 на другом сервере)
  8. make install # в /usr/local/bacula921/
  9. mkdir /var/log/bacula
  10. chown baculad:bacula /var/log/bacula
  11. chmod 770 /var/log/bacula
  12. отредактированный ("su baculad bacula") scripts/logrotate в /etc/logrotate.d/bacula
  13. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  14. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  15. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  16. обеспечить файловую систему для хранения файлов и права доступа
    pvcreate /dev/sda /dev/sdb
    vgcreate x130all36 /dev/sda /dev/sdb
    lvcreate --stripes 2 --stripesize 64K --name full -l +100%FREE x130all36 /dev/sda /dev/sdb
    mkfs.xfs -L bacula -d su=64k,sw=2 -i attr=2 -l su=64k,lazy-count=1 -m crc=1 /dev/x130all36/full
    mkdir /backup
    vim /etc/fstab # LABEL=bacula /backup xfs nodiratime,relatime,attr2,logbufs=8,logbsize=256k,inode64,filestreams,nobarrier 1 2
    mount /backup
    mkdir /backup/bacula
    chown baculas:bacula /backup/bacula
    chmod 750 /backup/bacula
    
  17. обновить БД, если имеется (update_bacula_tables (update_mysql_tables позволяет обновить с версии БД 12 (bacula 5.0) до 16), каталог updatedb содержит скрипты для промежуточных обновлений)
  18. обеспечить файловую систему для MySQL на SSD
    pvcreate /dev/sdc
    vgcreate SSD /dev/sdc
    lvcreate --name mysql --size 200GB SSD
    mkfs.ext4 -j -L mysql -m 0 -O sparse_super -t largefile -v /dev/mapper/SSD-mysql
    vim /etc/fstab # LABEL=mysql /var/lib/mysql ext4 data=ordered,nodiratime,relatime,journal_checksum,delalloc,rw,nosuid,nodev,noexec,auto,nouser 1 2
    mount /var/lib/mysql
    
  19. установить MariaDB 5.5.60
  20. настроить /etc/my.cnf и /etc/my.cnf.d/mysql-clients.cnf и /etc/my.cnf.d/server.cnf по образцу (memlock?)
  21. chmod go+rx /usr/local/bacula921/etc/grant_mysql_privileges
  22. запустить "/usr/local/bacula921/etc/grant_mysql_privileges -p" под обычным пользователем (даёт права к bacula.* пользователю bacula без пароля, так что пароль надо устанавливать самому:
    mysql -u root -p
    SELECT Host, User FROM mysql.user;
    SET PASSWORD FOR 'bacula'@'localhost' = PASSWORD('пароль');
    SET PASSWORD FOR 'bacula'@'%' = PASSWORD('пароль');
    SELECT * FROM mysql.user;
    удалить ~/.mysql_history
    
  23. установить пароль в /usr/local/bacula921/etc/bacula-dir.conf, секция каталог
  24. chmod go+rx /usr/local/bacula921/etc/create_mysql_database
  25. запустить "/usr/local/bacula921/etc/create_mysql_database -u bacula -p" под обычным пользователем
  26. chmod go+rx /usr/local/bacula921/etc/{make_mysql_tables,update_mysql_tables,drop_mysql_tables}
  27. запустить "/usr/local/bacula921/etc/make_mysql_tables -u bacula -p" под обычным пользователем (update_mysql_tables обновляет формат таблиц, drop_mysql_tables очищает таблицы; архив скриптов обновлений лежит в upgradedb)
  28. добавить " -p" в MYSQLPASSWORD= в /usr/local/bacula921/etc/make_catalog_backup
  29. cp platforms/systemd/{bacula-dir.service,bacula-fd.service,bacula-sd.service} /lib/systemd/system/ (или bacula-dir921.service и т.д.)
  30. systemctl daemon-reload
  31. отредактировать настройки /usr/local/bacula921/etc/bacula-fd.conf
  32. [systemctl start bacula-fd (нервно реагирует на тестовые запросы от zabbix; несовместимость с сервером 5.2.13)]
  33. [systemctl status bacula-fd]
  34. [systemctl enable bacula-fd]
  35. создать каталоги для пулов в /backup/bacula с правильными правами
  36. перенести и отредактировать настройки /usr/local/bacula921/etc/bacula-sd.conf
  37. chown baculas:bacula /usr/local/bacula921/etc/bacula-sd.conf /usr/local/bacula921/sbin/bacula-sd
  38. chmod 640 /usr/local/bacula921/etc/bacula-sd.conf
  39. systemctl start bacula-sd
  40. systemctl status bacula-sd
  41. systemctl enable bacula-sd
  42. перенести и отредактировать настройки /usr/local/bacula921/etc/bacula-dir.conf
  43. chown baculad:bacula /usr/local/bacula921/etc/bacula-dir.conf /usr/local/bacula921/sbin/bacula-dir
  44. chmod 640 /usr/local/bacula921/etc/bacula-dir.conf
  45. chgrp bacula /usr/local/bacula921/sbin/bsmtp
  46. systemctl start bacula-dir
  47. systemctl status bacula-dir
  48. systemctl enable bacula-dir
  49. chgrp bacula /usr/local/bacula921/etc/bconsole.conf /usr/local/bacula921/etc/bconsole # чтобы запускать консоль не с правами root
  50. настроить /usr/local/bacula921/etc/bconsole.conf
  51. опробовать /usr/local/bacula921/etc/bconsole
  52. вручную скопировать scripts/logwatch/logfile.bacula.conf в /usr/share/logwatch/default.conf/logfiles/bacula.conf, scripts/logwatch/services.bacula.conf в /usr/share/logwatch/default.conf/services/bacula.conf, scripts/logwatch/applybaculadate в /usr/share/logwatch/scripts/shared/applybaculadate, scripts/logwatch/bacula в /usr/share/logwatch/scripts/services/bacula
  53. chgrp bacula /usr/local/bacula921/etc/bat.conf /usr/local/bacula921/sbin/bat
  54. опробовать /usr/local/bacula921/sbin/bat
  55. накатил заплатку src/stored/askdir.c (Fix bugs #2335 and #2349 Volume messages printed many times)
  56. создать ключи и сертификаты TLS, в т.ч. открытый ключ /usr/local/bacula921/etc/имя-хоста.open.key
  57. chown baculad:bacula /usr/local/bacula921/etc/имя-хоста.open.key
  58. chmod 440 /usr/local/bacula921/etc/имя-хоста.open.key
  59. задать пароль внутри /usr/libexec/bacula/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  60. bat?
  61. мониторинг (шаблоны bacula-sd, bacula-dir в zabbix)
  62. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  63. ? проверить, что восстановленная БД работает

Установка 5.2.13 на CentOS 7.4 x86-64 (клиент) из пакетов

Процесс установки

  1. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  2. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  3. обеспечить доступ к серверу хранения (порт 9103)
  4. установка пакетов bacula-client, bacula-common, bacula-libs
  5. добавить в tray-monitor.conf новую секцию Client и перезапустить монитор
  6. добавить в bacula-sd.conf новые секции и перезапустить сервер хранения
  7. добавить в bacula-dir.conf новые секции Job и Client (и всё что они тянут: FileSet, Schedule, Storage, Pool) и перезапустить директор (reload в консоли)
  8. отредактировать настройки /etc/bacula/bacula-fd.conf (имя директора и пароль; имя монитора и пароль; имя клиента)
  9. systemctl start bacula-fd
  10. попробовать запустить задание вручную из консоли (run)
  11. systemctl enable bacula-fd

Установка 5.2.13 на CentOS 7.1 x86-64 (директор, хранитель, текстовая консоль и клиент) из пакетов

Предварительно необходимо установить и настроить MySQL (5.5.41 из пакетов, включая пакеты mysql, mysql-server и mysql-devel)

Процесс установки (без графики):

  1. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  2. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  3. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  4. установка пакетов bacula-client, bacula-common, bacula-libs, bacula-console, bacula-director, bacula-libs-sql, bacula-storage
  5. alternatives --config libbaccats.so # поменять на mysql
  6. cd /usr/libexec/bacula
  7. sed -i -e 's/default_db_type=postgresql/default_db_type=mysql/g' *
  8. пользователи baculas и baculad и группа bacula с нужными идентификаторами
  9. права доступа к файловому хранилищу (при необходимости создать или передать со старого сервера)
  10. перенос файлов с томами с предыдущего сервера (тоже версия 5.2)
  11. chown baculad:bacula {/var/spool/bacula,/var/log/bacula}
  12. chmod g+w {/var/spool/bacula,/var/log/bacula}
  13. chmod go+rx /usr/libexec/bacula/grant_mysql_privileges
  14. запустить "/usr/libexec/bacula/grant_mysql_privileges -p" под обычным пользователем (даёт права к bacula.* пользователю bacula без пароля, так что пароль надо устанавливать самому:
    mysql -u root -p
    SELECT Host, User FROM mysql.user;
    SET PASSWORD FOR 'bacula'@'localhost' = PASSWORD('пароль');
    SET PASSWORD FOR 'bacula'@'%' = PASSWORD('пароль');
    SELECT * FROM mysql.user;
    удалить ~/.mysql_history
    
  15. установить пароль в /etc/bacula/bacula-dir.conf
  16. журнал
  17. chmod go+rx /usr/libexec/bacula/create_mysql_database
  18. запустить "/usr/libexec/bacula/create_mysql_database -u bacula -p" под обычным пользователем
  19. chmod go+rx /usr/libexec/bacula//make_mysql_tables (update_mysql_tables, drop_mysql_tables)
  20. сделать копию БД bacula на старом сервере "mysqldump -f --opt bacula --add-drop-table --add-locks --disable-keys --user=bacula -p > имя.sql"
  21. удалить "ENGINE=MyISAM" ("sed -i 's/ENGINE=MyISAM/ENGINE=InnoDB/' имя.sql")
  22. загрузить её на новом сервере: "mysql --user=bacula bacula -p < имя.sql" (XtraDB Compact заняло в 1.47 раза больше места, чем Aria; время загрузки базы Aria вдвое меньше; время запуска большого задания одинаково; требования к памяти в несколько раз меньше для Aria)
  23. перенести и отредактировать настройки bacula-sd.conf, bacula-fd.conf, bacula-dir.conf
  24. создать ключи и сертификаты TLS
  25. chgrp bacula /etc/bacula/x134.cs.niisi.ras.ru.open.key
  26. chmod g+r /etc/bacula/x134.cs.niisi.ras.ru.open.key
  27. исправить пользователя и группу в /etc/sysconfig/bacula-sd, systemctl start bacula-sd, протестировать, systemctl enable bacula-sd
  28. исправить пользователя в /etc/sysconfig/bacula-dir, systemctl start bacula-dir, протестировать, systemctl enable bacula-dir
  29. systemctl start bacula-fd, протестировать, systemctl enable bacula-fd
  30. права доступа к /etc/bacula/bconsole.conf, чтобы запускать консоль не с правами root
  31. опробовать bconsole
  32. права чтения к bacula-dir.conf для baculad, иначе не будет работать команда reload
  33. задать пароль внутри /usr/libexec/bacula/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  34. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  35. ? проверить, что восстановленная БД работает

Установка 5.2.13 на CentOS 6.4 x86-64 (директор, хранитель, текстовая консоль и клиент)

Предварительно необходимо установить и настроить MySQL (5.1.61 из пакетов, включая пакеты mysql, mysql-server и mysql-devel), libtermcap-devel, readline-devel, zlib-devel, lzo-devel, openssl-devel, krb5-devel, libacl, libacl-devel, libattr, libattr-devel, python-devel, tcp_wrappers-devel.

Процесс установки (без графики):

  1. развернуть
  2. [make distclean]
  3. ./configure --prefix=/usr/local/bacula52 --mandir=/usr/local/bacula52/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --enable-batch-insert --with-python --with-sd-user=baculas --with-sd-group=bacula --with-mysql --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula52/var --enable-lockmgr --disable-conio --enable-readline
  4. make -j8
  5. добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow
  6. [остановить предыдущую версию]
  7. make install
  8. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  9. добавить " -p" в etc/grant_mysql_privileges
  10. обеспечение доступа к MySQL при первой установке
  11. журнал
  12. права доступа к файловому хранилищу (при необходимости создать или передать со старого сервера)
  13. перенести настройки в etc/bacula-sd.conf, etc/bacula-fd.conf, etc/bacula-dir.conf
  14. make install-autostart
  15. service bacula-sd start, протестировать
  16. service bacula-fd start, протестировать
  17. service bacula-dir start, протестировать
  18. права доступа к /usr/local/bacula52/etc/bconsole.conf, /usr/local/bacula52/sbin/bconsole и /usr/local/bacula52/etc/bconsole, чтобы запускать консоль не с правами root
  19. настроить /usr/local/bacula52/etc/bconsole.conf
  20. опробовать /usr/local/bacula52/etc/bconsole
  21. вручную скопировать scripts/logwatch/logfile.bacula.conf в /usr/share/logwatch/default.conf/logfiles/bacula.conf, scripts/logwatch/services.bacula.conf в /usr/share/logwatch/default.conf/services/bacula.conf, scripts/logwatch/applybaculadate в /usr/share/logwatch/scripts/shared/applybaculadate, scripts/logwatch/bacula в /usr/share/logwatch/scripts/services/services.bacula
  22. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  23. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  24. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  25. права чтения к bacula-dir.conf для группы bacula, иначе не будет работать команда reload
  26. задать пароль внутри /usr/local/bacula52/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  27. мониторинг (шаблоны bacula-sd, bacula-dir в zabbix)
  28. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  29. ? проверить, что восстановленная БД работает

Обновление с 5.0.3 до 5.2.6 на CentOS 5.7 x86-64 ([директор,] хранитель, текстовая консоль и клиент)

Предварительно необходимо установить и настроить MySQL (5.0.77 из пакетов, включая пакеты mysql, mysql-server и mysql-devel), libtermcap-devel, readline-devel, zlib-devel, lzo-devel, openssl-devel, krb5-devel, libacl, libacl-devel, libattr, libattr-devel, python-devel.

Процесс установки (без графики [и без bacula-dir]):

  1. развернуть
  2. make distclean
  3. ./configure --prefix=/usr/local/bacula52 --mandir=/usr/local/bacula52/man --with-tcp-wrappers --with-openssl --enable-smartalloc [--with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --enable-batch-insert --with-python] --with-sd-user=baculas --with-sd-group=bacula --with-mysql --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula52/var --enable-lockmgr --disable-conio --enable-readline [--disable-build-dird]
  4. make [-j6]
  5. [добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow]
  6. остановить предыдущую версию
  7. сохранить старый каталог (см. make_catalog_backup)
  8. make install
  9. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  10. добавить " -p" в etc/grant_mysql_privileges
  11. обеспечение доступа к MySQL при первой установке
  12. журнал
  13. права доступа к файловому хранилищу (при необходимости создать или передать со старого сервера)
  14. перенести настройки в etc/bacula-sd.conf, etc/bacula-fd.conf, etc/bacula-dir.conf
  15. make install-autostart
  16. service bacula-sd start, протестировать
  17. service bacula-fd start, протестировать
  18. service bacula-dir start, протестировать
  19. права доступа к /usr/local/bacula52/etc/bconsole.conf, /usr/local/bacula52/sbin/bconsole и /usr/local/bacula52/etc/bconsole, чтобы запускать консоль не с правами root
  20. опробовать /usr/local/bacula52/etc/bconsole
  21. вручную скопировать scripts/logwatch/logfile.bacula.conf в /usr/share/logwatch/default.conf/logfiles/bacula.conf, scripts/logwatch/services.bacula.conf в /usr/share/logwatch/default.conf/services/bacula.conf, scripts/logwatch/applybaculadate в /usr/share/logwatch/scripts/shared/applybaculadate, scripts/logwatch/bacula в /usr/share/logwatch/scripts/services/services.bacula
  22. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  23. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  24. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  25. права чтения к bacula-dir.conf для baculad, иначе не будет работать команда reload
  26. задать пароль внутри /usr/local/bacula52/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  27. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  28. ? проверить, что восстановленная БД работает

Обновление с 3.0.1 до 5.0.1/5.0.3 на CentOS 5.4 x86-64 ([директор,] хранитель, текстовая консоль и клиент)

Предварительно необходимо установить и настроить MySQL (5.0.77 из пакетов, включая пакеты mysql, mysql-server и mysql-devel), libtermcap-devel, readline-devel, zlib-devel, openssl-devel, krb5-devel, libacl, libacl-devel, libattr, libattr-devel, python-devel.

Обнаружил, что при резервном копировании наборов файлов большого размера MySQL мешает записи на диск своей работой с временными таблицами. Попробовать tmp_table_size=1024M или tmpdir=/dev/shm или tmpdir=файловая-система-на-SSD.

Процесс установки (без графики [и без bacula-dir]):

  1. развернуть
  2. make distclean
  3. ./configure --prefix=/usr/local/bacula5 --mandir=/usr/local/bacula5/man --with-tcp-wrappers --with-openssl --enable-smartalloc [--with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --enable-batch-insert --with-python] --with-sd-user=baculas --with-sd-group=bacula --with-mysql[=/usr/local/mysql] --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula5/var --enable-lockmgr --disable-conio --enable-readline [--disable-build-dird]
  4. make [-j6]
  5. добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow
  6. остановить предыдущую версию
  7. сохранить старый каталог (make_catalog_backup)
  8. make install
  9. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  10. добавить " -p" в etc/grant_mysql_privileges
  11. обеспечение доступа к MySQL при первой установке
  12. журнал
  13. права доступа к файловому хранилищу (при необходимости создать или передать со старого сервера)
  14. перенести настройки в etc/bacula-sd.conf, etc/bacula-fd.conf, etc/bacula-dir.conf
  15. make install-autostart
  16. service bacula-sd start, протестировать
  17. service bacula-fd start, протестировать
  18. service bacula-dir start, протестировать
  19. права доступа к /usr/local/bacula5/etc/bconsole.conf, /usr/local/bacula5/sbin/bconsole и /usr/local/bacula5/etc/bconsole, чтобы запускать консоль не с правами root
  20. опробовать /usr/local/bacula5/etc/bconsole
  21. вручную скопировать scripts/logwatch/logfile.bacula.conf в /usr/share/logwatch/default.conf/logfiles/bacula.conf, scripts/logwatch/services.bacula.conf в /usr/share/logwatch/default.conf/services/bacula.conf, scripts/logwatch/applybaculadate в /usr/share/logwatch/scripts/shared/applybaculadate, scripts/logwatch/bacula в /usr/share/logwatch/scripts/services/services.bacula
  22. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  23. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  24. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  25. права чтения к bacula-dir.conf для baculad, иначе не будет работать команда reload
  26. задать пароль внутри /usr/local/bacula5/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  27. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  28. ? проверить, что восстановленная БД работает

Установка 3.0.1 на RHEL 4.7 x86-64 (директор, хранитель, текстовая консоль и клиент)

Предварительно необходимо установить и настроить MySQL (4.1.22 из пакетов, включая пакеты mysql, mysql-server и mysql-devel), libtermcap-devel, readline-devel, zlib-devel, openssl-devel, krb5-devel, libacl, libacl-devel, libattr, libattr-devel, python-devel.

Процесс установки (без графики, bacula-conio забивает readline):

  1. развернуть
  2. make distclean
  3. ./configure --prefix=/usr/local/bacula --mandir=/usr/local/bacula/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --with-sd-user=baculas --with-sd-group=bacula --with-mysql[=/usr/local/mysql] --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula/var --enable-batch-insert --with-python --enable-lockmgr [--with-readline]
  4. make [-j3]
  5. добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow
  6. остановить предыдущую версию
  7. make install
  8. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  9. добавить " -p" в etc/grant_mysql_privileges
  10. обеспечение доступа к MySQL при первой установке
  11. права доступа к файлам
  12. журнал
  13. scripts/bacula start, протестировать (или по очереди: bacula-ctl-sd, bacula-ctl-fd, bacula-ctl-dir)
  14. права доступа к /usr/local/bacula/etc/bconsole.conf, /usr/local/bacula/sbin/bconsole и /usr/local/bacula/etc/bconsole, чтобы запускать консоль не с правами root
  15. опробовать /usr/local/bacula/etc/bconsole
  16. make install-autostart
  17. [убедиться, что MySQL запускается до bacula-dir (убрать блок INIT INFO из init.d/mysqld)]
  18. в предположении, что настроен logwatch, зайти в scripts/logwatch и сделать "make install"; исправить /etc/log.d/conf/logfiles/bacula.conf
  19. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  20. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  21. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  22. права чтения к bacula-dir.conf для baculad, иначе не будет работать команда reload
  23. ? задать пароль внутри /usr/local/bacula/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  24. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  25. ? проверить, что восстановленная БД работает

Установка 2.2.4/2.2.7/2.2.8/2.4.1/2.4.4 на CentOS 5.0/5.2 x86/x86-64 (директор, хранитель, текстовая консоль и клиент)

Предварительно необходимо установить и настроить MySQL (5.0.22/5.0.45 из пакетов, включая пакеты mysql, mysql-server и mysql-devel), libtermcap-devel, readline-devel, zlib-devel, openssl-devel, krb5-devel, libacl, libacl-devel, libattr, libattr-devel, python-devel.

Процесс установки (без графики, bacula-conio забивает readline):

  1. развернуть
  2. make distclean
  3. ./configure --prefix=/usr/local/bacula --mandir=/usr/local/bacula/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --with-sd-user=baculas --with-sd-group=bacula --with-mysql[=/usr/local/mysql] --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula/var --enable-batch-insert --with-python
  4. make [-j3]
  5. добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow
  6. остановить предыдущую версию
  7. make install
  8. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  9. добавить " -p" в etc/grant_mysql_privileges
  10. обеспечение доступа к MySQL при первой установке
  11. права доступа к файлам
  12. журнал
  13. scripts/bacula start, протестировать (или по очереди: bacula-ctl-sd, bacula-ctl-fd, bacula-ctl-dir)
  14. права доступа к /usr/local/bacula/etc/bconsole.conf, /usr/local/bacula/sbin/bconsole и /usr/local/bacula/etc/bconsole, чтобы запускать консоль не с правами root
  15. опробовать /usr/local/bacula/etc/bconsole
  16. make install-autostart
  17. убедиться, что MySQL запускается до bacula-dir (убрать блок INIT INFO из init.d/mysqld)
  18. в предположении, что настроен logwatch, зайти в scripts/logwatch и сделать "make install"; исправить /etc/log.d/conf/logfiles/bacula.conf (не работает; вручную занести в /usr/share/logwatch/default.conf/logfiles/bacula.conf, /usr/share/logwatch/default.conf/services/bacula.conf)
  19. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  20. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  21. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  22. права чтения к bacula-dir.conf для baculad, иначе не будет работать команда reload
  23. ? задать пароль внутри /usr/local/bacula/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  24. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  25. ? проверить, что восстановленная БД работает

Обновление с 1.38.11 до 2.2.5/2.4.1 на CentOS 4.5/4.6 x86/x86-64 (директор, хранитель, текстовая консоль и клиент)

Предварительно необходимо установить и настроить MySQL (4.1.18/4.1.16 из исходных текстов), libtermcap-devel, readline-devel, zlib-devel, openssl-devel, krb5-devel, libacl, libacl-devel, libattr, libattr-devel, python-devel.

Процесс установки (без графики, bacula-conio забивает readline):

  1. развернуть
  2. make distclean
  3. ./configure --prefix=/usr/local/bacula2 --mandir=/usr/local/bacula2/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-db-name=bacula2 --with-dir-user=baculad --with-dir-group=bacula --with-sd-user=baculas --with-sd-group=bacula --with-mysql[=/usr/local/mysql] --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula2/var --enable-batch-insert --with-python [--disable-ipv6]
  4. make [-j3]
  5. bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow остались от предыдущей версии
  6. остановить предыдущую версию (нельзя запускать одновременно)
  7. make install
  8. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  9. добавить " -p" в etc/grant_mysql_privileges
  10. обеспечение прав доступа к скриптам работы с MySQL:
    chmod go+x /usr/local/bacula2/etc/grant_mysql_privileges
    chmod go+x /usr/local/bacula2/etc/create_mysql_database
    chmod go+x /usr/local/bacula2/etc/make_mysql_tables
  11. создание новой БД или преобразование старой
  12. права доступа к файлам
  13. работа с журналами проделана ранее
  14. logwatch настроен ранее
  15. скопировать конфигурационные файлы
  16. права чтения к bacula-dir.conf для bacula, иначе не будет работать команда reload
  17. изменить имя БД в bacula-dir.conf
  18. удалить директивы "Accept Any Volume" из bacula-dir.conf
  19. добавить "Ignore Case = yes" в описания опций файловых систем MS Windows в bacula-dir.conf
  20. временно вставить "Block Positioning = no" в разделы Device bacula-sd.conf
  21. поменять WorkingDirectory, QueryFile, RunBeforeJob, RunAfterJob, Write Bootstrap во всех .conf
  22. сетевой экран настроен ранее
  23. скопировать .bsr, .msgcon, .state (?) на новое место (с правами доступа)
  24. scripts/bacula start, протестировать (или по очереди: bacula-ctl-sd, bacula-ctl-fd, bacula-ctl-dir)
  25. права доступа к /usr/local/bacula2/etc/bconsole.conf, /usr/local/bacula2/sbin/bconsole и /usr/local/bacula2/etc/bconsole, чтобы запускать консоль не с правами root
  26. опробовать /usr/local/bacula2/etc/bconsole, доступны ли старые клиенты, читаются ли старые тома
  27. продолжение записи на том не работает (не совпадает размер тома в каталоге и в реальности), но данные с такого тома восстанавливаются
  28. make install-autostart
  29. убедиться, что MySQL запускается до bacula-dir (убрать блок INIT INFO из init.d/mysql)
  30. после истечения времени хранения всех старых томов убрать "Block Positioning = no"
  31. ? задать пароль внутри /usr/local/bacula/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  32. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  33. ? проверить, что восстановленная БД работает

Установка 2.0.3 на CentOS 5.0 x86-64 (директор, хранитель, текстовая консоль и клиент)

Предварительно необходимо установить MySQL (5.0.22) (из пакетов), libtermcap-devel, readline-devel, zlib-devel, openssl-devel, krb5-devel, mysql-devel, libacl, libacl-devel, libattr, libattr-devel.

Процесс установки:

  1. развернуть
  2. make distclean
  3. совместить статическую сборку (--enable-static-tools --enable-static-fd --enable-static-sd --enable-static-dir --enable-static-cons) и openssl в понимании RH не удалось (LDFLAG="-lkrb5" не помогает; CPPFLAGS=-I/usr/kerberos/include не помогает); make static-bacula-fd в src/filed выдаёт те же ошибки (установка nptl-devel не помогает)
  4. ./configure --prefix=/usr/local/bacula --mandir=/usr/local/bacula/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --with-sd-user=baculas --with-sd-group=bacula --with-mysql[=/usr/local/mysql] --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula/var
  5. make [-j3]
  6. добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow
  7. make install
  8. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  9. добавить " -p" в etc/grant_mysql_privileges
  10. обеспечение доступа к MySQL
  11. права доступа к файлам
  12. журнал
  13. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  14. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  15. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  16. scripts/bacula start, протестировать
  17. права доступа к /usr/local/bacula/etc/bconsole.conf, /usr/local/bacula/sbin/bconsole и /usr/local/bacula/etc/bconsole, чтобы запускать консоль не с правами root
  18. опробовать /usr/local/bacula/etc/bconsole
  19. make install-autostart
  20. убедиться, что MySQL запускается до bacula-dir (убрать блок INIT INFO из init.d/mysql)
  21. в предположении, что настроен logwatch, зайти в scripts/logwatch и сделать "make install"; исправить /etc/log.d/conf/logfiles/bacula.conf
  22. задать пароль внутри /usr/local/bacula/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  23. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  24. ? проверить, что восстановленная БД работает

Установка 1.38.4 на CentOS 4.2 и 1.38.11 на CentOS 4.3 (директор, хранитель, консоль и клиент)

Предварительно необходимо установить MySQL

Процесс установки:

  1. развернуть
  2. make distclean
  3. совместить статическую сборку (--enable-static-tools --enable-static-fd --enable-static-sd --enable-static-dir --enable-static-cons) и openssl в понимании RH не удалось (LDFLAG="-lkrb5" не помогает; CPPFLAGS=-I/usr/kerberos/include не помогает); make static-bacula-fd в src/filed выдаёт те же ошибки (установка nptl-devel не помогает)
  4. LDFLAGS="-lssl -lcrypto" ./configure --prefix=/usr/local/bacula --mandir=/usr/local/bacula/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-dir-user=baculad --with-dir-group=bacula --with-sd-user=baculas --with-sd-group=bacula --with-mysql=/usr/local/mysql --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula/var
  5. make [-j3]
  6. добавление bacula в /etc/group, baculad и baculas в /etc/passwd и /etc/shadow
  7. make install
  8. добавить " -p" в MYSQLPASSWORD= в etc/make_catalog_backup
  9. добавить " -p" в etc/grant_mysql_privileges
  10. обеспечение доступа к MySQL
  11. права доступа к файлам
  12. журнал
  13. scripts/bacula start, проверить
  14. права доступа к /usr/local/bacula/etc/bconsole.conf, /usr/local/bacula/sbin/bconsole и /usr/local/bacula/etc/bconsole, чтобы запускать консоль не с правами root
  15. опробовать /usr/local/bacula/etc/bconsole
  16. make install-autostart
  17. в предположении, что настроен logwatch, зайти в scripts/logwatch, поменять в Makefile /etc/log.d на /usr/share/logwatch, conf на default.conf и сделать "make install"; исправить /usr/share/logwatch/default.conf/logfiles/bacula.conf
  18. создать подкаталоги в хранилище, настроить и перезапустить сервер хранения
  19. настроить и перезапустить клиента на этом компьютере
  20. права чтения к bacula-dir.conf для baculad, иначе не будет работать команда reload
  21. настроить и перезапустить директора (пока отключить всех клиентов, кроме себя)
  22. протестировать полный backup этого компьютера (команда run, но поменять пул)
  23. обеспечить доступ директора на порт 9102 к компьютерам, на которых установлены клиенты
  24. обеспечить доступ директора на порт 9103 к компьютерам, на которых установлены серверы хранения
  25. обеспечить доступ с компьютеров, на которых установлены консоли и мониторы к порту 9101
  26. обеспечить доступ с компьютеров, на которых установлены клиенты к порту 9103
  27. задать пароль внутри /usr/local/bacula/etc/make_catalog_backup (лучше через --defaults-file=); обеспечить правильные права доступа к этому файлу
  28. ?обеспечить внешними средствами (например, вторым директором и сервером хранения) создание текстовой версии БД и её резервирования
  29. ? проверить, что восстановленная БД работает

Установка 2.2.4/2.2.7/2.2.8/2.4.1/3.0.1/5.0.1 на FC6/F10 (клиент, консоли и bat)

Процесс установки (доставить пакеты gcc, gcc-c++, openssl-devel, libtermcap-devel, libacl, libacl-devel, libattr, libattr-devel, zlib, zlib-devel, tcp_wrappers-devel, e2fsprogs-devel, krb5-devel, [qt4], [qt4-devel], qwt, qwt-devel, [qt4-x11], [wxGTK, wxGTK-devel]; в Fedora 10 qt4 вернули в qt):

  1. развернуть
  2. make distclean
  3. PATH=/usr/lib64/qt4/bin:... [QTDIR=/usr/lib64/qt4] ./configure --enable-client-only --disable-build-dird --disable-build-stored --prefix=/usr/local/bacula --mandir=/usr/local/bacula/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula/var [--enable-gnome] --enable-bat [--enable-bwx-console] --enable-tray-monitor --enable-lockmgr [--disable-conio --enable-readline]
  4. make
  5. остановить старую версию
  6. make install
  7. до версии 3 ручками скопировать src/qt-console/bat в /usr/local/bacula/sbin/
  8. в версии 3 ручками скопировать src/qt-console/.libs/bat в /usr/local/bacula/sbin/
  9. дырка на порт 9101 компьютера с директором
  10. настроить /usr/local/bacula/etc/bconsole.conf
  11. права доступа к /usr/local/bacula/etc/bconsole.conf, /usr/local/bacula/sbin/bconsole и /usr/local/bacula/etc/bconsole, чтобы запускать консоль не с правами root
  12. опробовать /usr/local/bacula/etc/bconsole
  13. [настроить графическую консоль под GTK]:
    1. отредактировать /usr/local/bacula/etc/bgnome-console.conf (имя директора и пароль)
    2. права к /usr/local/bacula/sbin/bgnome-console, /usr/local/bacula/etc/gconsole, /usr/local/bacula/etc/bgnome-console.conf
    3. запуск: /usr/local/bacula/etc/gconsole (та же bconsole, только выбор файлов в графике, падает)
  14. [настроить графическую консоль под wx]:
    1. отредактировать /usr/local/bacula/etc/bwx-console.conf (имя директора и пароль)
    2. права к /usr/local/bacula/sbin/bwx-console, /usr/local/bacula/etc/bwx-console.conf
    3. запуск: /usr/local/bacula/sbin/bwx-console -c /usr/local/bacula/etc/bwx-console.conf (та же bconsole, только выбор файлов в графике, падает)
  15. настроить графическую консоль под qt (bat, 14MB):
    1. отредактировать /usr/local/bacula/etc/bat.conf (имя директора и пароль)
    2. права к /usr/local/bacula/sbin/bat, /usr/local/bacula/etc/bat.conf
    3. запуск: /usr/local/bacula/sbin/bat -c /usr/local/bacula/etc/bat.conf
  16. [настроить монитор (на FC6 падает сам и тащит за собой панель извещения)]
    1. отредактировать /usr/local/bacula/etc/tray-monitor.conf (имя монитора; имя, адрес и ограниченный пароль Storage; имя, адрес и ограниченный пароль Client; имя, адрес и ограниченный пароль Director в раздел Monitor)
    2. дырка на порт 9101 компьютера с директором
    3. дырка на порт 9102 компьютера с клиентом
    4. дырка на порт 9103 компьютера с Storage
    5. права к /usr/local/bacula/etc/tray-monitor.conf, /usr/local/bacula/sbin/bacula-tray-monitor
    6. запуск: /usr/local/bacula/sbin/bacula-tray-monitor -c /usr/local/bacula/etc/tray-monitor.conf (в F10 версия 5.0.1 падает: "tray-monitor: lockmgr.c:892 ASSERT failed at lockmgr.c:892: lmgr_is_active()"
  17. настроить клиента
    1. отредактировать /usr/local/bacula/etc/bacula-fd.conf (имя директора и пароль; имя монитора и пароль; имя директора в секции сообщений)
    2. дырка на входной порт 9102
    3. обеспечить доступ к серверу хранения (порт 9103)
    4. make install-autostart-fd
    5. [добавить "export LANG=" в /etc/rc.d/init.d/bacula-fd, если система русифицирована]
    6. service bacula-fd start (для первого раза, запуск при загрузке обеспечивается)
    7. добавить в bacula-dir.conf новые секции Job и Client (FileSet)
    8. тестирование

Установка 1.38.4 на FC3 (gnome консоль, монитор и клиент)

Процесс установки (доставить wxGTK-devel):

  1. развернуть
  2. make distclean
  3. ./configure ... --enable-gnome --enable-tray-monitor --enable-wx-console --disable-build-dird --disable-build-stored
  4. make
  5. make install (ставится всё то же самое, кроме /usr/local/bacula/etc/: bacula-dir.conf, bacula-sd.conf, query.sql; кроме /usr/local/bacula/sbin/: bacula-dir, bacula-sd, bls, bextract, bcopy, bscan, btape, dbcheck; дополнительно: /usr/local/bacula/sbin/gnome-console, /usr/local/bacula/etc/gnome-console.conf, /usr/local/bacula/sbin/bacula-tray-monitor, /usr/local/bacula/etc/tray-monitor.conf)
  6. настроить графическую консоль
    1. отредактировать /usr/local/bacula/etc/gnome-console.conf (имя директора и пароль)
    2. права к /usr/local/bacula/sbin/gnome-console, /usr/local/bacula/etc/gconsole, /usr/local/bacula/etc/gnome-console.conf
    3. дырка на порт 9101 компьютера с директором
    4. запуск: /usr/local/bacula/etc/gconsole (та же bconsole, только выбор файлов в графике)
  7. настроить монитор (на FC6 падает сам и тащит за собой панель извещения)
    1. отредактировать /usr/local/bacula/etc/tray-monitor.conf (имя монитора; имя, адрес и ограниченный пароль Storage; имя, адрес и ограниченный пароль Client; имя, адрес и ограниченный пароль Director в раздел Monitor)
    2. дырка на порт 9101 компьютера с директором
    3. дырка на порт 9102 компьютера с клиентом
    4. дырка на порт 9103 компьютера с Storage
    5. права к /usr/local/bacula/etc/tray-monitor.conf, /usr/local/bacula/sbin/bacula-tray-monitor
    6. запуск: /usr/local/bacula/sbin/bacula-tray-monitor -c /usr/local/bacula/etc/tray-monitor.conf
  8. настроить клиента
    1. отредактировать /usr/local/bacula/etc/bacula-fd.conf (имя директора и пароль; имя монитора и пароль; имя директора в секции сообщений)
    2. дырка на входной порт 9102
    3. обеспечить доступ к серверу хранения (порт 9103)
    4. make install-autostart-fd
    5. добавить "export LANG=" в /etc/rc.d/init.d/bacula-fd, если система русифицирована
    6. service bacula-fd start (для первого раза, запуск при загрузке обеспечивается)
    7. добавить в bacula-dir.conf новые секции Job и Client (FileSet)
    8. scripts/bacula start

Установка клиента 2.0.3/2.2.4/2.2.5/2.2.7/2.2.8/2.4.1/3.0.1/3.0.3/5.0.1/5.0.3/5.2.6/5.2.13 на F10, F8, SL-61, CentOS/RHEL 5.0/5.1/5.2/5.3/5.4/5.5/6.2/6.4/6.6 (x86 и x86-64), FC6, CentOS/RHEL 4.1/4.4/4.6/4.7, FC5, RH8, Solaris 8 (gcc 2.95)

Процесс установки (bconsole собирается в любом случае) из .tar.gz:

  1. развернуть (а также gcc, gcc-c++, openssl-devel, libtermcap-devel (ncurses-devel в Sl-61/CentOS6), libacl, libacl-devel, libattr, libattr-devel, zlib, zlib-devel, lzo, lzo-devel, e2fsprogs-devel, krb5-devel; для Fedora 8 требуются tcp_wrappers-devel, libtermcap и libtermcap-devel из Everything); для Solaris использовать gtar, gmake (ссылка на него с make) и добавить /usr/ccs/bin в PATH
  2. make distclean
  3. для RH8 необходимо опустить --with-tcp-wrappers и --with-openssl
  4. для CentOS 4.1 или Solaris 8 и версии 3 необходимо отказаться от libtool (--disable-libtool)
  5. для Solaris 8: --disable-acl (не компилируется acl.c) и --without-openssl (не собирается консоль)
  6. ./configure --enable-client-only --disable-build-dird --disable-build-stored --prefix=/usr/local/bacula --mandir=/usr/local/bacula/man [--with-tcp-wrappers] [--with-openssl] --enable-smartalloc --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula/var
  7. make [-j 3]
  8. service bacula-fd stop (остановить предыдущую версию)
  9. make install
  10. отредактировать /usr/local/bacula/etc/bacula-fd.conf (имя директора и пароль; имя монитора и пароль; имя директора в секции сообщений)
  11. дырка на входной порт 9102
  12. обеспечить доступ к серверу хранения (порт 9103)
  13. make install-autostart-fd
  14. [добавить "export LANG=" в /etc/rc.d/init.d/bacula-fd, если система русифицирована]
  15. service bacula-fd start (для первого раза, запуск при загрузке обеспечивается; для Solaris: /etc/init.d/bacula-fd start (позаботиться, чтобы /usr/local/lib был в LD_LIBRARY_PATH))
  16. добавить в tray-monitor.conf новую секцию Client и перезапустить монитор
  17. добавить в bacula-sd.conf новые секции и перезапустить сервер хранения
  18. добавить в bacula-dir.conf новые секции Job и Client (FileSet) и перезапустить директор (reload в консоли)
  19. попробовать запустить задание вручную из консоли (run)

Имеются спецификации для изготовления rpm.

Установка клиента 1.38.4 на CentOS 4.2, FC4, FC3, RH9, RH 5.2, RH 4.2; установка 1.38.10 на FC5; 1.38.11 на CentOS 4.3, FC6

Процесс установки (bconsole собирается в любом случае):

  1. развернуть (а также gcc, gcc-c++, openssl-devel, libtermcap-devel, libacl-devel)
  2. make distclean
  3. LDFLAGS="-lssl -lcrypto" ./configure --enable-client-only --disable-build-dird --disable-build-stored --prefix=/usr/local/bacula --mandir=/usr/local/bacula/man --with-tcp-wrappers --with-openssl --enable-smartalloc --with-job-email=адрес --with-smtp-host=сервер --with-subsys-dir=/var/lock/subsys --with-working-dir=/usr/local/bacula/var
  4. для FC6 необходимо заменить в src/console/console.c переменную tee (пересекается с /usr/include/bits/fcntl.h)
  5. для RH9 надо добавить CPPFLAGS=-I/usr/kerberos/include
  6. для RH5.2 надо установить egcs-c++, добавить CPPFLAGS=-I/usr/local/ssl/include и к LDFLAGS строку "-L/usr/local/ssl/lib"; не компилируется; попытка всюду убрать -O2 не помогла: не нравится New(IPADDR(AF_INET)) в bnet.c, jcr.c; удалось установить только версию 1.34.6 (более новые не компилируются): нет SSL, нет команды .status (монитор ругается, но работает некоторое время), запускать приходится с ключом "-s"; не работают Incremental, Differential типы сохранения
  7. в RH 4.2 нет egcs; нужен gcc, gcc-c++, linuxthreads-0.5-1.i386.rpm и linuxthreads-devel-0.5-1.i386.rpm; после доработки напильником запускается версия 1.34.6 (см. выше): добавить в src/config.h определение key_t; местная версия zlib не имеет compress2 (src/filed/backup.c), так что установить уровень сжатия не удастся
  8. make
  9. make install
  10. отредактировать /usr/local/bacula/etc/bacula-fd.conf (имя директора и пароль; имя монитора и пароль; имя директора в секции сообщений)
  11. дырка на входной порт 9102
  12. обеспечить доступ к серверу хранения (порт 9103)
  13. make install-autostart-fd
  14. добавить "export LANG=" в /etc/rc.d/init.d/bacula-fd, если система русифицирована
  15. service bacula-fd start (для первого раза, запуск при загрузке обеспечивается)
  16. добавить в tray-monitor.conf новую секцию Client и перезапустить монитор
  17. добавить в bacula-dir.conf новые секции Job и Client (FileSet) и перезапустить директор (reload в консоли)
  18. попробовать запустить задание вручную из консоли (run)

Имеются спецификации для изготовления rpm.

Установка 1.38.4 на Windows 2003 (только клиент и консоль из .exe)

Процесс установки клиента:

  1. установка должна производиться с правами администратора/администратора домена (устанавливается как сервис)
  2. выбрать компоненты (клиент, документация, консоль, wx-консоль)
  3. указать каталог для установки (c:\bacula)
  4. отредактировать bacula-fd.conf (имя и пароль директора и монитора; кстати, директива Monitor в версии 1.38.4 не распознаётся; имя директора в ресурсе Messages)
  5. установить как системный сервис, т.е. будет запускаться при старте ОС
  6. дырка на входной порт 9102 (netsh firewall ...)
  7. обеспечить доступ к серверу хранения (порт 9103)
  8. для первого раза запустить из панели управления (администрирование -> службы)
  9. netstat -an (должен прослушиваться порт 9102)
  10. должна появиться иконка в трее (у меня не появляется, т.к. захожу через rdesktop)
  11. bacula-fd.exe /status
  12. Диспетчер задач (Ctrl-Alt-Del) должен показывать bacula-fd в списке процессов под пользователем SYSTEM (при работе в домене возможно потребуется сменить SYSTEM на идентификатор администратора домена)

Если сервис не запускается, то можно проверить синтаксис:

cd c:\bacula\bin
bacula-fd -t >out
type out

Если сервис не запускается, то можно получить трассировку в файле bacula.trace:

bacula-fd -d100 -c c:\bacula\bin\bacula-fd.conf
выполнить команду "trace on" в консоли
запустить задание и завершить работу bacula-fd

Эксклюзивно открытые файлы не сохраняются (если не включить поддержку Volume Shadow Copy Service - VSS - в XP и 2003 и в настройках FileSet; при этом файлы сохраняются на момент начала выполнения задания - делается snapshot файловой системы; нельзя выполнять несколько заданий параллельно; команда status client позволяет узнать о наличии VSS, но она может быть не запущена; реальное использование VSS указывается в отчёте о завершении задания: "VSS Backup Job...", "Generate VSS snapshots"). Полезная утилита vssadmin позволяет узнать о проблемах.

О сохранении системного реестра необходимо позаботиться отдельно (regedit /e). При отсутствии VSS рекомендуется предварительно сохранять состояние системы (systemstate.bkf надо сохранить потом с помощью bacula):

ntbackup backup systemstate /F c:\systemstate.bkf

Информация о владельцах файлов и правах доступа сохраняются, если выключён режим совместимости (portable yes). Зато файлы невозможно восстановить с помощью ОС, отличной от MS Windows NT/2K/XP/2003, пока этот режим не включить. В том числе не работают утилиты bls и bextract (заработали в версии 3.0?).

Настройка консоли:

  1. В ресурсе Director должно быть указано описание директора с произвольным паролем
  2. В ресурсе Console определяется имя консоли и пароль соответствующие настройкам директора (ресурс Console директора определяет набор ACL)

При частичном восстановлении недостающие каталоги создаются, принадлежащими пользователю SYSTEM, что может вызвать проблемы доступа (cacls).

Опции запуска:

Новая версия устанавливается в "c:\Program Files\Bacula\bin", а настройки в "c:\Documents and Settings\All Users\Application Data\Bacula".

Шифрование трафика

Для шифрования потоков (шифровать трафик между директором и сервером хранения не обязательно, т.к. они находятся на одном хосте) с помощью TLS (описание директив) необходимо (используется собственный CA, предполагается полное соответствие между IP адресами и полными именами DNS во всех участвующих узлах сети):

Перенос сохранённых данных на новое место (миграция)

В bacula имеются средства переноса данных резервного копирования на новое место (в версии 3 добавлена возможность копирования, в версии 5 добавлена возможность работать внутри одного пула, в версии 7 добавлен перенос между серверами хранения). Для этого необходимо описать и запустить (возможно из планировщика) управляющее задание типа Migrate, которое:

Ограничения и неприятности:

Использование заданий миграции для переноса части заданий на новое устройство (массив, NFS, NAS):

В связи с ограничениями (версия 3) возможностей миграции (нельзя копировать, нельзя мигрировать данные между серверами хранения) создание "противопожарной" копии пришлось делать с помощью скриптов:

Сохранение и восстановление каталога (БД)

Резервирование каталога (схема перекрёстного опыления):

Восстановление каталога при схеме перекрёстного опыления:

При наличии только одного директора восстановить что-либо обычными средствами невозможно, но можно выполнить (run) задачу RestoreFiles и поменять bootstrap файл на созданный при сохранении текстовой копии каталога (остальные параметры также необходимо установить правильно).

Если bootstrap файл пропал вместе с БД (или не был сделан), то придётся использовать утилиту bextract (bls) или узнать имя тома, идентификатор сессии и время сессии из почтовых сообщений и сделать из этой информации bootstrap файл.

Если копия БД не была сделана или её невозможно восстановить, то необходимо создать новый пустой каталог (make_bacula_tables), запустить и остановить директора (он создаёт таблицы с описанием клиентов и серверов хранения), утилитой bscan восстановить содержимое БД непосредственно из томов.

Формат bootstrap файла

Файл bootstrap (.bsr, ASCII) позволяет bacula (или bextract) узнать откуда извлекать данные при восстановлении без доступа к каталогу. Создаётся (Full) или дополняется (Incremental, Differential) автоматически при выполнении задания (имя файла задаётся директивой Write Bootstrap, для восстановления всех файлов) или командой restore (для восстановления указанных файлов). Может быть создан в текстовом редакторе из текста письма. Может быть использован в задаче восстановления ("run job=RestoreFiles"). Представляет собой текстовый файл, разбитый на строки. Каждая строка является фильтром для программы восстановления и представлена в виде "ключ=значение", ключ Volume разбивает файл на секции, различные ключи внутри секции сочетаются как AND, одинаковые как OR:

Автономные утилиты

Для каждой утилиты необходимо задать (с помощью ключа "-c") имя конфигурационного файла bacula-sd.conf и имя устройства (при архивации на ленту реальное имя устройства типа /dev/nst0; при архивации на диск - полное имя файла, при этом имя файла рассматривается как имя тома, а имя каталога должно соответствовать описанию устройства в bacula-sd.conf).

Для реально автономной работы требуется статическая сборка.

bls - получение списка файлов. Ключи:

Проверка "читаемости" архивов:

/usr/local/bacula/sbin/bls -c /usr/local/bacula/etc/bacula-sd.conf -p -j /backup/bacula/*/* > /tmp/bls.all.log

или с учётом возможности "падения" bls

for d in имена заданий
do 
  for f in $d/*
  do 
    echo $d $f
    /usr/local/bacula/sbin/bls -c /usr/local/bacula/etc/bacula-sd.conf -p -j /backup/bacula/$f >> bls.all.log
  done
done

egrep -v 'bls: End of Volume|End of all volumes|Using device:|Errors=0|acquire.c:200|Volume Record:|End Job Session Record:|Begin Job Session Record:' /tmp/bls.all.log|less

bextract - восстановление файлов на "голой" системе. Вторым параметром указывается имя каталога назначения (добавляется к именам востанавливаемых файлов; буква диска из исходных имён файлов удаляется). Не умеет восстанавливать ACL ("Error: Unknown stream=1998 ignored. This shouldn't happen!") и зашифрованные данные. Восстановление данных в непереносимом формате Win32 на UNIX/Linux платформе появилось в версии 3. Ключи:

bscan - восстановление БД по информации из тома. Если восстанавливается информация об очень старом томе, то она может быть автоматически удалена при выполнении следующего задания, как устаревшая, так что необходимо сразу же её защитить (например, изменить состояние тома командой "update volume"). Не всё понимает: "SOS_LABEL: Job record not found for JobId: 0" (RunAfter). Номера заданий создаются новые. Утилита bscan 9.2.1 восстановила неправильно и в конце упала (и это не первый раз). Перед запуском bscan на чистой базе необходимо предварительно запустить директора с правильным bacula-dir.conf, чтобы он создал записи Client и Storage (они не сохраняются в тома). Ключи:

bcopy - копирование тома. Информация в БД не заносится. Вторым параметром указывается имя устройства для записи. Ключи:

btape ключи имя-устройства - ручное управление НМЛ, с диском не работает, команды: bsf, bsr, cap, clear, eod, eom, fill, unfill, fsf, help, label, load, quit, rawfill, readlabel, rectest, rewind, scan, scanblocks, speed, status, test, weof, wr, rr, rb, qfill. Ключи:

bsmtp - вспомогательная программа, использующаяся при посылке почты.

dbcheck - проверка БД. Некоторые проверки (orphaned {File,Path,Filename}) выполняются очень (часы и сутки!) медленно и хотят дополнительных индексов и места под копии таблиц (добавление индекса, проверка, удаление индекса), ускорено в версии 3, достаточно быстро в 9.2.1 (БД на 100 млн File в пределах часа, InnoDB, SSD). "Eliminate orphaned Path records" не работает, если хоть одно задание имеет HasCache=1. После очистки желательно сделать "OPTIMIZE TABLE ...". Ключи:

Изменения

Изменения 9.2.1 относительно 9.0.8

Изменения 9.0.8 относительно 7.4.7

Изменения 7.4.7 относительно 7.0.5

Изменения 7.0.5 относительно 5.2.13

Изменения 5.2.13 (RHEL 7.1) относительно 5.2.6

Изменения 5.2.6 относительно 5.0.3

Изменения 5.0.3 относительно 5.0.2

Изменения 5.0.2 относительно 3.0.3 (номер версии 4 зарезервирован для Enterprise):

Изменения 3.0.3 относительно 3.0.1

Изменения 3.0.1 относительно 2.4.4

Изменения 2.4.4 относительно 2.4.1

Изменения 2.4.1 относительно 2.2.8

Изменения 2.2.8 относительно 2.2.6

Изменения 2.2.6 относительно 2.2.0

Изменения 2.2.0 относительно 2.0.3

Изменения 2.0.3 относительно 2.0.0

Изменения 2.0.0 относительно 1.38.11

Изменения 1.38.11 относительно 1.38.4

Ссылки

@ Карта сайта News Автора!

Bog BOS: Сетевая система резервного копирования и восстановления данных bacula

Последние изменения:
2018.08.30: sysadmin: переработана статья про syslog

TopList

Copyright © 1996-2018 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)