Runbook — бэкапы и восстановление
Audience: operator. Что бэкапится, как восстановить, и где известные пробелы.
Что бэкапится
| Данные | Куда | Механизм | Частота |
|---|---|---|---|
Ops-мозг CTO (memory + agent role-prompts + CLAUDE.md) | kontinuum/claude-ops (GitLab) | cron на head: /root/bin/sync-claude-ops.sh | каждые 27 мин |
| Секреты (шифротекст) | kontinuum/secrets (GitLab) | ручной commit/push (см. секреты) | при изменении |
Корневой age-ключ ~/.git-key | менеджер паролей (off-machine) | ручной — обязателен | при выпуске |
| Исходники (все submodule) | GitLab + клоны на worker/head | git | при коммите |
Ops-мозг — детали
/root/bin/sync-claude-ops.sh (на head, cron */27):
rsyncmemory/ + agents/ +CLAUDE.mdс head наworker:~/claude-ops;- на воркере
git add -A; если есть изменения — commit + push вkontinuum/claude-ops. Идемпотентно: нет изменений → нет коммита. - Лог:
/root/.claude-ops-sync.logна head.
Проверка:
crontab -l | grep sync-claude-ops # на head: строка */27
tail -5 /root/.claude-ops-sync.log # последние прогоны
ssh worker 'cd ~/claude-ops && git log -1 --oneline'Восстановление ops-мозга: склонировать kontinuum/claude-ops и разложить memory/, agents/, CLAUDE.md по местам на новой head.
Восстановление секретов
- Поставить
age, восстановить~/.git-keyиз менеджера паролей вworker:~/.git-key(chmod 600). - Склонировать
kontinuum/secrets→~/secrets-repo. age -d -i ~/.git-key <файл>.ageпо необходимости.
Без шага 1 шаги 2–3 бесполезны — шифротекст нерасшифруем.
Recovery quick-refs
ssh worker не отвечает
reverse-SSH воркера самовосстанавливается: head-tunnel.service на воркере (ServerAlive* + Restart=always через autossh) переподнимает туннель worker→head. Если воркер физически жив, туннель вернётся сам.
- Last resort: laptop-jump — временный обходной путь, выводится из эксплуатации, на него нельзя закладываться.
Диск воркера /home (252 GB) забит → ломается CI
Хронический источник падений CI.
ssh worker 'df -h /home'- НЕ удалять активный CI cargo-target:
/home/gitlab-runner/cargo-target. - Чистить вместо него: лишние дубли cargo-target, эмуляторные qcow2,
/tmp. Эмуляторы убивать по PID.
Туннели лежат
См. runbook туннелей — почти всегда systemctl restart нужного юнита на нужном хосте.
✅ Бэкап данных самого GitLab (закрыто, #78)
Ранее это был известный пробел. Сейчас данные инстанса GitLab (БД, issues, MR, CI-конфиг, registry, LFS, артефакты) бэкапятся ежедневно + вывозятся off-host на worker, вместе с отдельно сохраняемыми gitlab-secrets.json + gitlab.rb.
См. runbook: GitLab бэкап и восстановление — что/куда/расписание/retention и точная процедура restore (секреты ДО gitlab-backup restore).