/backup-bandit

Notify system for check backups.

Primary LanguageGoMIT LicenseMIT

Возможные аргументы

  -robber string
    	Path to robber config file.
  -verify string
    	Path to verify config file.

Пример файла конфигурации config.yaml

email_settings:
  login: email login
  password: "password"
  smtp_server: smtp.yandex.ru
  smtp_port: 465
email_list:
  - dmitryd.prog@gmail.com
paths:
  -
    path: "%[y]/%[m]/%[-1d]/secret_path"
    files:
      -
        name: "secret_path2[.]bak"
        min_valid_size: 30 MB
      -
        name: "secret_path3[.]bak"
        min_valid_size: 200 MB
  -
    path: "%[y]/%[m]/%[d]/secret_path4"
    files:
      -
        name: ".*_secret_path4[.]tar"
        min_valid_size: 600 MB
  -
    path: "%[y]/%[m]/%[d]/secret_path5/docs"
    min_valid_size: 600 MB

Временные метки строчными буквами обозначают формат без ведущего нуля.

Например строка: "%[y]/%[m]/%[d]/secret_path5/docs" будет иметь эквивалент: "2016/4/1/secret_path5/docs"

Прописными буквами: "%[Y]/%[M]/%[D]/secret_path5/docs" эквивалента: "2016/04/01/secret_path5/docs"

Минимальный размер файла может содержать разные обозначения:

  • KB
  • MB
  • GB

Файл конфигурации для сбора логов robber.yaml

tools:
  -
    path: /usr/bin/discus
    args: -c
    groups:
      - mount
      - total
      - used
      - avail
      - prcnt
      - graph
    regex: >-
        (?P<mount>\/)\s+
        (?P<total>\d+[.]?\d* \w+[B])\s+
        (?P<used>\d+[.]?\d* \w+[B])\s+
        (?P<avail>\d+[.]?\d* \w+[B])\s+
        (?P<prcnt>\d+[.]?\d*%)\s+
        (?P<graph>\[.*\])
  -
    path: /usr/bin/uptime
    groups:
      - up
      - users
      - avr
    regex: >-
        up
        (?P<up>.*),\s*
        (?P<users>\d+) user.*,\s*load average:
        (?P<avr>.*\d)
  -
    path: /usr/bin/find
    wait_time: 5000
    args: /home/dmr/ -name "del_*" -delete

path - путь до исполняемого файла.

wait_time - время ожидания вывода процесса, после истечение времени, процессу будет отправлен сигна Kill. По умолчанию время равно 100 мс.

args - аргументы процесса.

groups - группы которые будут участвовать в регулярном выржание. Группы представляют из себя заголовки таблицы, а значением таблицы будет текст найденный регулярным выражением для соответсвующий группы. Если вывод приложения не имеет смысла, то секцию groups и regex можно опустить.

regex - регулярное выражение для разбора вывода.

Удаление старых файлов.

Для удаление старых бекапов можно воспользоваться секцией tools в robber.yaml. Пример удаления файлов по имени:

.
├── del_me_please
├── del_please

tools:
  -
    path: /usr/bin/find
    args: . -name "del_*" -delete

Полный список флагов find:

  • name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки.
  • type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет.
  • user — владелец: имя пользователя или UID.
  • group — владелец: группа пользователя или GID.
  • perm — указываются права доступа.
  • size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом).
  • atime — время последнего обращения к файлу (в днях).
  • amin — время последнего обращения к файлу (в минутах).
  • ctime — время последнего изменения владельца или прав доступа к файлу (в днях).
  • cmin — время последнего изменения владельца или прав доступа к файлу (в минутах).
  • mtime — время последнего изменения файла (в днях).
  • mmin — время последнего изменения файла (в минутах).
  • newer другой_файл — искать файлы созданные позже, чем другой_файл.
  • delete — удалять найденные файлы.
  • ls — генерирует вывод как команда ls -dgils.
  • print — показывает на экране найденные файлы.
  • exec command {} ; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис.
  • ok — перед выполнением команды указанной в -exec, выдаёт запрос.
  • depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога.
  • maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом.
  • prune — используется, когда вы хотите исключить из поиска определённые каталоги.
  • mount или -xdev — не переходить на другие файловые системы.
  • regex — искать по имени файла используя регулярные выражения.
  • regextype тип — указание типа используемых регулярных выражений.
  • P — не разворачивать символические ссылки (поведение по умолчанию).
  • L — разворачивать символические ссылки.
  • empty — только пустые каталоги.

Флаги -ls, -print почему-то не работают...

Сообщение на почту

Сообщение