Bacula, бекап различных сервисов
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
Bacula, бекап различных сервисов
День добрый.
Хочется на полную заюзать данную систему, и бекапить по возможности все.
Собственно удачно получилось бекапить пользовательскую файлопомойку с нужными файлами.
Получилось как бекапить так и восстанавливать старые версии при необходимости.
Full backup и его инкрименты круто сохранили место на хранилище.
Вот сейчас пытаюсь разобраться как к примеру можно бекапить БД.
Судя из возможности bacula это можно делать только запуская пользовательский скрипт на клиенте "ClientRunBeforeJob = /path/to/script".
Вот тут начинается мой вопрос.
А если скрипт не выполнился до конца, скажем выполнился как то частично, что в результате получит бакула?
Или в самом скрипте нужно отслеживать целосность бекапа и потом как то заставить бакулу ожидать передачи удачного параметра (что бекап прошел), а если параметр не вернулся (скрипт недовыполнился или не выполнился вообще) то генерировать ошибку бекапа ?
Собственно у кого какая была практика, как то хочется раскурить данный вопрос ...
Хочется на полную заюзать данную систему, и бекапить по возможности все.
Собственно удачно получилось бекапить пользовательскую файлопомойку с нужными файлами.
Получилось как бекапить так и восстанавливать старые версии при необходимости.
Full backup и его инкрименты круто сохранили место на хранилище.
Вот сейчас пытаюсь разобраться как к примеру можно бекапить БД.
Судя из возможности bacula это можно делать только запуская пользовательский скрипт на клиенте "ClientRunBeforeJob = /path/to/script".
Вот тут начинается мой вопрос.
А если скрипт не выполнился до конца, скажем выполнился как то частично, что в результате получит бакула?
Или в самом скрипте нужно отслеживать целосность бекапа и потом как то заставить бакулу ожидать передачи удачного параметра (что бекап прошел), а если параметр не вернулся (скрипт недовыполнился или не выполнился вообще) то генерировать ошибку бекапа ?
Собственно у кого какая была практика, как то хочется раскурить данный вопрос ...
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- ст. лейтенант
- Сообщения: 1374
- Зарегистрирован: 2010-02-05 0:21:40
Bacula, бекап различных сервисов
если скрипт выполнился с ошибкой, то эта ошибка будет в логе бакапа.
но вообще у меня что-то с бакулой не сложилось. как-то там всё не так, как я привык
но вообще у меня что-то с бакулой не сложилось. как-то там всё не так, как я привык

- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
Bacula, бекап различных сервисов
Вернулся к данному вопросу.
Для бекапа jail, созданного ezjail написал скрипт
Скрипт из bacula запускаю так:
Где параметры скрипта:
- имя jail
- временный, локальный каталог бекапа для бакула
- флаг старт/стоп jail при бекапе.
Если настраиваю на реальный jail, то все бекапится, бакула себе зятягивает файл и в статусе Job пишет "OK".
Если указываю не существующий jail, то весь механизм отрабатывает, в статусе Job пишет "OK", но на самом деле скрипт ни чего не забекапил т.к. jail не существует.
Вот и вопрос как мне скриптом контролировать бекап и потом передать состояние бакуле ?
У кого какие идеи ?
Для бекапа jail, созданного ezjail написал скрипт
Код: Выделить всё
#!/bin/sh
ezjail="/usr/local/bin/ezjail-admin"
jailname=$1
backup_dir=$2
jailstop=$3
# ------------ Тело скрипта ------------------------
# Проверяем существование директории и если нет то создаем
if [ ! -d $backup_dir ];then
mkdir -p $backup_dir
fi
# Если директория была, то очищаем...
rm -rf $backup_dir/*
# Бекап с остановкой Jail
if [ $jailstop -eq 1 ]; then
$ezjail stop $jailname > /dev/null 2>&1
$ezjail archive -f -a $jailname -d $backup_dir $jailname > /dev/null 2>&1
$ezjail start $jailname > /dev/null 2>&1
fi
# Бекап без остановки Jail
if [ $jailstop -eq 0 ]; then
$ezjail archive -f -a $jailname -d $backup_dir $jailname > /dev/null 2>&1
fi
chown -R bacula:bacula $backup_dir
exit 0
Код: Выделить всё
ClientRunBeforeJob = "/bin/sh /usr/home/Scripts/bacula-before-jail_backup.sh jail1 /usr/home/bacula-backup 1"
- имя jail
- временный, локальный каталог бекапа для бакула
- флаг старт/стоп jail при бекапе.
Если настраиваю на реальный jail, то все бекапится, бакула себе зятягивает файл и в статусе Job пишет "OK".
Если указываю не существующий jail, то весь механизм отрабатывает, в статусе Job пишет "OK", но на самом деле скрипт ни чего не забекапил т.к. jail не существует.
Вот и вопрос как мне скриптом контролировать бекап и потом передать состояние бакуле ?
У кого какие идеи ?
-
- ст. лейтенант
- Сообщения: 1374
- Зарегистрирован: 2010-02-05 0:21:40
Bacula, бекап различных сервисов
Так у тебя скрипт всегда 0 возвращает. Чего-ж ты хочешь?
Таки проверяй в скрипте ошибки и возвращай код ошибки какой-то из скрипта.
Таки проверяй в скрипте ошибки и возвращай код ошибки какой-то из скрипта.
- Amadeus
- ст. сержант
- Сообщения: 332
- Зарегистрирован: 2008-10-05 12:42:44
- Откуда: Kiev
Bacula, бекап различных сервисов
Так, касательно БД
1) Исходя из боевого опыта работы с БД размером доХ и еще 10 раз по ДоХ если в качестве бекап системы вы хотите использовать бакулу, алгоритм следующий
- Кроном на сервере БД снимайте дамп
- Во время дампа желательно сразу еще жать его через pipe. Так как на некоторых базах, внезапно дамп может весить в 1,5 раза больше самой БД, так как там (в бд) данные сюриализованные. А дамп - в обычном виде текстовый файл
- Через некоторое время забирайте его бакулой простым файл сетом
Для дампов БД before скрипты не лучшее решение, так как некоторые дампы могут делаться крайне долго, и в итоге вы получите на бакуле - Network pipe или тому подобные ошибки.
2) Например, я не юзаю никаких оберток на джейлах. Простые снепшоты и zfs rcv в gz архив.
- Далее алгоритм такой же.
Бакула офигенная система. В плане сочетания юзабилити и возможностей которые она предоставляет. Главное уметь готовить
Отправлено спустя 5 минут 17 секунд:
Но то что я написал выше - это по сути когда уже идут реально большие объемы дампов.
Например у меня бакула в сутки ест около 100 гигов дампов с gzip 9
Если данных не так много, и укладывается в маленькое время само снятие - то да, тут можно использовать before скрипты
Отправлено спустя 6 минут 18 секунд:
Касательно этого момента - невыполнение After/Before скрипта приводит к Error статусу задания в целом
При этом сам volume с бекапом, может и создастся. Но задание будет в Error статусе. И дальше уже, в зависимости от правил ротации volume - может и перезаписаться.
1) Исходя из боевого опыта работы с БД размером доХ и еще 10 раз по ДоХ если в качестве бекап системы вы хотите использовать бакулу, алгоритм следующий
- Кроном на сервере БД снимайте дамп
- Во время дампа желательно сразу еще жать его через pipe. Так как на некоторых базах, внезапно дамп может весить в 1,5 раза больше самой БД, так как там (в бд) данные сюриализованные. А дамп - в обычном виде текстовый файл
- Через некоторое время забирайте его бакулой простым файл сетом
Для дампов БД before скрипты не лучшее решение, так как некоторые дампы могут делаться крайне долго, и в итоге вы получите на бакуле - Network pipe или тому подобные ошибки.
2) Например, я не юзаю никаких оберток на джейлах. Простые снепшоты и zfs rcv в gz архив.
- Далее алгоритм такой же.
Бакула офигенная система. В плане сочетания юзабилити и возможностей которые она предоставляет. Главное уметь готовить
Отправлено спустя 5 минут 17 секунд:
Но то что я написал выше - это по сути когда уже идут реально большие объемы дампов.
Например у меня бакула в сутки ест около 100 гигов дампов с gzip 9
Если данных не так много, и укладывается в маленькое время само снятие - то да, тут можно использовать before скрипты
Отправлено спустя 6 минут 18 секунд:
Касательно этого момента - невыполнение After/Before скрипта приводит к Error статусу задания в целом
При этом сам volume с бекапом, может и создастся. Но задание будет в Error статусе. И дальше уже, в зависимости от правил ротации volume - может и перезаписаться.
Нет ничего невозможного
-
- ст. лейтенант
- Сообщения: 1374
- Зарегистрирован: 2010-02-05 0:21:40
Bacula, бекап различных сервисов
Бакула офигенная система за свои деньги. Но в плане юзабилити и возможностей посравнению с нормальными системами - это жутко неудобный монстр.Amadeus писал(а): Бакула офигенная система. В плане сочетания юзабилити и возможностей которые она предоставляет. Главное уметь готовить
Вот на днях у меня пришел юзер и попросил "вытащить из бакапа файлик 3-4-5 дневной давности, который у него был на десктопе в каталоге что-то там про TRPM7 и файл с #541 в названии". И вот такое на бакуле искать нужную версию непонятно какого файла непонятно где - повеситься можно (или я не нашел толкового UI). Потому как поднять полностью весь бакап легко и просто. А вот найти что-то...
- Amadeus
- ст. сержант
- Сообщения: 332
- Зарегистрирован: 2008-10-05 12:42:44
- Откуда: Kiev
Bacula, бекап различных сервисов
За чего простите?) Free версия системы позволяет на данный момент закрывать потребности проекта полностью + Free версия UI прекрасно дает интерфейс если надо. Их несколько. Я про UI. Про энтерпрайз версию сейчас речи не идет.Бакула офигенная система за свои деньги
Есть два типа UI - только просмотрщики, и через которых можно минимально управлять и делать ресторы. Во втором типе - есть возможность искать по имени файла.
Но отчасти я тут согласен, запросы "Найди что то там, примерно тогда то" на больших объемах решать не быстро. Тут спорить не буду.
Отправлено спустя 10 минут 42 секунды:
Единственное уточнение
Что бы вот этот тип работал адекватно - бекенд любая SQL база. sqllite - тут не подходит в принципе. Если хотите вещать на бакулу нормальный UIВо втором типе - есть возможность искать по имени файла.
Отправлено спустя 1 час 31 минуту 14 секунд:
Сейчас даже ради интереса проверил.
1) Поиск по части имени файла - присутствует. Выдает все задания, которые содержаться в базе
2) Восстановление задания по клику из поиска - работает в полной мере
3) Восстановление отдельного файла по клику из поиска - бажное, но если кому то надо будет - UI открытый, там даже понятно по сути в чем баг. Любому php программисту исправить час +-. Не программисту - если задаться целью чуть больше - но смысл не меняется. Там код в этом плане детский.
Нет ничего невозможного
- Neus
- капитан
- Сообщения: 1961
- Зарегистрирован: 2008-09-08 21:59:56
Bacula, бекап различных сервисов
Самое время задать каверзный вопрос: как бэкапить бакулу?бекенд любая SQL база

Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.
LOR захватили ситхи.
Добро пожаловать на светлую сторону!
Engineering is physics with the constraint of money.
LOR захватили ситхи.
Добро пожаловать на светлую сторону!
- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
Bacula, бекап различных сервисов
1. Neus, Смотря что Вы понимаете под бекапом бакулы ...
Если бекап бекапов, то это не имеет смысла.
А если нужно после того как поломался сервер его шустро развернуть, то достаточно конфигурационных файлов.
У меня директор в jail, я тупо jail бекаплю и все ...
2. Для web доступа я использую Baculum, скромно, но все устраивает.
Статусы заданий видно, файлы восстановить можно.
Поиском еще не игрался ...
3. Amadeus,
Тот механизм что Вы описали по бекапу больших БД и т.д., я прекрасно понимаю.
На данный момент у меня нет таких больших сервисов бекапля которые через before я получил бы в бакуле большую задержку.
Я привел как пример бекап Jail, но этот вопрос касается и бекапа БД и т.д.
Вот к примеру по бекапу БД.
Как правильно написать скрипт бекапа какойто БД MySQL, что бы в случае ошибки, mysqldump что то вернул скрипту.
Допустим я указал mysqldump не существующую БД, как скрипту получить эту ошибку?
Или допустим при удачном бекапе передавать скрипту состояние OK.
На сколько я понимаю дале точно так же эту ошибку можно передать и в бакулу...
И в статусе задания в состоянии Fail, возможно можно будет увидеть ошибку от mysqldump.
Или я не прав?
Если бекап бекапов, то это не имеет смысла.
А если нужно после того как поломался сервер его шустро развернуть, то достаточно конфигурационных файлов.
У меня директор в jail, я тупо jail бекаплю и все ...
2. Для web доступа я использую Baculum, скромно, но все устраивает.
Статусы заданий видно, файлы восстановить можно.
Поиском еще не игрался ...
3. Amadeus,
Тот механизм что Вы описали по бекапу больших БД и т.д., я прекрасно понимаю.
На данный момент у меня нет таких больших сервисов бекапля которые через before я получил бы в бакуле большую задержку.
Я привел как пример бекап Jail, но этот вопрос касается и бекапа БД и т.д.
Вот к примеру по бекапу БД.
Как правильно написать скрипт бекапа какойто БД MySQL, что бы в случае ошибки, mysqldump что то вернул скрипту.
Допустим я указал mysqldump не существующую БД, как скрипту получить эту ошибку?
Или допустим при удачном бекапе передавать скрипту состояние OK.
На сколько я понимаю дале точно так же эту ошибку можно передать и в бакулу...
И в статусе задания в состоянии Fail, возможно можно будет увидеть ошибку от mysqldump.
Или я не прав?
-
- ст. лейтенант
- Сообщения: 1374
- Зарегистрирован: 2010-02-05 0:21:40
Bacula, бекап различных сервисов
web-based интерфейсы я не рассматривал. не люблю я веб. Я пытался пользоваться bat'ом. Ужасно кривая хрень.
То есть опять-таки, за свои деньги (именно, что за бесплатно) - весьма даже. Но как толковый рабочий инструмент - не, не тянет.
Но раз говорите, что вебовская морда поприличнее, то я посмотрю.
Но просто поиск по маске нихрена не поможет. У меня в каждой лабе по несколько десятков юзеров, все они работают на более-менее одних и тех-же проектах. От каждого проекта есть туча файлов, разбросанных в зависимости от версии и под-проекта по разным фолдерам. Если я на бакапе запрошу поиск файла по маске "*#541*", то я получу список из сотни километровых путей, из которых таки зело неудобно выбирать нужный. Мне нужен не поиск (вернее поиск тоже нужен, но это реже), а нормальный способ просмотреть дерево файлов и каталогов, чтоб можно было походить, посмотреть, показать юзеру в таком виде в котором он это поймет, найти нужный файл и по каждому файлу возможность посмотреть историю сохраненных версий. И если мне система бакапа такой возможности не предоставляет, то мне таки ей пользоваться неудобно.
Что касается скриптов, то таки mysqldump вполне себе возвращает код завершения. И его вполне можно ловить и обрабатывать ( $? ). Ну и соответственно завершать свой скрипт с таким-же (или иным) кодом.
То есть опять-таки, за свои деньги (именно, что за бесплатно) - весьма даже. Но как толковый рабочий инструмент - не, не тянет.
Но раз говорите, что вебовская морда поприличнее, то я посмотрю.
Но просто поиск по маске нихрена не поможет. У меня в каждой лабе по несколько десятков юзеров, все они работают на более-менее одних и тех-же проектах. От каждого проекта есть туча файлов, разбросанных в зависимости от версии и под-проекта по разным фолдерам. Если я на бакапе запрошу поиск файла по маске "*#541*", то я получу список из сотни километровых путей, из которых таки зело неудобно выбирать нужный. Мне нужен не поиск (вернее поиск тоже нужен, но это реже), а нормальный способ просмотреть дерево файлов и каталогов, чтоб можно было походить, посмотреть, показать юзеру в таком виде в котором он это поймет, найти нужный файл и по каждому файлу возможность посмотреть историю сохраненных версий. И если мне система бакапа такой возможности не предоставляет, то мне таки ей пользоваться неудобно.
Что касается скриптов, то таки mysqldump вполне себе возвращает код завершения. И его вполне можно ловить и обрабатывать ( $? ). Ну и соответственно завершать свой скрипт с таким-же (или иным) кодом.
- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
Bacula, бекап различных сервисов
FiL, Если у вас все так плохо может как бекап использовать нечто как SVN или GIT, там и версионность и т.д.
Покажите кодом пожалуйста...И его вполне можно ловить и обрабатывать ( $? )
-
- ст. лейтенант
- Сообщения: 1374
- Зарегистрирован: 2010-02-05 0:21:40
Bacula, бекап различных сервисов
Код: Выделить всё
#!/bin/bash
$db = $1
$dir = $2
$fname = $(date +%y.%m.%d)
mysqlbackup $db > $dir/db-$fname.sql
if [ $? -eq 0 ]
then
exit 0
else
echo "mysql backup failed."
exit 2
fi
- kharkov_max
- капитан
- Сообщения: 1861
- Зарегистрирован: 2008-10-03 14:56:40
Bacula, бекап различных сервисов
Спасибо ...
Попробую поиграться ...
Попробую поиграться ...
-
- проходил мимо
- Сообщения: 8
- Зарегистрирован: 2016-11-16 16:01:27
Bacula, бекап различных сервисов
такое возможно?