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

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

Последние изменения:
2015.11.18: hard: обновлена статья про ИБП и их мониторинг

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

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

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

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

Серверная часть для Linux, FreeBSD, Solaris, MS Windows (начиная с версии 2, не пробовал). Клиенты для Linux, FreeBSD, Solaris, Win32 (W98, Me, NT, 2000, XP, 2003), Win64 (Vista), MacOS X/Darwin, OpenBSD, Irix, Tru64. Система поставляется в виде исходных текстов, что позволяет адаптировать её под любую системы при наличии компилятора 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, снятие копии со снапшота, дедупликация, автоматическое распараллеливание копирования с одного клиента.

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

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

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

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

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

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

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

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

Высокая скорость (наличие каталога с информацией о местонахождении требуемого файла) и лёгкость восстановления (поиск по имени, времени). Слабая защита "от дурака" в текстовой версии. Независимость восстановления от платформы в версии 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, с небольшими исключениями), держатель Copyright - Free Software Foundation Europe, владелей торговой марки - Kern Sibbald, 200 тысяч строк кода. Требуется компилятор GNU C++ 2.95 и выше (старая версия компилировалась под gcc 2.7.2 с некоторыми ограничениями), Visual Studio для версии 1 и mingw32 для версии 2). Начальные разработчики - John Walker и Kern Sibbald (2000), передан Free Software Foundation of Europe. Создана фирма для поддержки пользователей - Bacula Systems S.A. (Kern Sibbald). Документация - более 1000 страниц. Версии: 1.38.11, 2.0.3, 2.2.8, 2.4.4, 3.0.3, 5.0.2.

Недовольные коммерциализацией и медленным развитием сделали форк - bareos (был суд), тоже не очень бурно развивается, плагины и рефакторинг, рефакторинг и плагины (версия 15.2).

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

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

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

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

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

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

Информация хранится в БД ограниченное время. Можно отдельно задать периоды хранения информации о файлах (определяется в описании клиента при настройке директора), заданиях (при удалении задания удаляется информация о связанных с ним файлах; определяется в описании клиента при настройке директора) и томах (определяется в описании пула при настройке директора). Срок хранения информации о файлах и заданиях проверяется в конце задания сохранения для данного клиента. После удаления информации о файлах из каталога можно восстановить только всё задание целиком (или необходимо предварительно поменять параметры хранения и восстановить каталог утилитой bscan). Консоль имеет команды ручного удаления: prune (с учётом времени хранения) и purge (без учёта). Рекомендуется ежегодно выполнять OPTIMIZE TABLE в MySQL (или mysqldump с последующим восстановлением). По умолчанию, таблицы в MySQL 4.x создаются в режиме не более 4 ГБ. Если требуется больше, то либо перед созданием таблиц необходимо в my.conf вставить в секцию mysqld строку "set-variable = myisam_data_pointer_size=6", либо поменять характеристики уже существующей таблицы: "alter table File MAX_ROWS=5000000000" (проверка "SHOW TABLE STATUS;"). Для ускорения некоторых функций очистки рекомендовалось раскоментировать создание дополнительных индексов в таблице File (скрипт make_mysql_tables: PathId; FilenameId; FilenameId, PathId). При этом замедляется обычная работа. В версии 3 индексы добавляются и удаляются автоматически. Проверка наличия индексов: "show index from File;"; добавление индексов:

CREATE INDEX file_pathid_idx on File (PathId);
CREATE INDEX file_filenameid_idx on File (FilenameId);
CREATE INDEX file_filenameid_pathid_idx on File (FilenameId, PathId);

Данные сохраняются на тома (магнитная лента, DVD или файл). Имя тома может состоять из букв, цифр и символов "-_:.". На один том можно записывать произвольное количество заданий (регулируется настройкой). Одно задание может быть разбито на несколько томов. В начале каждого тома пишется метка тома, которая позволяет избежать установки неправильной ленты. Имя файла является частью метки фалового тома, так что переименовывать файлы нельзя. Тома группируются в пулы томов: в описании задания указывается имя пула, а не конкретного тома. Параметры пула задаются при настройке директора (записываются в каталог при запуске директора или командой create в консоли). При изменении параметров пула необходимо перезапустить директора или выполнить команду "update pool" в консоли. Для автоматического изменения информации о пуле в каталоге, пул должен быть упомянут хотя бы в одном задании. Информация о реальных томах, входящих в пул, хранится в каталоге. Добавление тома в пул осуществляется командой label в консоли. Эта же команда записывает метку в начало тома (или утилита btape). Команда relabel позволяет записать новую метку тома (том должен быть предварительно очищен). Команда add добавляет том в пул, не записывая метку. Возможно автоматическое (по потребности) добавление томов в пул (полезно для дисковых томов). При инициализации тома его атрибуты по умолчанию берутся из описания пула в каталоге (можно изменить командой "update volume" из консоли, в меню есть возможность обновить все параметры томов в пуле по изменившемуся описанию пула - reload, update pool). Атрибут "Media Type" тома должен соответствовать типу носителя, который описан для указанного в задании устройства хранения. Возможные состояния тома: Append (новые данные могут записываться только в конец), Full (полностью заполнен), Used (закрыт для изменений), Purged (не содержит ничего полезного), Recycled (разрешён для повторного использования, данные стёрты), Error (какие-то ошибки при работе с томом), Archive, Read-Only, Disabled, Busy, Cleaning. Срок хранения информации в каталоге о томе проверяется только когда требуется новый том для записи, а свободного (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

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

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

Каждый сервис имеет собственный файл настройки, имя которого можно задать при запуске (ключ "-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.

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

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

Типы данных:

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

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

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

Директивы:

TLS. Во всех файлах настройки (директор, сервер хранения, клиент, консоль) могут быть заданы директивы, обеспечивающие шифрование передачи данных (не хранение!) с помощью TLSv1 и системы сертификатов 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".

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

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

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

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

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

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

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

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

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

Монитор

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

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

Директор

В файле настройки (/usr/local/bacula/etc/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):

Установка 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").

О сохранении системного реестра необходимо позаботиться отдельно (regedit /e). Рекомендуется предварительно сохранять состояние системы:

ntbackup backup systemstate /F c:\systemstate.bkf

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

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

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

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

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

Для шифрования потоков с помощью TLS (OpenSSL) необходимо (трафик между директором и сервером хранения пока не шифруется, т.к. они находятся на одном хосте; описание директив и создание сертификатов):

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

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

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

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

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

BMR (Bare Metal Recovery) - восстановление Linux клиента "с нуля"

В данном случае предполагается, что был потерян только один сервер, а вся сетевая инфраструктура, включая директор bacula и сервер хранения bacula, остались целыми.

Не рекомендуется пользоваться старыми версиями bacula для восстановления системы - была ошибка восстановления файлов с несколькими жёсткими ссылками (права доступа получались несколько странными).

В версии 3 подсистема была полностью переработана (отказались от создания собственного загрузочного диска в пользу Ubuntu LiveCD, загружаемого с USB флешки), документация в пакете rescue в каталоге linux/usb, не смотрел.

Подготовка к восстановлению (опробовалось на CentOS 4.6/i386, CentOS 5.2/x86_64, 2.4.1) должна проводиться до катастрофы:

Восстановление клиента:

Учения по восстановлению серверной филиала после пожара

Вводная: предполагается пожар в одной из серверной с уничтожением всего находящегося в ней оборудования. Данная серверная в дополнение к обслуживанию локальных клиентов обеспечивает маршрутизацию между филиалами и доступ в Интернет. Резервное копирование осуществляется с помощью сервера bacula, находящегося в соседнем филиале.

Подготовительные действия:

Последовательность восстановления:

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

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

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

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

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

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

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

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

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

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

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

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

bextract - восстановление файлов на "голой" системе. Вторым параметром указывается имя каталога назначения (добавляется к именам востанавливаемых файлов; буква диска из исходных имён файлов удаляется). Не умеет восстанавливать ACL и зашифрованные данные. Восстановление данных в непереносимом формате Win32 на UNIX/Linux платформе появилось в версии 3. Ключи:

bscan - восстановление БД по информации из тома. Если восстанавливается информация об очень старом томе, то она может быть автоматически удалена при выполнении следующего задания, как устаревшая, так что необходимо сразу же её защитить (например, изменить состояние тома командой update). Ключи:

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

btape - ручное управление НМЛ.

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

dbcheck - проверка БД. Некоторые проверки без создания дополнительных индексов выполняются очень (часы и сутки! обещано, что ускорено в версии 3) медленно (Check for orphaned File records; Check for orphaned Filename records; "Check for orphaned Path records"). Ключи:

Изменения

Изменения 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

Последние изменения:
2015.11.18: hard: обновлена статья про ИБП и их мониторинг

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