Интеграция с RuBackup

Интеграция Staffcop Enterprise с RuBackup позволяет настроить автоматическое резервное копирование базы данных и конфигурационных файлов.

RuBackup создает копии по расписанию и управляет их хранением через механизм Retention Policy: копии автоматически удаляются после истечения заданного срока. Все работает без ручного вмешательства после однократной настройки.

В этой статье мы:

  • установим на сервер Staffcop pre-скрипты, которые подготовят БД и конфигурацию для выгрузки в RuBackup;

  • настроим автоматическое создание бэкапов в RuBackup;

  • восстановим БД и конфигурацию из копии.

Быстрая справка

Уже настроили? Команды для восстановления бэкапа

ID резервной копии:

sudo -u rubackup rb_archives -l filesystem -v

Восстановление:

sudo -u rubackup rb_archives -x <ID_архива> -d /path/to/restore
sudo staffcop restore_db /path/to/restore/staffcop_backup

Настройка сервера и клиента RuBackup

Установите сервер RuBackup, на сервере Staffcop настройте клиент RuBackup.
Обеспечьте сетевое соединение между ними и выделите пул хранения для резервных копий Staffcop.

См.также

Подробная инструкция по установке и настройке RuBackup — в документации разработчика.

Подготовка pre-скриптов

После выполнения этих шагов на сервере Staffcop будут созданы два pre-скрипта, которые создают снимок БД и архивируют конфигурацию.

  1. Создайте директорию для хранения pre-скриптов RuBackup на сервере Staffcop.

sudo mkdir -p /opt/rubackup/scripts/staffcop
  1. Создайте в директории pre-скрипт для копирования базы данных.

sudo tee /opt/rubackup/scripts/staffcop/backup_db_pre.sh > /dev/null << 'EOF'
#!/bin/bash
set -euo pipefail
mkdir -p /var/log/rubackup
LOG="/var/log/rubackup/staffcop_db_backup.log"
STAFFCOP_CMD="/usr/bin/staffcop"

log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"; }

log "=== Pre-backup: Остановка и создание снимка БД ==="
sudo "$STAFFCOP_CMD" stop || log "WARNING: Остановка не удалась"
sleep 5

sudo "$STAFFCOP_CMD" backup_db -j 4
if [[ -z "$(ls -A /var/lib/staffcop/staffcop_backup 2>/dev/null)" ]]; then
log "ERROR: Снимок БД не создан!"; sudo "$STAFFCOP_CMD" start; exit 1
fi

sudo "$STAFFCOP_CMD" start || log "WARNING: Запуск не удался"
log "=== Pre-backup завершён ==="
exit 0
EOF
  1. Создайте pre-скрипт для копирования конфигурации.

sudo tee /opt/rubackup/scripts/staffcop/backup_config_pre.sh > /dev/null << 'EOF'
#!/bin/bash
set -euo pipefail
mkdir -p /var/log/rubackup /var/lib/staffcop/staffcop_config_backup
LOG="/var/log/rubackup/staffcop_config_backup.log"
CONFIG_DIRS=("/etc/staffcop")
STATIC_ARCHIVE="/var/lib/staffcop/staffcop_config_backup/latest.tar.gz"

log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"; }
log "=== Pre-backup: Архивация конфигурации ==="

EXISTING=()
for d in "${CONFIG_DIRS[@]}"; do [[ -d "$d" ]] && EXISTING+=("$d"); done
[[ ${#EXISTING[@]} -eq 0 ]] && { log "WARNING: Нет конфигов"; exit 0; }

tar -czpf "$STATIC_ARCHIVE" "${EXISTING[@]}" 2>/dev/null || log "WARNING: Часть файлов пропущена"
log "=== Pre-backup завершён ==="
exit 0
EOF
  1. Установите права для pre-скриптов.

sudo chmod +x /opt/rubackup/scripts/staffcop/*.sh
sudo chown -R root:rubackup /opt/rubackup/scripts/staffcop
  1. Настройте разрешения.

STAFFCOP_PATH=$(which staffcop)
sudo tee /etc/sudoers.d/rubackup-staffcop > /dev/null << EOF
rubackup ALL=(root) NOPASSWD: $STAFFCOP_PATH stop, $STAFFCOP_PATH start, $STAFFCOP_PATH backup_db
EOF
sudo chmod 440 /etc/sudoers.d/rubackup-staffcop

Скрипты готовы, но RuBackup пока не знает, когда и что с ними делать. Для этого создайте правила в глобальном расписании RuBackup.

Создание правила в глобальном расписании RuBackup

В веб-консоли RuBackup перейдите в Резервное копированиеГлобальное расписание+ Добавить.

Создайте два правила — для резервного копирования базы данных и для конфигурации.

Правило для резервного копирования базы данных

После создания правила:

  • каждый день в 02:00 RuBackup запускает pre-скрипт, который создает снимок БД;

  • RuBackup забирает снимок и сохраняет в пул на 30 дней;

  • старые копии автоматически удаляются.

Поэтапно заполните поля соответствующими параметрами.

  1. В разделе Параметры правила:

  • Имя правила: Staffcop_DB_Incremental;

  • Клиент: sce-ubuntu;

  • Тип ресурса: filesystem

  • Ресурс: /var/lib/staffcop/staffcop_backup;

  • Тип РК: Инкрементальное;

  • Скрипт при нормальном выполнении: /opt/rubackup/scripts/staffcop/backup_db_pre.sh

  1. В разделе Расписание:

  • 0 2 * * * (02:00 ежедневно)

  1. В разделе Настройки:

  • Имя пула: StaffcopStorage;

  • Хранить резервные копии в течение: 30 дней.

  1. Нажмите Применить.

../_images/rubackup_1.png

Правило для резервного копирования конфигурации

После создания правила:

  • каждый день в 04:00 RuBackup запускает pre-скрипт, который архивирует конфигурацию;

  • RuBackup забирает архив и сохраняет в пул на 90 дней;

  • старые копии автоматически удаляются.

Поэтапно заполните поля соответствующими параметрами.

  1. В разделе Параметры правила:

  • Имя правила: Staffcop_Config_Incremental;

  • Клиент: sce-ubuntu;

  • Тип ресурса: filesystem;

  • Ресурс: /var/lib/staffcop/staffcop_config_backup/latest.tar.gz;

  • Тип РК: Инкрементальное;

  • Скрипт при нормальном выполнении: /opt/rubackup/scripts/staffcop/backup_config_pre.sh

  1. В разделе Расписание

  • 0 4 * * * (04:00 ежедневно)

  1. В разделе Настройки:

  • Имя пула: StaffcopStorage;

  • Хранить резервные копии в течение: 90 дней.

  1. Нажмите Применить.

../_images/rubackup_2.png

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

В Глобальном расписании найдите в верзнем меню ползунок Включить. Активируйте, если он выключен. Убедитесь, что в списке правил оба правила имеют статуст Включено:

../_images/rubackup_3.png

Восстановление бэкапа

  1. Определите ID резервной копии.

sudo -u rubackup rb_archives -l filesystem -v
  1. Восстановите копию.

sudo -u rubackup rb_archives -x <ID_архива> -d /path/to/restore
sudo staffcop restore_db /path/to/restore/staffcop_backup

Последнее обновление: 09.09.26