Restore: перевод бэкапов на восстановленный сервер
Раньше восстановленная копия получала конфиг и таймер агента со старым токеном (через категории 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:
1 parent
488abc2d34
commit
97c7051021
12 files changed
+195
-4
No files matched your search
+11
-1
@@ -34,7 +34,7 @@ const usage = `backupctl %s
|
||||
backupctl plan [--config ...] показать, что попадёт в бэкап
|
||||
|
||||
Новый сервер:
|
||||
backupctl restore --server URL --token TOKEN [--backup ID] [--skip-heavy] [--skip-provision]
|
||||
backupctl restore --server URL --token TOKEN [--backup ID] [--skip-heavy] [--skip-provision] [--takeover|--no-takeover]
|
||||
|
||||
backupctl version
|
||||
Флаги подкоманды: backupctl <команда> -h
|
||||
@@ -201,7 +201,17 @@ func runRestore(ctx context.Context, args []string) error {
|
||||
fs.BoolVar(&o.Yes, "yes", false, "не спрашивать подтверждение")
|
||||
fs.StringVar(&o.StagingDir, "staging", "", "каталог для временных файлов (по умолчанию /var/tmp/backup-restore)")
|
||||
fs.BoolVar(&o.KeepStaging, "keep-staging", false, "не удалять временные файлы (дампы) после восстановления")
|
||||
takeover := fs.Bool("takeover", false, "сделать этот сервер основным для бэкапов, не спрашивая (токен старого отзывается)")
|
||||
noTakeover := fs.Bool("no-takeover", false, "пробное восстановление: агента не ставить, бэкапы продолжает слать старый сервер")
|
||||
_ = fs.Parse(args)
|
||||
switch {
|
||||
case *takeover && *noTakeover:
|
||||
return errors.New("--takeover и --no-takeover вместе не указываются")
|
||||
case *takeover:
|
||||
o.Takeover = restore.TakeoverYes
|
||||
case *noTakeover:
|
||||
o.Takeover = restore.TakeoverNo
|
||||
}
|
||||
if o.Server == "" {
|
||||
return errors.New("нужен --server")
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user