Сохранение состояния перед внесением изменений
Дата: 2026-02-08
Статус: Обязательная практика
Правило
Перед внесением изменений в архитектуру, маршрутизацию, конфигурации контейнеров или сетевые правила (iptables) необходимо:
- Выполнить полное сохранение текущего состояния сервера.
- Закоммитить изменения в 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 <тег или коммит>