Резервное копирование и восстановление
Ваше приложение работает в продакшене. Создайте резервную копию. rdc копирует целый репозиторий, приложение, его базу данных, файлы и конфигурацию, на вторую машину и возвращает его обратно, когда первая машина исчезает.
Этот урок не просто рассказывает об этом. Он проделывает это на двух реальных машинах и в конце считывает данные обратно.
Три шага
- Скопируйте репозиторий на машину, которую контролируете сами.
- Восстановите эту копию в отдельный репозиторий.
- Докажите это, считав свои данные обратно.
Шаг 1: Данные, которые должны уцелеть
rdc term connect my-app --command 'cat orders.txt' Сначала прочитайте данные из работающего repository. Одна строка в одном файле, чтобы итоговое доказательство было тем, что вы можете увидеть, а не тем, во что приходится просто верить.
Всё, что будет дальше, оценивается именно по этой строке. Вы снова увидите её на шаге 7.
Шаг 2: Копирование репозитория на вторую машину
rdc repo push my-app --to machine-12 Скопируйте repository на вторую машину. Первая отправка передаёт весь зашифрованный образ, на этом парке машин это примерно два гигабайта за тридцать сорок секунд, а каждая следующая отправка передаёт только изменённые блоки. На целевой машине оказывается резервный артефакт, а не второй работающий repository.
Урок по дельта-передаче показывает вживую инкрементальную часть этого процесса.
Артефакт – это ещё не работающий репозиторий, и именно поэтому существует шаг 5.
Шаг 3: Резервная машина получила данные
rdc repo list --machine machine-12 Спросите резервную машину, что она хранит. Копия отображается под собственным именем, определённым из вашего config. Вторая строка с необработанным идентификатором это сохранённая дельта-база, именно она делает следующую отправку на эту машину инкрементальной.
Шаг 4: Катастрофа
rdc repo down my-app --unmount Переведите основную машину в офлайн: остановите её сервисы и отмонтируйте зашифрованный том. С этого момента всё работает с копией на другой машине.
Шаг 5: Превращение артефакта в репозиторий
rdc backup restore my-app@machine-12 --as my-app-restored --machine machine-12 --yes Restore это команда, которая превращает отправленную копию в repository. Имя задаётся флагом --as, расположение флагом --machine, а подтверждение флагом --yes. Восстановление под новым именем ничего не перезаписывает, поэтому это безопасно практиковать на рабочей машине.
Проделайте это по одному разу на каждой машине, до того, как это понадобится. Машина, которая ни разу не прошла полный цикл туда-обратно, не защищена резервным копированием, какими бы гладкими ни выглядели её отправки, а восстановление под новым именем безопасно даже на машине, которая обслуживает реальный трафик.
Шаг 6: Монтирование
rdc repo up my-app-restored --no-start Смонтируйте восстановленный repository. Контейнеры намеренно остаются остановленными: здесь доказываются данные, а не приложение.
Шаг 7: Данные уцелели
rdc term connect my-app-restored --command 'cat orders.txt' Та же команда, что и на первом шаге, выполненная против repository, которого два шага назад не существовало. Строка возвращается байт в байт, с машины, которая никогда не была оригиналом.
Сравните эти две строки. Шаг 1, из исходного репозитория на основной машине:
order-1042 paid 2026-08-16
Шаг 7, из репозитория, которого две команды назад ещё не существовало, на другом оборудовании:
order-1042 paid 2026-08-16
Вот в чём суть этого урока. Не отчёт об успешном резервном копировании, а сама эта строка, считанная обратно с другой машины.
Шаг 8: Резервные копии, через которые можно откатиться назад
rdc backup snapshot my-app Копирование на другую машину даёт вам repository таким, какой он есть сейчас. Для истории, через которую можно откатиться назад, снимки отправляются в блочное хранилище: первый запуск загружает записанные блоки, каждый следующий загружает только то, что изменилось, а любой снимок можно восстановить независимо от других. Эта команда здесь только напечатана, а не выполнена, потому что загрузка требует сервера аккаунта и лицензированного repository, а у записи нет ни того, ни другого. На вашей собственной установке, с аккаунтом, это и есть нужная команда.
В вашей собственной установке, с учётной записью, полная последовательность выглядит так:
rdc backup snapshot my-app
rdc backup manifests my-app
rdc backup restore my-app --as my-app-yesterday --at <snapshot-id> --up
Руководство по резервному копированию и восстановлению полностью описывает снапшоты, хранение и проверку.
Далее: Сеть и домены.