мета-данные страницы
Это старая версия документа!
Отчеты в Bareos
В данной системе бэкапирования к сожалению нет удобного визуального контроля за тем какие файлы и в какой момент были записаны на ленточное хранилище.
И я решил сам сделать такой функционал т.к. смотреть через bconsole не очень удобно из-за привязки записанных файлов к заданию job
Я изучил структуру базы данных и зависимости таблиц между собой, что бы понять какие данные мне нужно включить в отчетность и что бы ничего лишнего не попало туда.
Кратко описываю что мне нужно извлечь из базы
Есть таблицы job, file, media
в таблице job есть столбец name, из него мы считываем только содержимое с названием BackupOnTape,
так же есть столбец jobid и он идентичен в таблице file
Теперь в таблице file сопоставив jobid мы должны вытащить из столбца name который в таблице file название
В таблице media есть столбец poolid он понадобится для понимания какой используется пул
Но мне из таблицы media более важно знать что в столбце volumename и выводить эту информацию
Еще в таблице media есть вот такой столбец mediatype, мне важно что бы в финальном отчете он тоже фигурировал, но при условии что в mediatype будет исключительно содержимое с названием LTO
И из таблицы job нужны два столбца starttime и endtime, которые отвечают за начало и конец записи на ленту.
Таким образом резюмируем
Мне нужно сформировать отчет в котором будет:
- volumename,poolid,mediatype из таблицы media
- name из таблицы file
- name,jobid,starttime,endtime из таблицы job
У меня получился вот такой SQL запрос
download
SELECT
m.volumename AS volumename,
f.name AS file_name,
j.name AS job_name,
j.jobid AS jobid,
m.mediatype AS mediatype,
j.starttime AS starttime,
j.endtime AS endtime,
m.poolid AS poolid
FROM
public.job j
JOIN
public.file f ON j.jobid = f.jobid
JOIN
public.media m ON m.poolid IS NOT NULL
WHERE
j.name = 'BackupOnTape' AND
m.mediatype = 'LTO' AND
m.poolid = 2;
download
COPY (
SELECT
m.volumename AS volumename,
f.name AS file_name,
j.name AS job_name,
j.jobid AS jobid,
m.mediatype AS mediatype,
j.starttime AS starttime,
j.endtime AS endtime,
m.poolid AS poolid
FROM
public.job j
JOIN
public.file f ON j.jobid = f.jobid
JOIN
public.media m ON m.poolid IS NOT NULL
WHERE
j.name = 'BackupOnTape' AND
m.mediatype = 'LTO' AND
m.poolid = 2
) TO '/ВАШ ПУТЬ/report.txt' WITH (FORMAT csv, HEADER);
Обсуждение