Преамбула.
Бакап нужен всем! Думаю эту аксиому знают все. Но вот парадокс: реально бакап делают единицы! Причем что там говорить о домашних пользователях, когда даже во многих организациях его нет. Печально, но факт. Причем печаль этого факта осознаешь только тогда, когда теряешь данные... Сделать нормальный бакап я хотел давно. Сподвигли же на это меня курсы, которые я окончил этим летом в англии, в симантике по нетбакапу. Данный продукт мне очень понравился, не смотря на довольно сложную внутренюю структуру. И проходя курс, я вспомнил, что в свое время пытался поковырять бакулу, и что она по идеям очень сходна с продуктом симантика. Вернувшись домой, я нашел время и развернул ее дома. Остался доволен. :)Для начала: кому это нужно.
В общем если вы все же пришли к выводу, что делать бакап пора, то значит будем начинать. :) Но прежде решим, нужна ли вам именно бакула. Для этого ответим на ряд вопросов:- У вас более одного компа?
- Компьютеры объеденены в локальную сеть?
- Выши компьютеры работают круглые сутки (или хотя бы достаточно редко выключаются)?
Что бы грамотно у удобно настроить это все "счастье", надо понимать КАК оно работает. Логически бакула разбита на три компонента:
- Bacula Director: содержит информацию о всех заданиях, клиентах, шедулерах, пулах, файл сетах, стораджах, методах оповещения и каталоге.
- Bacula Storage Daemon: демон осуществляющий непосредственное сохранение данных на носители, а так же управляющий этими носителями (роботы, ченджеры и прочее).
- Bacula File Daemon: демон, представляющий собственно говоря клиентского демона, забирающий данные с клиента и передающий их серверу.
Пулы представляют из себя логические структуры носителей. Для каждого пула можно отдельно оговорить метки томов, время хранения носителей и прочее. Полное описание естественно читамем в доках. :) Файл сеты - определения того, что будет собираться с клиентов (файлы, пути, файлы с путями, маски файлов и прочее). Каталог - база данных (sqlite, mysql или postgresql) в которой хранятся имена файлов, их контрольные суммы и прочая служебная информация. Использовать можно любую базу, но я использовал mysql. Эксперимент с sqlite был не удачным. Да и в документации разработчики не рекомендуют его использовать.
Для примера я буду рассматривать конфигурацию, на мой взгляд, наиболее распространенную у домашних пользователей: домашний десктоп и пара ноутбуков (мой и жены). Для начала проинсталируем все необходимое. На десктопе у нас будет стоять директор, сторадж демон и файл демон. А так же каталог (mysql).
sudo aptitude install bacula-director-mysql bacula-sd-mysql bacula-fd bacula-console
Если у вас еще не установлен mysql, то он соответственно установиться и задаст вам кучу вопросов. :) Но настройка mysql - не тема для этого поста. ;) Так же по желанию можно поставить bacula-console-qt и bacula-traymonitor. Консоль используется для управления всем этим хозяйством в реальном времени, а траймонитор вешает в трей иконку. Баловство, но многим нравится. :) Так же это все может потянуть за собой настройку почтовой системы, так как все оповещения бакула делает в первую очередь через mail. Хотя возможно настроить их как угодно (sms, osd и прочее).
На клиентах мы ставим только файл демон.
sudo aptitude install bacula-fd
Начнем настройку с fd, как с самого простого. Конфиги по умолчанию вполне работоспособны, так что править нам придется совсем мало, за исключением директора.
Секция Director определяет имя директора (логическое имя внутри бакулы, не связано с именем хоста, называем например <хост директора>-dir) и пароль - произвольную комбинацию символов. Главное, что бы они были одинаковые на директоре в разделе конкретного клиента и в конфиги этого клиента. По умолчанию они все кажется одинаковые, так что для начала можно оставить так, но в последствии конечно же желательно их изменить. Так же секции director в настройках fd может быть две: одна для подлючения самого директора и работы бакапа, а вторая, с параметром Monitor = yes - для мониторинга. Секция FileDaemon содержит основные параметры:
- Name - имя демона. Является логическим именем внутри бакулы и не связано на прямую с именем хоста. Что бы не запутаться называем например <имя хоста>-fd.
- FDport - порт, по которому будет осуществляться подключение
- WorkingDirectory - директория, которую использует для работы демон
- Pid Directory - директория в которой будет хранится pid работающего демона
- Maximum Concurrent Jobs - колличество одновременно запущеных на этом клиенте заданий
- FDAddress - адрес демона. Если вы настраиваете fd на машине, где стоит директор, то можно использовать адрес 127.0.0.1, для всех остальных - внешний интерфейс, который "виден" с машины, на которой установлен директор. Так же сюда можно прописать имя машины, если у вас нормально настроен dns, или имена прописаны в /etc/hosts
#
# Default Bacula File Daemon Configuration file
#
# For Bacula release 2.4.2 (26 July 2008) -- debian lenny/sid
#
# There is not much to change here except perhaps the
# File daemon Name to
#
#
# List Directors who are permitted to contact this File daemon
#
Director {
Name = desktop-dir
Password = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = desktop-mon
Password = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
Monitor = yes
}
#
# "Global" File daemon configuration specifications
#
FileDaemon { # this is me
Name = desktop-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 2
FDAddress = 127.0.0.1
}
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = desktop-dir = all, !skipped, !restored
}
Продолжение следует...
Спасибо. Давно собираюсь автоматизировать и систематизировать бэкапы, было интересно почитать.
ОтветитьУдалитьP.S. Хорошо бы посты под кат убирать, а то скроллить много приходится.
Alsvartr пишет...
ОтветитьУдалитьP.S. Хорошо бы посты под кат убирать, а то скроллить много приходится.
Э... Совершенно согласен. Но честно говоря не знаю пока как это сделать. :( Надо порыться, да все руки не доходят...
обычный copy/paste причем бесполезный
ОтветитьУдалитьАнонимный комментирует...
ОтветитьУдалитьобычный copy/paste причем бесполезный
Во первых не перевариваю анонимусов: вякнут что-то и в кусты, фиг поймешь кто навонял. Конструктивный диалог ведут только нормально авторизованные пользователи. Не важно с блоггера, или через openid.
А во вторых, уважаемый, если это бесполезно, так и не читайте, вас сюда ни кто не звал. Это мой блог и я тут пишу то, что хочу, не заставляя кого-то это читать.
"Продолжение следует..." - а где продолжение? Нашёлся только постскриптум по тегу bacula, а эта статья заканчивается на самом интересном!
ОтветитьУдалить2Murz:
ОтветитьУдалитьНу вот так вот получилось. :) Все ни как не дойдут руки дописать. :( Обещаю исправиться. ;)
Тут был удален коммантарий мудацкого спамера, что б они все сдохли. :)
ОтветитьУдалить