Сохранение состояния перед внесением изменений

Дата: 2026-02-08
Статус: Обязательная практика

Правило

Перед внесением изменений в архитектуру, маршрутизацию, конфигурации контейнеров или сетевые правила (iptables) необходимо:

  1. Выполнить полное сохранение текущего состояния сервера.
  2. Закоммитить изменения в Git и выгрузить версию во внешний репозиторий.

Так можно в любой момент вернуться к предыдущей рабочей версии.

Проверка ресурсов диска перед сохранением

Перед запуском сохранения состояния убедитесь, что достаточно свободного места:

  • Корневой раздел / — для каталога config/snapshots/ (снимок конфигов обычно несколько мегабайт).
  • Раздел LXD (например /storage или пул default) — для LXD-снимков контейнеров (объём зависит от контейнеров).

Пример проверки:

df -h / /storage
du -sh /home/cdto/DENKART/config/snapshots

Типичные значения: свободно ≥ 5 ГБ на корне и достаточный запас в пуле LXD — снимки инкрементальны (ZFS/dir).

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

  • Текущие правила iptables (файл правил).
  • Копии скриптов и конфигов, которые будут меняться (например config/iptables/, config/nginx/, конфиги в контейнерах).
  • LXD-снимки контейнеров, затронутых изменениями (nginx-reverse-proxy, BBB-CONT22-1, docs-denkart, moodle).
  • Состояние репозитория в внешнем Git (origin).

Скрипты сохранения

Точка восстановления стабильной рабочей версии (анализ + конфиги + LXD-снимки + отчёт):

cd /home/cdto/DENKART/scripts
sudo ./create-restore-point.sh stable-restore-point

Подробная процедура и текущая стабильная точка: Точка восстановления — процедура.

Только конфиги и LXD-снимки (без отчёта):

cd /home/cdto/DENKART/scripts
./save-state-before-migration.sh [метка]

Пример перед переходом на nginx-reverse-proxy:

./save-state-before-migration.sh pre-nginx-proxy-migration

Создаётся директория config/snapshots/state-<метка>-<timestamp>/ с:

  • iptables.rules — текущие правила iptables
  • Копии config/iptables/*.sh, config/nginx/*.conf, конфигов haproxy
  • Конфиги из контейнеров (LXD show, haproxy.cfg, nginx — в т.ч. nginx-reverse-proxy, BBB-CONT22-1, docs-denkart, moodle)
  • LXD-снимки контейнеров с именем pre-proxy-YYYYMMDD-HHMM (nginx-reverse-proxy, docs-denkart, BBB-CONT22-1, moodle)

Выгрузка версии в репозиторий

После сохранения состояния:

cd /home/cdto/DENKART
git add -A
git status   # проверить список изменений
git commit -m "Состояние перед [описание изменений]. Снимок: state-<метка>-<timestamp>"
git push origin develop   # или текущая ветка

При необходимости создать тег версии для точки отката:

git tag -a v1.7-working-version-2026-02-15 -m "Рабочая версия DENKART, точка отката"
git push origin v1.7-working-version-2026-02-15

Откат к предыдущей версии

  • Конфиги и скрипты: восстановить из config/snapshots/state-<метка>-<timestamp>/ или из коммита/тега в Git.
  • iptables: sudo iptables-restore < config/snapshots/state-.../iptables.rules
  • Контейнер: lxc restore <container> pre-proxy-YYYYMMDD-HHMM
  • Код/документация: git checkout <тег или коммит>

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