Описание

Для автоматизированного создания и выгрузки backup'ов существует специальный сервис ecss-backup.service. Он позволяет каждый день в указанное время автоматически бекапы системы с указанными параметрами, а так же передавать эти backup файлы на указанный хост по средствам протокола ssh.

Настройки сервиса

Настройка сервиса производится через конфигурационный файлы по пути /etc/ecss/ecss-backup.conf, в свою очередь для настройки расписание работы сервиса используется таймер ecss-backup.timer.  

Для создания backup требуется выполнение одного из условий:

  • указать в конфигурации (ecss-backup.conf) пароль для доступа к mysql;
  • чтобы у root-а был разрешён доступ в mysql без пароля.

Для выгрузки 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 не сохранялись логи системы или базы данных mysql. 

BACKUP_OPTIONS="--no-log"
CODE

MYSQL_PASSWORD — строка в которой указывается пароль для доступа в базу данных MySQL. Если для пользователя root разрешен доступ без пароля, то параметр можно оставить не заданным.

MYSQL_PASSWORD=""
CODE

LOCAL_BACKUP — строка в которой указывается путь для записи backup архивов на локальном сервере. 

Обратите внимание, что в разделе, где находится указанная директория должно быть достаточно дискового пространства для хранения backup файлов.  Так этот сервис не решает вопрос с автоматическим удалением старых backup архивов. В качестве выхода можно использовать подсистему RestFs autocleaner
LOCAL_BACKUP="/var/cache/ecss/backups/"
CODE

REMOTE_BACKUP — параметры доступа для записи backup на удаленном сервере.  Первым параметром указываются пользователь и имя хоста (ip адрес) удаленного сервера ["userBackup@serverBackup"]. После символа '=' идет строка в которой указывается путь для копирования backup архивов на удаленном сервере. Если необходимо сохранять backup на несколько серверов, то параметр REMOTE_BACKUP можно дублировать, однако при этом необходимо иметь доступ до серверов по ключам.

REMOTE_BACKUP["<userBackup@serverBackup>"]="</path/to/store/>" 
CODE

SSH_PASSWORD — строка в который указывается пароль для доступа на удаленный сервер по ssh. 

Если к серверу настроен доступ по ключу, то указывать пароль нельзя.

Безопасный и рекомендуемый вариант доступа по ssh — использование ключей.

SSH_PASSWORD="PasWjqv91_1$%sa!" 
CODE

ecss-backup.timer

Таймер для сервиса автоматического backup. Для корректной работы таймера необходимо настроить время запуска сервиса.

sudo systemctl edit ecss-backup.timer
CODE

Для более подробной информации по конфигурации таймеров необходимо ознакомиться с документацией systremd timer. 

Пример:

Таймер при котором backup будет создаваться один раз в неделю (в 12:00 в понедельник)

[Unit]
Description=Run backup weekly

[Timer]
OnCalendar=weekly
Persistent=true     
CODE

Для указания более точного времени в строке OnCalendar задается необходимое время в следующем формате:

ДеньНедели Год-Месяц-День Часы:Минуты:Секунды

Символ * используется для указания всех значений, а две запятые .. для перечисления возможных значений.

Backup будет запускаться в  первые три дня каждого месяца в полночь, но только если день является понедельником или вторником:

[Timer]
OnCalendar=Mon,Tue *-*-01..03 23:59:00
CODE

Запуск сервиса

Для того чтобы убедиться в корректности работы сервиса, а так же сделать backup текущей системы, необходимо выполнить команду:

sudo systemctl start ecss-backup.service
CODE

По пути указанном в параметре LOCAL_BACKUP должен создаться backup архив. Если были указаны параметры удаленного сервера, то туда так же должен был быть отправлен backup архив.  Если после выполнения команды backup архивы были созданы, то сервис был сконфигурирован корректно. 

Для того чтобы активировать таймер, необходимо выполнить команду:

sudo systemctl start ecss-backup.timer
CODE

После старта таймера выполните команду для проверки статуса сервиса:

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.
CODE