Настройка автоматизированного создания и выгрузки backup'ов
Описание
Для автоматизированного создания и выгрузки backup'ов существует специальный сервис ecss-backup.service. Он позволяет каждый день в указанное время автоматически бекапы системы с указанными параметрами, а так же передавать эти backup файлы на указанный хост по средствам протокола ssh.
Настройки сервиса
Настройка сервиса производится через конфигурационный файлы по пути /etc/ecss/ecss-backup.conf, в свою очередь для настройки расписание работы сервиса используется таймер ecss-backup.timer.
Для создания backup требуется выполнение одного из условий:
- указать в конфигурации (ecss-backup.conf) пароль для доступа к БД;
- чтобы у root-а был разрешён доступ в БД без пароля.
Для выгрузки backup на удаленную машину требуется выполнение одного из условий:
- чтобы был настроен доступ до удаленного хоста без ввода пароля (по ключу из под root пользователя);
- указать в конфигурации (ecss-backup.conf) пароль для доступа к удаленной машине по ssh (небезопасный способ).
При выгрузке backup на удаленную машину, по указанному пути создается директория с именем сервера откуда забирается backup (на которой выполняется скрипт) и уже в эту директорию записывается файл backup.
ecss-backup.conf
Файл конфигурации сервиса автоматического создания backup находится по пути /etc/ecss/ecss-backup.conf.
Параметры:
BACKUP_OPTIONS — строка, в которой указываются дополнительные опции для команды ecss-contorl stash. Для создания backup используется встроенная утилита ecss-control. В качестве дополнительных параметров могут быть указаны ключи, чтобы в backup не сохранялись логи системы или базы данных.
BACKUP_OPTIONS="--no-log"
PGPASSWORD — строка, в которой указывается пароль для доступа в базу данных.
PGPASSWORD=""
LOCAL_BACKUP — строка, в которой указывается путь для записи backup архивов на локальном сервере.
LOCAL_BACKUP="/var/cache/ecss/backups/"
REMOTE_BACKUP — параметры доступа для записи backup на удаленном сервере. Первым параметром указываются пользователь и имя хоста (ip адрес) удаленного сервера ["userBackup@serverBackup"]. После символа '=' идет строка в которой указывается путь для копирования backup архивов на удаленном сервере. Если необходимо сохранять backup на несколько серверов, то параметр REMOTE_BACKUP можно дублировать, однако при этом необходимо иметь доступ до серверов по ключам.
# REMOTE_BACKUP["<user@hostname>"]="</path/to/store/>"
## Пример
# REMOTE_BACKUP["test@host1"]="/var/cache/ecss/backups"
SSH_PASSWORD — строка, в который указывается пароль для доступа на удаленный сервер по ssh.
Если к серверу настроен доступ по ключу, то указывать пароль нельзя.
Безопасный и рекомендуемый вариант доступа по ssh — использование ключей.
SSH_PASSWORD="PasWjqv91_1$%sa!"
ecss-backup.timer
Таймер для сервиса автоматического backup. Для корректной работы таймера необходимо настроить время запуска сервиса.
sudo systemctl edit ecss-backup.timer
Для более подробной информации по конфигурации таймеров необходимо ознакомиться с документацией systremd timer.
Пример:
Таймер при котором backup будет создаваться один раз в неделю (в 12:00 в понедельник)
[Unit]
Description=Run backup weekly
[Timer]
OnCalendar=weekly
Persistent=true
Для указания более точного времени в строке OnCalendar задается необходимое время в следующем формате:
ДеньНедели Год-Месяц-День Часы:Минуты:Секунды
Символ * используется для указания всех значений, а две запятые .. для перечисления возможных значений.
Backup будет запускаться в первые три дня каждого месяца в полночь, но только если день является понедельником или вторником:
[Timer]
OnCalendar=Mon,Tue *-*-01..03 23:59:00
Запуск сервиса
Для того чтобы убедиться в корректности работы сервиса, а так же сделать backup текущей системы, необходимо выполнить команду:
sudo systemctl start ecss-backup.service
По пути указанном в параметре LOCAL_BACKUP должен создаться backup-архив. Если были указаны параметры удаленного сервера, то туда так же должен был быть отправлен backup-архив. Если после выполнения команды backup архивы были созданы, то сервис был сконфигурирован корректно.
Для того чтобы активировать таймер, необходимо выполнить команду:
sudo systemctl start ecss-backup.timer
После старта таймера выполните команду для проверки статуса сервиса:
sudo systemctl status ecss-backup.timer
● ecss-backup.timer - Run backup weekly
Loaded: loaded (/lib/systemd/system/ecss-backup.timer; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/ecss-backup.timer.d
└─override.conf
Active: active (waiting) since Thu 2020-01-09 12:58:08 +07; 1min 7s ago
Trigger: Fri 2020-01-10 01:15:00 +07; 12h left
янв 09 12:58:08 ecss2 systemd[1]: Started Run backup weekly.