## НАЗВАНИЕ baka \- создание резервных копий файлов и баз данных. ## ОБЗОР baka \[\-\-version | -V\] \[\-\-help | help\] \ \[\...\] ## ОПИСАНИЕ baka позволяет создавать резервные копии каталогов и баз данных MariaDB/MySQL и PostgreSQL. Работа baka базируется на обработке записей (entries). Обработка может быть запущена сразу для всех записей, либо только для выбранных, либо для всех, кроме исключенных. baka реализует только механизм создания архивов с файлами и дампами баз данных и передачи этих файлов в удаленное хранилище с помощью сторонних инструментов (таких как rsync, s3cmd). Для выполнения резервного копирования по расписанию, команду baka рекомендуется установить в планировщике задач операционной системы. Например cron. Примеры использования находятся в разделе ПРИМЕРЫ. Из вышеперечисленных пунктов и возможности настройки отдельной записи следует, что с помощью baka можно довольно гибко настроить систему резервного копирования. **ВНИМАНИЕ**: Несмотря на красивое описание выше, baka не следует рассматривать как профессиональные решения для резервного копирования. Пожалуйста, не используйте baka в продакшн среде. ### Основные понятия: **Entry** Сущность, описывающая элементы, с которыми нужно выполнять действия. Таких сущностей может быть любое количество. Более подробное описание см. В разделе КОНФИГУРАЦИОННЫЕ ФАЙЛЫ. **Remote transport** Способ доставки файлов в удаленное хранилище. В версии 0.1 это может быть синхронизация с помощью rsync, загрузка файлов в S3-совместимое хранилище с помощью утилиты s3cmd или «none», что означает отказ от загрузки файлов в удаленное хранилище. ## КОМАНДЫ **backup** Сделать резервную копию прямо сейчас. Доступные опции: -i, --ignore= запустить резервное копирование для всех записей, кроме игнорируемых. -e, --entry= запустить резервное копирование выбранной записи. --local принудительное локальное резервное копирование. --no-verify не проверять целостность архивов. --remove удалить старые резервные копии (принудительно). --help, help напечатать справочное сообщение и выйти. **list** Список доступных entries. Доступные опции: -v, --verbose выводить список записей подробно (по умолчанию). -s, --short короткий формат (имена). -S короткий формат (пути). --help, help напечатать справочное сообщение и выйти. **test** Проверка конфигурации main.conf и всех entries. Доступные опции: -v, --verbose выводить на печать подробный вывод. --help, help напечатать справочное сообщение и выйти. **show** Распечатать основную конфигурацию (main.conf). **edit** Открыть main.conf в текстовом редакторе по умолчанию. **remove** Удалить старые локальные резервные копии (старше чем $livetime дней). Время жизни резервной копии устанавливается в main.conf. -f, --force удалить без подтверждения. --help, help напечатать справочное сообщение и выйти. ## КОНФИГУРАЦИОННЫЕ ФАЙЛЫ ### MAIN.CONF Путь к файлу: /etc/baka/main.conf. Он содержит значения для глобальных настроек baka. Обязательные параметры: log файл лога (/var/log/baka). log_df формат времени в логе. Пример: %d %b %Y %T %z Подробнее в 'man date'. log_format формат строки лога. Имеет специальный синтаксис. Пример: [%time] %log Здесь: %time время, отформатирвованное по 'log_df'. %log строка с данными df формат времени в именах файлов. См. 'man date' nf формат имён файлов. Имеет специальный синтаксис. Пример: %type_%name_%time Здесь: %type тип содержимого. К имени архива будет добавлено слово 'dump' для базы данных или 'backup' для файлов. %name имя директории или базы данных. %time время, отформатированное по 'df'. remote remote transport. livetime время жизни старых бэкапов (количество дней). Опциональные параметры: allow_commands флаг для выполнения команд из entries. По-умолчанию: отключено ssh_uri URI для подключения по SSH для rsync. ssh_port указать порт, если отличается от стандартного 22. s3_uri URI для подключения к хранилищу S3. local локальная папка для сохранения всех бэкапов. Все 'dest' в entries будут проигнорированы. ### ЗАПИСИ (ENTRIES) Записи хранятся в каталоге /etc/baka/entries/ в отдельных файлах. Имя файла значения не имеет. В них вы можете установить параметры резервного копирования нужного набора данных. См. примеры ниже. **DESTINATION DIR** Локальная целевая папка. В неё будут сохранены данные, которые описаны в записи. Это обязательный параметр. Он будет использоваться, если параметр `local` не указан в main.conf. Вы можете указать его только один раз в записи. Это единственный обязательный параметр. И единственный, который можно указать только один раз. В дополнение к целевой папке должна быть указана хотя бы одна переменная с данными. Пример: dest = /home/user/backups **FILES** Файлы или каталоги для резервного копирования. Синтаксис: files = /path Также вы можете сделать так: files = /path/1 /path/2 Вы можете добавлять переменную `files` сколько угодно раз. **EXCLUSIONS** Этот параметр является дополнением к параметру files. С его помощью вы можете указать, какие файлы или папки следует исключить из резервной копии. Перечислить файлы и папки через запятую без пробелов в одной строке: exclude = env,logs,__ pycache__ Или разделите их на несколько строк: exclude = env exclude = logs exclude = __pycache__ **DATABASES** baka может сделать базы данных MariaDB/MySQL (ярлык mysql) и PostgreSQL (ярлык postgres). Синтаксис: [dmbs] = host:port:database:user:password Например: postgres = localhost:5432:mydb:user:password Вы также можете использовать сокращенный синтаксис (используйте стандартный хост и порт): [dmbs] = host:database:user:password [dmbs] = database:user:password **ПРИМЕЧАНИЕ:** Из-за особенностей парсера двоеточия и символы решетки не могут использоваться в пароле базы данных. **COMMANDS** Помимо файлов и баз данных, baka может выполнять для вас произвольную команду Bash. Например: command = echo "Привет, мир!" Эта функция отключена по умолчанию и может быть включена в main.conf. НЕ ИСПОЛЬЗУЙТЕ НЕДОВЕРЕННЫЕ КОМАНДЫ В ENTRY! Эта функция потенциально опасна. Убедитесь, что доступ к записям ограничен. ## ПРИМЕРЫ Пример использования baka. Например, есть два файла в /etc/baka/entries: example.org и example.com. Содержимое файлов: example.org: dest = /home/user/backups/example.org files = /srv/example.org/public exclude = logs,cache example.com: dest = /home/user/backups/example.com files = /srv/example.org/public files = /srv/example.org/storage mysql = mydb:dbuser:password Для того, чтобы заапускать резервное копирование этих сайтов в разное время, добавим в crontab две задачи: 00 00 * * * /usr/bin/baka backup --entry=example.com 00 00 */2 * * /usr/bin/baka backup --entry=example.org Точно таким же образом можно запускать резервное копирование большего числа entries, добавляя исключения или указывая конкретные entries. Например так: baka backup --ignore=example.org --ignore=example.com ## ОШИБКИ Сообщайте об ошибках на или ё ## АВТОР gd (gechandev@gmail.com)