Резервное копирование

Текущее состояние

Дата проверки: 2026-01-23
Статус: ✅ Автоматизация настроена и работает

Подробнее: backup-current-status.md - детальный анализ текущего состояния резервного копирования

Краткое резюме:

Автоматизация (Systemd Timers):
- backup-daily.timer - Ежедневно в 02:00 (общий ежедневный бэкап)
- backup-full-server.timer - Ежедневно в 02:00 (полный бэкап сервера)
- backup-postgres.timer - Ежедневно в 03:00 (бэкап PostgreSQL)
- backup-lxd-snapshots.timer - Еженедельно в воскресенье в 04:00 (снапшоты LXD)
- backup-bbb.timer - Ежедневно в 03:00 (бэкап BigBlueButton)

Доступные скрипты:
- backup-full-server.sh - Полное резервное копирование
- backup-postgres.sh - Резервное копирование PostgreSQL
- backup-project.sh - Резервное копирование проекта
- snapshot-before-changes.sh - Снапшоты LXD контейнеров

📁 Места хранения:
- /D/backups/ - основное хранилище бэкапов
- full-backup-YYYYMMDD-HHMMSS/ - полные бэкапы сервера
- bbb/ - бэкапы BigBlueButton
- postgresql/ - бэкапы PostgreSQL
- lxd-snapshots/ - снапшоты LXD контейнеров
- /var/backups/postgresql/ - дампы PostgreSQL (ежедневные)

Последние бэкапы:
- Полный бэкап: 2026-01-22 00:10 (4.9 GB)
- PostgreSQL: 2026-01-23 09:53 (регулярные ежедневные)
- BBB: регулярные ежедневные бэкапы

Стратегия резервного копирования

Что копировать

  • Конфигурационные файлы (/etc/)
  • Базы данных (PostgreSQL дампы; Moodle — MariaDB в контейнере moodle, см. ниже)
  • Файлы веб-сайтов (/var/www/), в т.ч. moodledata (файловое хранилище Moodle в контейнере moodle)
  • Пользовательские данные
  • Логи (опционально)

Частота копирования

  • Ежедневно: базы данных и конфигурации
  • Еженедельно: полный бэкап
  • Ежемесячно: архивные копии

Резервное копирование баз данных

PostgreSQL

# Создание дампа
sudo -u postgres pg_dump mydb > backup_$(date +%Y%m%d).sql

# Восстановление
sudo -u postgres psql mydb < backup_20240115.sql

Автоматический скрипт

См. scripts/backup-postgres.sh

Moodle (контейнер moodle)

  • БД: MariaDB, база moodle. Дамп: lxc exec moodle -- mysqldump -u moodle -p moodle > /D/backups/moodle/moodle_db_$(date +%Y%m%d).sql (пароль из /root/moodle_db_password.txt в контейнере).
  • Файлы: каталог moodledata (путь в config.php Moodle, обычно /var/www/moodledata): lxc exec moodle -- tar czf - -C /var/www moodledata | cat > /D/backups/moodle/moodledata_$(date +%Y%m%d).tar.gz.
  • Включить в регламент ежедневного или еженедельного бэкапа по решению проекта. Чек-лист: moodle-phase7-postinstall-checklist.md.

Резервное копирование файлов

Конфигурации

sudo tar -czf config-backup-$(date +%Y%m%d).tar.gz /etc/nginx /etc/postgresql

Веб-сайты

sudo tar -czf www-backup-$(date +%Y%m%d).tar.gz /var/www/

Хранение резервных копий

Локальное хранилище

  • Директория: /backup/ или /var/backups/
  • Ротация: хранение последних 7 дней ежедневных, 4 недель еженедельных

Удаленное хранилище

  • Облачное хранилище (S3, Google Cloud Storage)
  • Другой сервер по SSH
  • Внешний диск

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

Процедура восстановления

  1. Остановить сервисы
  2. Восстановить файлы из бэкапа
  3. Восстановить базы данных
  4. Проверить конфигурации
  5. Запустить сервисы
  6. Проверить работоспособность

Автоматизация

Статус: Автоматическое резервное копирование настроено и работает через Systemd Timers

Настроенные таймеры

Все таймеры активны и включены (enabled):

Таймер Расписание Описание Статус
backup-daily.timer Ежедневно в 02:00 Общий ежедневный бэкап ✅ Active
backup-full-server.timer Ежедневно в 02:00 Полный бэкап сервера ✅ Active
backup-postgres.timer Ежедневно в 03:00 Бэкап PostgreSQL ✅ Active
backup-lxd-snapshots.timer Воскресенье в 04:00 Снапшоты LXD контейнеров ✅ Active
backup-bbb.timer Ежедневно в 03:00 Бэкап BigBlueButton ✅ Active

Управление таймерами

# Просмотр статуса всех таймеров
systemctl status backup-*.timer

# Просмотр следующего запуска
systemctl list-timers backup-*.timer

# Ручной запуск бэкапа (без ожидания таймера)
sudo systemctl start backup-full-server.service
sudo systemctl start backup-postgres.service

# Просмотр логов последнего выполнения
journalctl -u backup-full-server.service -n 50
journalctl -u backup-postgres.service -n 50

Ретеншн (хранение бэкапов)

  • Полные бэкапы: 21 день (автоматическая очистка старых)
  • PostgreSQL: Хранятся в /var/backups/postgresql/ (ручная очистка)
  • BBB: Хранятся в /D/backups/bbb/
  • LXD Snapshots: Хранятся в /D/backups/lxd-snapshots/

Текущие скрипты резервного копирования

1. Полное резервное копирование сервера

sudo /home/cdto/DENKART/scripts/backup-full-server.sh

Что копирует:
- LXD контейнеры (экспорт)
- Конфигурации LXD (profiles, сети, storage pools)
- Системные конфигурации (network, SSH, firewall)
- Данные проекта DENKART

Где хранится: /D/backups/full-backup-YYYYMMDD-HHMMSS/
Ретеншн: 21 день

2. Резервное копирование PostgreSQL

# Все базы данных
sudo /home/cdto/DENKART/scripts/backup-postgres.sh

# Конкретная база данных
sudo /home/cdto/DENKART/scripts/backup-postgres.sh mydb

Где хранится: /var/backups/postgresql/
Ретеншн: Нет автоматической очистки

3. Резервное копирование проекта

./scripts/backup-project.sh /home/cdto/DENKART

Где хранится: /var/backups/project/
Ретеншн: 7 дней

Заметки

  • Последний полный бэкап: 2026-01-06 12:41 (размер: 2.2 GB)
  • Следующий шаг: Настроить автоматическое резервное копирование через systemd timers
  • Рекомендация: Ежедневные бэкапы баз данных, еженедельные полные бэкапы