Пакет для Debian / Ubuntu, позволяющий реализовать резервное копирование файлов (и целых директорий с файлами) критической инфраструктуры, в облако SELECTEL
- Устанавливаем пакет gpg - который требуется для шифрования архива резервной копии перед передачей в облако (на сервер и на свою клиентскую машину)
sudo apt update && sudo apt install gpgПосле установки пакета генерируем ключи (на сервере и на своей клиентской машине)
gpg --gen-keyДалее, экспортируем свой PGP публичный ключ (на клиентской машине), он будет использован при шифровании архива, и затем закрытым ключем который соответствует этому открытому ключу, можно будет его расшифровать.
Просмотреть список всех ключей в системе можно командой:
gpg --list-keyЭкспортируем свой PGP публичный ключ в файл
gpg --export -a "you@gmail.com" > ~/.ssh/gpgpub.keyПереносим этот файл на сервер, и там импортируем этот ключ
gpg --import /tmp/gpgpub.keyПодписываем импортированный ключ, приватным ключем сервера
gpg --sign-key you@gmail.comЗапоминаем email импортированного ключа, который является своего рода ID этого ключа, он понадобится при установке пакета bac.
- Устанавливаем пакет s3cmd В качестве хранилища предусмотрен провайдер SELECTEL Следует предварительно настроить облако (создать контейнер, настроить правила доступа к контейнеру, создать сервисного пользователя и S3 ключи для этого пользователя) подробнее описано в файле "Работа с SELECTEL хранилищем.pdf"
Устанавливаем пакет
sudo apt update && sudo apt install s3cmdКонфигурация s3cmd - доступ к хранилищу
s3cmd --configureУказываем значения при запросах (основные, для остальных можно просто нажать Enter):
Access Key YOUR_S3_KEY
Secret Key YOUR_S3_SECRET_KEY
Default Region [US]: ru-1
S3 Endpoint [s3.amazonaws.com]: s3.ru-1.storage.selcloud.ru
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: s3.ru-1.storage.selcloud.ru
При запросе "Test access with supplied credentials? [Y/n]" указываем "Y" т.к требуется проверить соединение с облаком! Если тест соединения с облаком прошел успешно, обязательно указываем "y" для сохранения конфигурации. После сохранения настроек, будет выведен файл куда эти настройки сохранены.
- Устанавливаем пакет bac_0.1-1_all.deb Пакет который добавит сервис резервного копирования в систему, который в свою очередь будет запускать bash скрипт выполняющий всю работу по добавлению нужных файлов и директорий в архив резервной копии, шифрование этого архива и отправку его в сетевое хранилище. При установке пакета будут запрошены такие данные:
- "Enter your GPG key (email) which can decrypt the backup archive:" - ID GPG ключа, это тот email нашего ключа с локальной машины, который был импортирован ранее
- "Enter cloud storeage container name:" - имя контейнера в SELECTEL
- "Enter user under which to run the service:" - имя пользователя и группу под которым запускать сервис. Здесь укажите то что выводить команда id также запрошено имя контейнера в SELECTEL, указываем его и жмем Enter.
Устанавливаем пакет командой:
sudo apt install ./bac_0.1-1_all.debПосле установки будет выведен перечень команд для запуска сервиса
sudo systemctl enable bac.timer
sudo systemctl start bac.timer
sudo systemctl enable bac.service
sudo systemctl start bac.service
sudo systemctl status bac.timerКонфиги и файлы сервиса
- /etc/bac.conf - конфиг с перечнем файлов и директорий попадающих в резервную копию
- /usr/bin/bac.sh - скрипт выполняющий резервирование, шифрование и отправку в облако
- /etc/systemd/system/bac.timer - сервис который запускается 1 раз в день
- /etc/systemd/system/bac.service - сервис запускающий скрипт bac.sh
ВАЖНО: для быстрого тестирования запуск сервиса в Unit файле bac.timer настроен на 1 раз в минуту, после того как вы убедились что файл резервной копии появился в контейнере (после запуска сервисов), следует изменить это значение на один раз в 24ч (или на любое другое).
Требуется отредактировать файл Unit:
sudo vim /etc/systemd/system/bac.timerУказав там такое значение (например 24h) И перезагрузить системные демоны, командой:
sudo systemctl daemon-reloadЕсли видим что в облаке нет архва на нужную дату, при том что сервис активет, нужно смотреть журнал системы с фильтром по сервису
sudo journalctl -f -u bac.service