architect/_archive/2025-12-18-standards-cleanup/BACKUP-POLICY.md

Политика бэкапов и работы с кодом

Версия: 2.0.0
Дата: 2025-12-06


Disaster Recovery — ОДНА КНОПКА

# Если что-то сломалось — запусти это:
/root/fix-everything.sh

Скрипт покажет меню:
- Полное восстановление
- Только Claude Code credentials
- Только SSH ключи
- Только Workspace
- Только Crontab
- Создать бэкап сейчас


Схема защиты данных

DEV-PRO (91.218.142.168)
        │
        ▼
┌─────────────────────────────────────────────────────────────┐
│  $WORKSPACE/                                     │
│  └── .git/  ← L1: Локальная история (каждый коммит)        │
└─────────────────────────────────────────────────────────────┘
        │
        │ cron каждый час (:30)
        ▼
┌─────────────────────────────────────────────────────────────┐
│  /mnt/beget-s3/_backup/                                     │
│  └── *.bundle  ← L2: Beget S3 (24 последних)                │
└─────────────────────────────────────────────────────────────┘

        │ rclone sync на ПК

┌─────────────────────────────────────────────────────────────┐
│  Локальный ПК                                               │
│  └── *.bundle  ← L3: Офлайн копия                          │
└─────────────────────────────────────────────────────────────┘

Уровни защиты

Уровень Что Где Частота Хранение
L1 Git commits Локально Каждое изменение Вся история
L2 Bundle backup Beget S3 Каждый час 24 последних
L3 Офлайн копия Локальный ПК По sync По желанию

Автоматические задания (cron)

# Быстрый бэкап каждый час в :30
30 * * * * $WORKSPACE/infra/@dev-pro.server/solution/scripts/quick-backup.sh

# Ежедневный полный бэкап в 04:00
0 4 * * * $WORKSPACE/infra/@dev-pro.server/solution/scripts/git-backup-s3.sh

Правила работы

ПЕРЕД изменениями

# 1. Проверить текущее состояние
git status

# 2. Если есть незакоммиченные изменения — закоммитить
git add -A && git commit -m "описание"

ВО ВРЕМЯ работы

# Часто коммитить (каждое логическое изменение)
git add -A && git commit -m "feat: add feature X"

# Для критичных файлов — использовать safe-edit
./infra/@dev-pro.server/solution/scripts/safe-edit.sh path/to/file "описание"

ПОСЛЕ работы

# Проверить что всё закоммичено
git status

# При необходимости — принудительный бэкап
./infra/@dev-pro.server/solution/scripts/quick-backup.sh "manual: end of session"

Как откатиться

Откат одного файла

# К предыдущему коммиту
git checkout HEAD~1 -- path/to/file

# К конкретному коммиту
git checkout abc123 -- path/to/file

# Из safe-edit бэкапа
cp $WORKSPACE/.edit-backup/FILE_TIMESTAMP path/to/file

Откат всего репозитория

# К предыдущему состоянию (ОСТОРОЖНО!)
git reset --hard HEAD~5

# К конкретному коммиту
git reset --hard abc123

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

# Список бэкапов
ls -lht /mnt/beget-s3/_backup/*.bundle

# Клонирование из bundle
git clone /mnt/beget-s3/_backup/workspace-2025-12-06.bundle restored-workspace

Структура хранения

$WORKSPACE/
├── .git/                    ← Git репозиторий
├── .edit-log/               ← Лог редактирований
│   └── edit.log
├── .edit-backup/            ← Бэкапы файлов перед редактированием
│   └── file_name_TIMESTAMP
└── ...

/mnt/beget-s3/
├── _backup/                 ← Bundle бэкапы
│   ├── workspace-YYYY-MM-DD_HHMM.bundle
│   └── last-backup.txt
└── git-backup/              ← Полный git clone (legacy)

Скрипты

Скрипт Назначение
quick-backup.sh Быстрый коммит + bundle в S3
git-backup-s3.sh Полный ежедневный бэкап
safe-edit.sh Бэкап файла перед редактированием
disaster-recovery/backup-critical.sh Полный бэкап credentials + SSH + workspace
disaster-recovery/restore.sh Восстановление из бэкапа

Путь: $WORKSPACE/infra/@dev-pro.server/solution/scripts/

Утилита восстановления: /root/fix-everything.sh


Удалённые серверы

Принцип

На удалённых серверах (DEV-PROD-RF и др.) код деплоится через Docker/git clone.
Изменения НЕ делаются напрямую на сервере.

Порядок работы

  1. Изменения делаются на DEV-PRO
  2. Коммит в git
  3. Деплой на удалённый сервер (docker-compose pull/up)

Если нужно срочно поправить на удалённом

# 1. SSH на сервер
ssh root@45.144.177.147

# 2. Сделать бэкап вручную
cp file.conf file.conf.bak

# 3. Внести изменения
nano file.conf

# 4. Перенести изменения на DEV-PRO для коммита
scp root@45.144.177.147:/path/file.conf $WORKSPACE/path/

Логи

Лог Путь
Quick backup /var/log/quick-backup.log
Daily backup /var/log/git-backup-s3.log
Edit log $WORKSPACE/.edit-log/edit.log

Critical Backup (полный бэкап для восстановления)

Содержит всё необходимое для восстановления DEV-PRO с нуля:

Компонент Что Размер
Claude credentials ~/.claude/.credentials.json ~1KB
SSH ключи ~/.ssh/* ~50KB
Crontab Задания автоматизации ~1KB
Workspace Git bundle всего кода ~680MB

Хранение: /mnt/beget-s3/_backup/critical/ (7 последних)

Создание: Вручную или через /root/fix-everything.shb


Версия: 2.0.0