Restore: перевод бэкапов на восстановленный сервер
CI / test (push) Successful in 1m36s
Release / release (push) Successful in 1m33s

Раньше восстановленная копия получала конфиг и таймер агента со старым токеном
(через категории etc и units), и бэкапы шли с двух серверов одновременно.

- конфиг и юниты агента больше не бэкапятся
- в конце restore спрашивает, сделать ли сервер основным: сервер бэкапов
  выпускает новый токен (POST /api/v1/restore/takeover), restore ставит
  агента; токен старого сервера отозван — его агент получает отказ
- --takeover / --no-takeover; без них — вопрос (с --yes — да)
- уведомление «Сервер восстановлен» в ntfy/Telegram

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-17 15:29:34 +03:00
1 parent 488abc2d34
commit 97c7051021
12 files changed
+195 -4

No files matched your search

+7 -1
View File
@@ -167,12 +167,18 @@ curl -fsSL https://backup.example.com/restore.sh | sudo bash -s -- --token bm_..
- systemd-сервисы включаются и запускаются так, как было на старом сервере;
- sshd проверяется (`sshd -t`) и перезапускается со старым конфигом и ключами хоста;
- свои systemd-юниты включаются и запускаются как на старом сервере.
6. В конце выводятся итог и список того, что осталось сделать: DNS, lighthouse, перезагрузка. Перезагрузка нужна в том числе для того, чтобы все сервисы перечитали восстановленные конфиги.
6. Restore спрашивает, сделать ли новый сервер **основным для бэкапов**:
- **да** (по умолчанию) — сервер бэкапов выпускает клиенту новый токен, на новый сервер ставится агент. Токен старого сервера отзывается: если тот ещё жив, его агент получает отказ, и бэкапы шлёт только новый;
- **нет** (`--no-takeover`) — пробное восстановление: агент не ставится, основным остаётся старый сервер.
Конфиг и юниты самого агента в бэкап не попадают, поэтому восстановленная копия не начнёт слать бэкапы со старым токеном.
7. В конце выводятся итог и список того, что осталось сделать: DNS, lighthouse, перезагрузка. Перезагрузка нужна в том числе для того, чтобы все сервисы перечитали восстановленные конфиги.
Флаги:
- `--backup ID` — конкретный бэкап;
- `--skip-heavy` — без MinIO Stoat;
- `--skip-provision` — повторный прогон без базовой подготовки;
- `--takeover` / `--no-takeover` — сделать сервер основным для бэкапов или нет, не спрашивая;
- `--user NAME`, `--yes`, `--keep-staging`.
## Что бэкапится