У каждого пула и задания есть параметр Volume Retention который задаёт время по истечении которого файлы попавшие в этот том бакула считает удалёнными. Если установлена опция AutoPrune = yes то bacula удалит записи из каталога (SQL). А если установлена опция ActionOnPurge = Truncate то урежет размер файла до нуля.
Нужно для себя уяснить одну вещь: bacula/bareos заточена под ленты и воспринимает файлы как ленты. И ведёт себя соответственно, использует их повторно если не установлен параметр
Maximum Volume Jobs = 1. Проблема заключается в том что у меня объём бэкапов растёт и сложно понять сколько нужно хранить. И часто случалось что какой-то том раздувался и заполнял
диск.
Мы ведь в большинстве своём используем диски, а не ленты. Удалять такие тома дело сложное особенно когда задание "размазано" по нескольким файлам-лентам.
Поэтому для себя я решил так что задания будут иметь определённый формат напрямую связанный с именем сервера, типом бэкапа и датой. В этом случае очередь на удаление очевидна. Кроме этого не возникает больших проблем при восстановлении из одного лишь файла бэкапа (без SQL каталога, несколько раз приходилось это делать) так как всё задание целиком в одном файле.
За основу можете взять скрипт
отсюда исправить его под свою задачу и добавить в cron. Помните что этот скрипт для ручного запуска. Он интерактивный и удаляет файлы по датам и невзирая на то сколько файлов осталось. Другими словами если бэкап не будет создаваться этот скрипт, выполняясь, будет удалять файлы. И в конце концов удалит все бэкапы. Кстати, скрипт вместо крона можно вставить в обработчик например каталога. Поставить бэкап SQL каталога в конец очереди и в него добавить задание "RunScript after/Run After Job"