Описание

Для автоматизированного создания и выгрузки 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"
CODE

PGPASSWORD — строка, в которой указывается пароль для доступа в базу данных. 

PGPASSWORD=""
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["<user@hostname>"]="</path/to/store/>"
## Пример
# REMOTE_BACKUP["test@host1"]="/var/cache/ecss/backups"
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