Точка восстановления — процедура и места хранения

Дата: 2026-02-10
Статус: Рекомендуемая практика перед крупными изменениями и для фиксации «удобной» рабочей версии

Назначение

Создать именованную точку восстановления в текущем рабочем состоянии сервера DENKART, чтобы при необходимости быстро вернуться к этой версии (конфиги, контейнеры, код).

Текущая точка восстановления (2026-02-15)

Параметр Значение
Метка working-version-2026-02-15
Дата создания 2026-02-15
Снимок конфигов config/snapshots/state-working-version-2026-02-15-2026-02-15-234455/
Git-тег v1.7-working-version-2026-02-15
Восстановление iptables sudo iptables-restore < config/snapshots/state-working-version-2026-02-15-2026-02-15-234455/iptables.rules
Восстановление контейнера Имя снимка — в MANIFEST.txt внутри снимка; LXD-снимок pre-proxy-20260215-2344 (nginx-reverse-proxy, docs-denkart, BBB-CONT22-1, moodle)
Откат кода git checkout v1.7-working-version-2026-02-15

Скрипт save-state сохраняет конфиги и создаёт LXD-снимки для контейнеров: nginx-reverse-proxy, docs-denkart, BBB-CONT22-1, moodle.


Предыдущие точки восстановления

Рабочая версия (2026-02-14)

Параметр Значение
Метка working-version-2026-02-14
Снимок конфигов config/snapshots/state-working-version-2026-02-14-*
Git-тег v1.6-working-version-2026-02-14

Промежуточная рабочая версия (2026-02-12)

Параметр Значение
Метка intermediate-working-moodle-lms-2026-02-12
Описание Moodle 4.5 lms.cdto.life введён в эксплуатацию, маршрутизация исправлена
Снимок конфигов config/snapshots/state-intermediate-working-moodle-lms-2026-02-12-2026-02-12-053047/
Документ INTERMEDIATE-WORKING-VERSION-2026-02-12.md
LXD-снимок pre-proxy-20260212-0530 (nginx-reverse-proxy, BBB-CONT22-1, docs-denkart)

Стабильная точка (2026-02-11)

Параметр Значение
Метка stable-restore-point
Снимок конфигов config/snapshots/state-stable-restore-point-2026-02-11-000445/
Отчёт RESTORE-POINT-REPORT-2026-02-11-000415.md
LXD-снимок pre-proxy-20260211-0004 (nginx-reverse-proxy, BBB-CONT22-1, docs-denkart)
Восстановление iptables sudo iptables-restore < config/snapshots/state-stable-restore-point-2026-02-11-000445/iptables.rules
Восстановление контейнера lxc restore <container> pre-proxy-20260211-0004

После коммита и тега в Git откат кода: git checkout <тег> (тег создать по шагу 3 ниже).

Что сохраняется

Компонент Где хранится Восстановление
Конфиги (iptables, nginx, haproxy, скрипты) config/snapshots/state-<метка>-<timestamp>/ Копирование в целевые каталоги, sudo iptables-restore < .../iptables.rules
Снимки LXD контейнеров (nginx-reverse-proxy, docs-denkart, BBB-CONT22-1, moodle) Внутри LXD (имя: pre-proxy-YYYYMMDD-HHMM или см. MANIFEST.txt) lxc restore <container> <snapshot-name>
Код и документация Git (коммит + тег) git checkout <тег или коммит>
Полная копия системы (опционально) /D/backups/full-backup-YYYYMMDD-HHMMSS/ или копия в именованную папку Восстановление по инструкции в backup.md

Пошаговая процедура

1. Создать точку восстановления (анализ + сохранение состояния)

На хосте выполнить:

cd /home/cdto/DENKART/scripts
sudo ./create-restore-point.sh working-baseline-2026-02-10

Метка может быть любой (например working-baseline-2026-02-10 или pre-upgrade). Скрипт:

  • Соберёт в отчёт: список контейнеров LXD, версии компонентов, failed-юниты, ошибки/предупреждения из journal за 24 ч, таймеры бэкапов, доступность доменов.
  • Вызовет save-state-before-migration.sh с этой меткой (конфиги + LXD-снимки).
  • Запишет отчёт в docs/operations/RESTORE-POINT-REPORT-<timestamp>.md.

2. Просмотреть отчёт и логи

less /home/cdto/DENKART/docs/operations/RESTORE-POINT-REPORT-*.md

При необходимости устранить критические ошибки в логах до того, как считать эту точку «эталонной».

На что обращать внимание в отчёте: нулевое число failed-юнитов (раздел 3) и доступность всех трёх доменов (раздел 7) — хорошие признаки. Записи уровня err в journal (раздел 4) могут включать: OOM (нехватка памяти), сбои gnome-keyring/gdm (рабочий стол), ошибки post-install linux-headers (известная проблема, см. docs/troubleshooting), шум SSH — это не обязательно мешает работе серверных приложений (BBB, Cockpit, docs).

3. Закоммитить и создать тег в Git

cd /home/cdto/DENKART
git add -A
git status
git commit -m "Точка восстановления: working-baseline-2026-02-10"
git tag -a v1.7-working-version-2026-02-15 -m "Рабочая версия сервера DENKART, все приложения доступны"
git push origin develop
git push origin v1.7-working-version-2026-02-15

Так можно в любой момент откатить код и документацию: git checkout v1.7-working-version-2026-02-15 (или нужный тег).

4. Полная копия системы (по желанию)

Для быстрого восстановления «всей системы» в образ текущего состояния:

  • Вариант A. Запустить полный бэкап (если с последнего прошло ≥ 10 дней, скрипт создаст новый):

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

Результат: /D/backups/full-backup-YYYYMMDD-HHMMSS/.

  • Вариант B. Сохранить текущий полный бэкап под именем точки восстановления (чтобы его не затерла ротация):

bash LAST=$(ls -dt /D/backups/full-backup-* 2>/dev/null | head -1) if [ -n "$LAST" ]; then sudo cp -a "$LAST" "/D/backups/restore-point-working-baseline-2026-02-10" fi

Документация по восстановлению из полного бэкапа: backup.md.

Места хранения (сводка)

Назначение Путь
Снимок конфигов и манифест config/snapshots/state-<метка>-<timestamp>/
Отчёт по точке восстановления docs/operations/RESTORE-POINT-REPORT-<timestamp>.md
LXD-снимки хранятся в LXD, имя см. в MANIFEST.txt внутри снимка конфигов
Полный бэкап сервера /D/backups/full-backup-YYYYMMDD-HHMMSS/
Именованная копия полного бэкапа /D/backups/restore-point-<метка>-YYYY-MM-DD/ (при ручном копировании)
Код/документация Git, тег вида v1.7-working-version-2026-02-15

Быстрый откат к точке восстановления

  1. Конфиги и сеть: восстановить файлы из config/snapshots/state-<метка>-<timestamp>/, применить iptables:
    sudo iptables-restore < config/snapshots/state-.../iptables.rules
  2. Контейнеры: для каждого контейнера:
    lxc restore <container> <snapshot-name> (имя снимка — в MANIFEST.txt).
  3. Код:
    git checkout v1.7-working-version-2026-02-15 (или нужный тег/коммит).
  4. Полное восстановление системы: по инструкции в backup.md из каталога полного бэкапа.

Ручная проверка логов (при необходимости)

Перед созданием точки восстановления или для углублённого разбора можно выполнить:

# Неуспешно завершившиеся юниты
systemctl list-units --state=failed

# Ошибки в journal за последние 24 часа
sudo journalctl -p err --since "24 hours ago" --no-pager

# Предупреждения за сутки
sudo journalctl -p warning --since "24 hours ago" --no-pager

# Конкретный сервис (например, nginx, backup-full-server)
journalctl -u nginx -n 50 --no-pager
journalctl -u backup-full-server.service -n 50 --no-pager

# Таймеры бэкапов
systemctl list-timers --all | grep -E backup|cleanup

Связанные документы