Интеграция с 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 — в документации разработчика.
Подготовка pre-скриптов¶
После выполнения этих шагов на сервере Staffcop будут созданы два pre-скрипта, которые создают снимок БД и архивируют конфигурацию.
Создайте директорию для хранения pre-скриптов RuBackup на сервере Staffcop.
sudo mkdir -p /opt/rubackup/scripts/staffcop
Создайте в директории 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
Создайте 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
Установите права для pre-скриптов.
sudo chmod +x /opt/rubackup/scripts/staffcop/*.sh sudo chown -R root:rubackup /opt/rubackup/scripts/staffcop
Настройте разрешения.
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 дней;
старые копии автоматически удаляются.
Поэтапно заполните поля соответствующими параметрами.
В разделе Параметры правила:
Имя правила: Staffcop_DB_Incremental;
Клиент: sce-ubuntu;
Тип ресурса: filesystem
Ресурс: /var/lib/staffcop/staffcop_backup;
Тип РК: Инкрементальное;
Скрипт при нормальном выполнении: /opt/rubackup/scripts/staffcop/backup_db_pre.sh
В разделе Расписание:
0 2 * * * (02:00 ежедневно)
В разделе Настройки:
Имя пула: StaffcopStorage;
Хранить резервные копии в течение: 30 дней.
Нажмите Применить.
Правило для резервного копирования конфигурации¶
После создания правила:
каждый день в 04:00 RuBackup запускает pre-скрипт, который архивирует конфигурацию;
RuBackup забирает архив и сохраняет в пул на 90 дней;
старые копии автоматически удаляются.
Поэтапно заполните поля соответствующими параметрами.
В разделе Параметры правила:
Имя правила: Staffcop_Config_Incremental;
Клиент: sce-ubuntu;
Тип ресурса: filesystem;
Ресурс: /var/lib/staffcop/staffcop_config_backup/latest.tar.gz;
Тип РК: Инкрементальное;
Скрипт при нормальном выполнении: /opt/rubackup/scripts/staffcop/backup_config_pre.sh
В разделе Расписание
0 4 * * * (04:00 ежедневно)
В разделе Настройки:
Имя пула: StaffcopStorage;
Хранить резервные копии в течение: 90 дней.
Нажмите Применить.
Запуск правил¶
В Глобальном расписании найдите в верзнем меню ползунок Включить. Активируйте, если он выключен. Убедитесь, что в списке правил оба правила имеют статуст Включено:
Восстановление бэкапа¶
Определите 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
Последнее обновление: 09.09.26