LINUX.ORG.RU
решено ФорумAdmin

Поделитесь best practices по управлению файлами

 ,


1

1

Есть bareos (форк бакулы), который работает, но не умеет удалять старые бэкапы.

Пул определяется примерно так (пулов много):

Pool {
    Name = 2wks
    Pool Type = Backup
    Recycle = no
    Volume Retention = 14 days
    Maximum Volume Jobs = 1
    Label Format = "${Pool}-${JobName}"
    Action On Purge = Truncate
}
Новый запуск задания - новый том.

Как теперь сделать так, чтобы удалялись старые файлы томов с истекшим сроком хранения?

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

...
for p in `echo "list pool" | bconsole | grep " Backup " | sed 's/  */ /g' | cut -d ' ' -f4`; do
        for f in `echo "list volume pool=$p" | bconsole | grep Purged | sed 's/  */ /g' | cut -d ' ' -f4`; do
                find $BACKUPROOT -type f -name "$f" -exec rm -f {} \;
                echo "delete volume=$f yes" | bconsole;
        done
done
Скрипт запускается ежедневно по крону, ищет тома в состоянии «Purged», удаляет этот том с диска и из базы. Вроде работает, но если есть не локальный storage daemon, то к костылям нужно городить ещё костыли (например, ходить по SSH на все SD и там подчищать). Не хотелось бы.

Была мысль использовать «Action On Purge = Truncate» (вон он в конфиге), чтобы том автоматически урезался до 0, а потом скриптом по крону удалять нулевые файлы. Но «Action On Purge» в конфиге ни на что не повлиял.

Подскажите какой-нибудь годный способ.

★★★★

Ответ на: комментарий от petav
--Recycle = no
++Recycle = yes
Volume Retention = 14 days

Через 14 дней этот pool будет использован повторно.

petav ★★★★★
()
Ответ на: комментарий от Black_Shadow

Black_Shadow, petav, чтобы можно было в непредвиденной ситуации работать с файлами в обход логики бареоса. Например, если станет мало места (отказ хранилища), то можно будет быстро удалить файлы наименее важных бэкапов. Или, например, если весь директор умрёт целиком, то можно не его в первую очередь восстанавливать (что непросто), а смонтировать файл с нужным бэкапом и с него поднимать сервисы, важные для зарабатывания денег. Ну и IBM рекомендует.

Соответвенно, имена файлов содержат в себе время бэкапа, а переименовывать бареос не умеет.

muon ★★★★
() автор топика
Последнее исправление: muon (всего исправлений: 1)
Ответ на: комментарий от frozen_twilight

В «доках» просто набор некоторых фактов и отрывочных описаний директив, цельной системы в них нет, а практики тем более. Например, по первой ссылке:

| VolumeNa | Media | VolSta | VolByte | LastWritte | VolRet | Rec |
...
| File0007 | File  | Purged | 1896466 | 2002-05-26 | 14400  | 1   |
Автор сделал пул «для скриншота». IRL, при rec=1 том не попадёт в состояние Purged, а сразу попадёт в состояние «Recycled» и, скорее всего, сразу будет использован под следующий бэкап. Ситуация как в «доке» возможна только если сделать purge или prune руками (или внешним скриптом, к вопросу о костылях).

И так по всем интернетам - или python-bash-колхоз, или чистая теория.

muon ★★★★
() автор топика
Ответ на: комментарий от muon
  • Только директор знает какой файл где хранится и bsr файл содержит последнюю информацию о задании.
  • Если ты знаешь где файл, то Bacula хранит архивы в своем формате, просто открыть чем-то не получиться. (Есть утилита bextract для этих целей, но она очень медленная)

Вывод: надо делать так, что бы каталог и конфигурационные файлы не терялись. Я все это хозяйтво бэкаплю самой же бакулой, а потом у самой же бакулы создал задание restore, которое выводит эти данные из инфраструктуры бакула.

Если что-то случилось, сначало восстанавливается директор.

а смонтировать файл с нужным бэкапом и с него поднимать сервисы

Да есть, утилита позволяющая монтировать тома bacula, но я с ней не работал кажется.

Например, если станет мало места (отказ хранилища), то можно будет быстро удалить файлы наименее важных бэкапов.

через bconsole удаляешь информацию, а через файловую систему сам файл. Можно скрипт написать. Только лучше в этом сслучае, действовать по другому, помечаешь volume как Recycle и все.

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

petav ★★★★★
()
Последнее исправление: petav (всего исправлений: 3)
Ответ на: комментарий от petav

Наверное, что-то такое и сделаю. Спасибо!

muon ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.