Обеспечение резервного копирования ИБ может быть реализовано разными способами:
1. Копирование кластера средствами СУБД, например PostgreSQL.
Достоинством является простота реализации. Недостатки тоже есть, и это:
- невозможность быстрого восстановления
- невозможность восстановления на других СУБД
- невозможность простым способом восстановить конкретную ИБ кластера
- относительно большой размер
2. Формирование выгрузки в формате dt средствами платформы.
Достоинством является простота восстановления на любой СУБД и минимальный размер. Недостатками - бОльшая сложность реализации.
Прилагаемый сценарий предлагает реализацию по второму варианту и предполагает автоматическое архивирование с использованием штатного cron и тут есть момент: для выгрузки требуется наличие X-сессии т.к. выполняется запуск конфигуратора. Демон cron выполняется под пользователем root и у него не существует X-сессии но можно использовать сессию другого пользователя, для этого:
1. Определяем пользователя ОС с Х-сессией. В примере это пользователь borodin.
2. Копируем файл .Xauthority в домашнем каталоге пользователя borodin пользователю root
sudo cp ~/.Xauthority /root
3. Для того, чтобы при включении ПК происходил автологин пользователя borodin и создавалась X-сессия, необходимо отредактировать файл /etc/lightdm/lightdm.conf.d/50-myconfig.conf до вида:
[Seat:*]
autologin-guest=false
autologin-user=borodin
autologin-user-timeout=0
Если файл отсутствует, то его надо создать.
4. Поместить прилагаемый сценарий в обработку демона cron, например, добавить запись в файл /etc/crontab.
Сценарий предполагает:
- платформа 1С:Предприятия установлена одной версии и находится в каталоге /opt/1cv8/x86_64;
- кластер один;
- в каждой ИБ существует пользователь с именем и паролем определяемым переменными $USER и $PASSWORD с правом на административные действия;
- переменной $BACKUPDIR определяется каталог с архивами;
- выгрузки формируются для всех ИБ в создаваемом каталоге ГГГГ-ММ-ДД-чч-мм;
- перед выгрузкой перезапускается сервис srv1cv83 и блокируются регламентные задания;
- после выгрузки регламентные задания включаются для всех ИБ.
Тестирование выполнялось на платформе: 8.3.19. Архитектура x86_64.
Выполнять следует под пользователем root.
Обновление:
По поводу Х-сессии: можно использовать виртуальную - xvfb (Virtual Framebuffer 'fake' X server), для чего
1. Создать файл Xvfb.service с содержимым
Description=X Virtual Frame Buffer Service
After=network.target
[Service]
ExecStart=/usr/bin/Xvfb :99 -screen 0 800x600x24 -shmem
[Install]
WantedBy=multi-user.target
в каталоге /etc/systemd/system где 99 это номер дисплея.
2. Активировать сервис
chmod +x /etc/systemd/system/Xvfb.service
systemctl enable Xvfb.service
systemctl start Xvfb.service
3. Проверить работу сервиса
service Xvfb status
4. В заголовке файла backupib.sh исправить номер дисплея на указанный в файле Xvfb.service
Обновление:
добавлена переменная EXCLUDE в которой можно задать массив имен ИБ в кластере для исключения их из архивации.