212 lines
12 KiB
Markdown
212 lines
12 KiB
Markdown
|
## НАЗВАНИЕ
|
|||
|
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)
|