Двухуровневая система бэкапов: GOLDEN (система) + NocoDB (данные).
Состав:
- ✅ GOLDEN бэкап - эталонная копия системы (еженедельно)
- ✅ NocoDB бэкап - ежедневные бэкапы БД (3:00 ночи)
- ✅ Автоочистка диска при загрузке (если < 5 GB)
- ✅ Ротация бэкапов (хранятся 30 дней)
- ✅ Сжатие бэкапов (gzip, ~10× уменьшение)
- ✅ Локальный → Удаленный (двойное хранение)
/1/ # НОВОЕ: Системные скрипты
├── backup/golden/ # GOLDEN бэкап (локально)
├── create_golden.sh # Создание GOLDEN
├── auto_cleanup_on_boot.sh # Автоочистка
└── README.md
/opt/claude-workspace/scripts/
├── backup_nocodb.sh # Скрипт бэкапа БД
├── restore_nocodb.sh # Скрипт восстановления БД
└── README_BACKUP.md # Этот файл
/opt/claude-workspace/infra/@backup.service/scripts/
└── restore-claude.sh # Recovery меню (start.sh → r)
/etc/systemd/system/
└── auto-cleanup-boot.service # Systemd служба автоочистки
/mnt/beget-s3/projects/pirotehnika/backups/
└── nocodb_*.sql.gz # Бэкапы БД
/mnt/beget-infra/dev-pro/backup/golden/ # GOLDEN клон (S3)
└── CLAUDE.md, start.sh, settings.json...
/mnt/beget-infra/dev-pro/backup/RECOVERY/ # Аварийное восстановление
└── claude.tar.gz, workspace.bundle...
Расписание: Каждое воскресенье в 4:00
Cron задача:
0 4 * * 0 /1/create_golden.sh >> /var/log/golden_backup.log 2>&1
Что включает:
- CLAUDE.md, start.sh, index.yaml
- settings.json, claude.json, credentials.json
- history.jsonl
- nocodb-latest.sql.gz
Хранение:
- Локально: /1/backup/golden/ (7.4 MB)
- S3: /mnt/beget-infra/dev-pro/backup/golden/ (клон)
Просмотр логов:
tail -f /var/log/golden_backup.log
Создание вручную:
/1/create_golden.sh
Расписание: Каждый день в 3:00 ночи
Cron задача:
0 3 * * * /opt/claude-workspace/scripts/backup_nocodb.sh >> /var/log/nocodb_backup.log 2>&1
Просмотр логов:
tail -f /var/log/nocodb_backup.log
/opt/claude-workspace/scripts/backup_nocodb.sh
Что делает:
1. Создаёт дамп PostgreSQL
2. Сжимает файл (gzip)
3. Удаляет бэкапы старше 30 дней
4. Показывает список последних бэкапов
Результат:
/mnt/beget-s3/projects/pirotehnika/backups/nocodb_20251227_194002.sql.gz
ls -lht /mnt/beget-s3/projects/pirotehnika/backups/
/opt/claude-workspace/scripts/restore_nocodb.sh <путь_к_бэкапу>
Пример:
/opt/claude-workspace/scripts/restore_nocodb.sh \
/mnt/beget-s3/projects/pirotehnika/backups/nocodb_20251227_194002.sql.gz
Что делает:
1. ✅ Создаёт резервную копию текущей БД (безопасность!)
2. ⚠️ Останавливает NocoDB
3. 🗑️ Удаляет текущую БД
4. 📥 Восстанавливает данные из бэкапа
5. ▶️ Запускает NocoDB
6. ✅ Проверяет работоспособность
ВНИМАНИЕ: Скрипт запросит подтверждение. Введите yes для продолжения.
Служба: auto-cleanup-boot.service
Что делает:
- Запускается ДО создания swap диска
- Проверяет свободное место
- Если < 5 GB → запускает безопасную очистку
Проверка статуса:
systemctl status auto-cleanup-boot.service
Просмотр логов:
cat /var/log/auto_cleanup.log
Ручной запуск:
/opt/claude-workspace/scripts/auto_cleanup_on_boot.sh
База данных:
- Размер: 90 MB (несжатая)
- Размер бэкапа: ~30 MB (SQL)
- Размер сжатого: ~3 MB (gzip)
Хранение:
- Расположение: /mnt/beget-s3/projects/pirotehnika/backups/
- Ротация: 30 дней
- Сжатие: gzip
crontab -e
Формат cron:
минута час день месяц день_недели команда
0 3 * * * /opt/claude-workspace/scripts/backup_nocodb.sh
Отредактируйте backup_nocodb.sh:
KEEP_DAYS=30 # Количество дней хранения
Отредактируйте auto_cleanup_on_boot.sh:
MIN_FREE_GB=5 # Минимум свободного места в GB
Резервная копия перед восстановлением
- Скрипт всегда создаёт safety backup перед восстановлением
- Файл: nocodb_before_restore_*.sql.gz
Проверка целостности
- После восстановления проверяется запуск NocoDB
- При ошибке автоматический откат к safety backup
Хранение
- Бэкапы на отдельном диске S3
- Защита от потери при сбое основного диска
# Найти вчерашний бэкап
ls -lt /mnt/beget-s3/projects/pirotehnika/backups/ | grep $(date -d yesterday +%Y%m%d)
# Восстановить
/opt/claude-workspace/scripts/restore_nocodb.sh \
/mnt/beget-s3/projects/pirotehnika/backups/nocodb_20251226_030001.sql.gz
scp /mnt/beget-s3/projects/pirotehnika/backups/nocodb_latest.sql.gz \
user@backup-server:/backups/
du -sh /mnt/beget-s3/projects/pirotehnika/backups/
# Проверка контейнера
docker ps | grep nocodb-products-db
# Проверка логов
tail -f /var/log/nocodb_backup.log
# Ручной запуск
/opt/claude-workspace/scripts/backup_nocodb.sh
# Проверка файла бэкапа
gunzip -t /mnt/beget-s3/projects/pirotehnika/backups/nocodb_*.sql.gz
# Проверка контейнера
docker ps | grep nocodb-products-db
# Проверка логов Docker
docker logs nocodb-products-db
# Проверка службы
systemctl status auto-cleanup-boot.service
# Просмотр логов
journalctl -u auto-cleanup-boot.service
# Ручной запуск
/opt/claude-workspace/scripts/auto_cleanup_on_boot.sh
# 1. Проверка cron
crontab -l | grep backup
# 2. Проверка systemd
systemctl is-enabled auto-cleanup-boot.service
# 3. Проверка последнего бэкапа
ls -lht /mnt/beget-s3/projects/pirotehnika/backups/ | head -5
# 4. Тестовый бэкап
/opt/claude-workspace/scripts/backup_nocodb.sh
# 5. Тестовая очистка (dry-run)
df -h /
/opt/claude-workspace/scripts/auto_cleanup_on_boot.sh
# 6. Проверка GOLDEN
ls -lh /1/backup/golden/
ls -lh /mnt/beget-infra/dev-pro/backup/golden/
# 7. Создать GOLDEN вручную
/1/create_golden.sh
Из стартового меню:
/opt/claude-workspace/start.sh
# Выбрать: r → Recovery
Или напрямую:
recovery
Приоритет проверки источников:
1. Локальный GOLDEN → /1/backup/golden/
2. Удаленный S3 → /mnt/beget-infra/dev-pro/backup/golden/
3. RECOVERY → /mnt/beget-infra/dev-pro/backup/RECOVERY/
Опции меню:
- 1 - Восстановить из GOLDEN ⭐
- 2 - Восстановить из архива (по дате)
- 3 - Восстановить из latest
- 4 - Переустановить npm
- 5 - Полное восстановление (GOLDEN + npm)
- 6 - Показать бэкапы
GOLDEN:
- CLAUDE.md
- start.sh
- index.yaml
- settings.json
- claude.json
- credentials.json
- history.jsonl
RECOVERY (если GOLDEN недоступен):
- claude.tar.gz (150 MB) - все настройки Claude
- workspace.bundle (1.3 MB) - Git репозиторий
- credentials.tar.gz - учетные данные
- env.tar.gz - переменные окружения
Recovery меню автоматически:
1. Проверяет локальный GOLDEN
2. Если недоступен → проверяет S3
3. Если и S3 недоступен → использует RECOVERY
4. Показывает источник восстановления
Версия: 2.0.0
Дата: 2025-12-27
Автор: Claude Code