12 KiB
НАЗВАНИЕ
baka - создание резервных копий файлов и баз данных.
ОБЗОР
baka [--version | -V] [--help | help] <command> [<options>...]
ОПИСАНИЕ
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=<entry> запустить резервное копирование для всех записей,
кроме игнорируемых.
-e, --entry=<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
ОШИБКИ
Сообщайте об ошибках на gechandev@gmail.com или https://gitea.gch.icu/gd/baka ё
АВТОР
gd (gechandev@gmail.com)