Перейти к содержанию

Восстановление

Любое восстановление начинается на странице Восстановление: выберите раздел, найдите то, что хотите вернуть, и выберите копию. Одно окно восстанавливает любые записи и спрашивает по шагам. По умолчанию оригинал не меняется, потому что копия возвращается рядом с ним.

Страница «Восстановление» с разделами в виде плиток, поиском и карточкой «Стеки». Страница «Восстановление» с разделами в виде плиток, поиском и карточкой «Стеки».

Страница «Восстановление»

  • Разделы показывает разделы плитками, в каждой указано, у скольких записей есть снимки.
  • Что нужно вернуть? ищет среди записей выбранного раздела. В каждой строке виден её самый новый снимок, а Открыть запись ведёт на страницу записи.
  • Стеки перечисляют проекты Compose, в которых есть минимум два контейнера с копиями, например immich с его базой данных и Redis. Поиск находит стек по его имени или по любому из его контейнеров.
  • Работает сейчас показывает восстановление, пока оно идёт, в том числе после того, как вы закрыли его окно.
  • Аварийное запускает мастер аварийного восстановления для сервера, которого больше нет или который настроили заново, см. Мастер аварийного восстановления.
  • Другие источники содержит Из старой папки с копиями для копий другого BombVault и Импорт из плагина Appdata.Backup.

Страница «Восстановление» на телефоне. Страница «Восстановление» на телефоне.

Окно восстановления

Щелчок по записи открывает Восстановить с её названием. Окно спрашивает по шагам, и каждый шаг можно изменить до запуска:

  1. Копия: рекомендуемый снимок выбран заранее. Это самый новый, а после открытой аномалии последний перед ней. Копия, сделанная перед прежним восстановлением, хранит состояние, которое то восстановление заменило, поэтому она пропускается, если других нет. Более старые есть в списке, а Сравнить показывает, чем отличаются два из них.
  2. Источник: откуда берутся файлы, если снимок лежит в нескольких местах. Локально быстрее всего.
  3. Что: Все или Отдельные файлы, где вы отмечаете нужные файлы и папки.
  4. Куда: цель. Варианты зависят от вида записи:

    Цель Что делает
    Рядом с оригиналом По умолчанию. Контейнер возвращается вторым контейнером с именем <name>-restored и собственными портами, диски и NVRAM виртуальной машины попадают в папку <folder>-restored, а набор папок возвращается как <path>-restored. Оригинал не меняется.
    Заменить оригинал Перезаписывает то, что там сейчас. С Сначала сделать копию текущего состояния, что включено по умолчанию, BombVault сначала копирует сегодняшнее состояние, чтобы можно было вернуться. Если эта копия не удалась, восстановление не начинается. Это работает и для контейнера или виртуальной машины, которых на сервере уже нет: папки, которые восстановление перезаписывает, копируются отдельно.
    В папку Только файлы, для просмотра.
    Скачать как ZIP Флешка, для новой флешки. BombVault никогда не пишет на работающую флешку.
    В новый набор данных и Восстановить в сам набор данных Наборы данных ZFS, см. Наборы данных ZFS.
  5. Что произойдёт словами говорит, что сделает восстановление, а сцена показывает выбранную вами цель.

Прежде чем Восстановить разблокируется, окно проверяет, что репозиторий отвечает, что ключ его открывает, что снимок на месте и что в цели хватает места. Пока проверка не пройдена, кнопка остаётся заблокированной, а (i) на ней говорит, какая именно.

Окно также показывает, что восстановление меняет по сравнению с тем, что есть сейчас: новые, заменённые и неизменённые файлы со списком по запросу, а также файлы в цели, которых нет в копии и которые остаются на месте. restic вычисляет это как пробный прогон по размеру и времени изменения, не читая файлы, а очень большое дерево останавливается через 30 секунд и сообщает об этом. Для контейнеров и виртуальных машин оно сравнивает настройки, которые восстановление создаёт заново, с работающими: образ и тег, порты, имена переменных и тома, либо память, vCPU, диски и сеть.

Кое-что может остановить восстановление, прежде чем оно что-то изменит. Статический IP контейнера и опубликованные порты должны быть свободны, а его сеть должна существовать. В Unraid любое восстановление на месте отказывается от папки, которая не лежит на смонтированном пуле или общем ресурсе, потому что файлы попали бы в память и пропали бы после перезагрузки. Восстановление на месте называет каждый другой контейнер, чей bind mount заходит в папку, в которую оно пишет, например «этот путь также использует nextcloud-db», но это лишь предупреждение.

Несколько параметров появляются там, где они применимы: Оставить остановленным, чтобы осмотреть контейнер или виртуальную машину, прежде чем они снова запустятся, и Восстановить без GPU и среды выполнения на хосте, где нет GPU или среды выполнения, с которыми делалась копия.

Восстановление идёт в фоне. Окно можно закрыть, а ход выполнения виден и в разделе Работает сейчас. Долгое восстановление показывает процент и его можно отменить, а отменённое восстановление записывается как отменённое, а не как неудавшееся. Восстановление, отменённое, пока контейнер останавливается, или восстановление, которое не может удалить контейнер, ещё ничего не восстановило, поэтому контейнер запускается снова. Контейнер, который берёт тома у другого через --volumes-from, сохраняет их, а восстановление не начнётся, пока того другого контейнера нет.

Окно восстановления на шаге «Что» с отмеченными отдельными файлами. Окно восстановления на шаге «Что» с отмеченными отдельными файлами.

Куда попадает восстановление в папку

Папки для восстановления в разделе Настройки, Восстановление задают Папка восстановления по умолчанию, при желании с Подпапка для каждого раздела, и Исключение для одного раздела. Выбранные файлы ложатся прямо в целевую папку: один файл возвращается просто как этот файл, папка как папка с содержимым, а выбранное из разных папок сохраняет только свой путь ниже общей для них папки. BombVault отказывается от цели, которая не лежит на смонтированном хранилище, потому что в Unraid такая папка живёт в памяти и пропадает после перезагрузки, и никогда не восстанавливает в собственную папку с данными.

Пример: вернуть один файл

Кто-то вчера вечером отредактировал config.php в Nextcloud, и Nextcloud больше не запускается. В ночной копии в 03:00 хороший файл ещё есть. Вам нужен этот один файл, а не весь контейнер.

  1. Откройте Восстановление, выберите плитку Контейнеры и введите nextcloud в Что нужно вернуть?.
  2. Щёлкните nextcloud. Окно откроется с копией в 03:00, выбранной заранее как рекомендуемая.
  3. Оставьте Источник на Локально.
  4. В Что выберите Отдельные файлы. Раскройте папки до config и отметьте config.php.
  5. В Куда выберите В папку и укажите папку, например user/restore, то есть /mnt/user/restore на хосте.
  6. Прочитайте Что произойдёт: файл ляжет в целевую папку, а контейнер не изменится. Нажмите Восстановить.

Окно заканчивается словами Готово: файлы лежат в /mnt/user/restore. Файл вы найдёте как /mnt/user/restore/config.php, без папок над ним. Сравните его со сломанным, скопируйте обратно в папку appdata и перезапустите Nextcloud.

Чтобы вернуть файл сразу на место, выберите на шаге 5 Заменить оригинал. Оставьте Сначала сделать копию текущего состояния включённым, чтобы BombVault сохранил сломанное состояние перед записью, введите nextcloud для подтверждения и нажмите Восстановить. Nextcloud останавливается, пока выбранный файл записывается на своё место, а потом запускается снова. Записываются только отмеченные вами файлы. Восстановление, которое сорвалось на полпути, оставляет Nextcloud остановленным, потому что файл, который он читает, может быть записан наполовину, и запуск сообщает об этом.

Окно восстановления на шаге «Что произойдёт» с выбранным «Заменить оригинал». Окно восстановления на шаге «Что произойдёт» с выбранным «Заменить оригинал».

Что возвращается, по видам

Контейнеры создаются заново из сохранённого определения через API Docker, с их entrypoint, именем хоста, настройками остановки, томами и монтированиями, ограничениями ресурсов, драйвером журналов, настройками DNS и устаревшими ссылками. Контейнер возвращается на том образе, на котором работал в момент копирования, а не на более новом, скачанном позже, а недостающий образ сначала скачивается с учётными данными из Реестры контейнеров в разделе Настройки, Восстановление. Его GPU или среда выполнения (--gpus, --runtime=nvidia) тоже возвращаются. На хосте без этого драйвера или среды выполнения восстановление сообщает об этом и предлагает Восстановить без GPU и среды выполнения. Ссылка на контейнер, которого нет или который остановлен, когда восстановленный запускается, пропускается, и история запусков об этом сообщает. Восстановление, которое не удалось после удаления контейнера, возвращает его на место остановленным.

Копия может содержать папки, которые у контейнера больше не выбраны, например более старая копия, сделанная до того, как папка исчезла. Папка, которой нет или которая пуста, возвращается. Папка, в которой сейчас есть файлы, остаётся как есть, потому что вы могли снять с неё отметку намеренно, и проверка перед восстановлением и история запусков её называют. Верните её через Отдельные файлы или В папку.

Виртуальные машины получают XML заново по SSH, а их диски и UEFI NVRAM подключаются снова, даже если виртуальную машину удалили. О виртуальных машинах со снимками Unraid и дисками на zvol см. Копии виртуальных машин.

Наборы папок возвращаются с владельцем, правами и временными метками в том виде, как их хранит restic. Если цель отказывает только в смене владельца, как это делает /mnt/user, запуск заканчивается заметкой об этом. Затем BombVault сравнивает файлы с копией, и если какой-то файл не дошёл, восстановление не удаётся.

Флешка никогда не затрагивает работающий /boot. Восстановление здесь означает скачивание файла flash-<id>.zip, готового для Unraid USB Creator. ZIP содержит APP_KEY, поэтому для его скачивания нужны пароль для входа и вход на самом экземпляре. Окно также перечисляет плагины в каждой копии флешки с их версией и размером и может вернуть один из них на работающую флешку: его файл .plg, его папку в config/plugins и файлы пакетов, которые хранит копия. Unraid установит его при следующей загрузке или сразу в Plugins, Install Plugin.

Наборы данных ZFS имеют собственные цели и сохраняют свои свойства ZFS, см. Восстановление.

Автобэкап возвращается только через мастер аварийного восстановления, который перезапускает BombVault, так что живая база данных никогда не перезаписывается под открытым дескриптором.

Дампы баз данных никогда не загружаются обратно сами. Строку в разделе Дампы базы данных можно скачать, сохранить в папку или импортировать в только что запущенную базу данных. См. Дампы баз данных.

Восстановление нескольких записей сразу

На странице «Восстановление» выбирайте записи так же, как строки в списке резервных копий: Ctrl+щелчок, Shift+щелчок, Ctrl+A, долгое нажатие или Выбрать. Затем Восстановить открывает одно окно для всех них.

  • Какая резервная копия: Рекомендуется берёт для каждой записи ту копию, которую порекомендовало бы её собственное окно. Один момент для всех берёт для каждой записи её самую новую копию на выбранный вами Момент или раньше, например на вечер перед тем, как что-то пошло не так.
  • Куда: Рядом с оригиналом или Заменить оригинал, с Сначала сделать копию текущего состояния.

Каждая запись проверяется так же, как при одиночном восстановлении, а затем они выполняются одна за другой. Каждая строка показывает, как идёт её собственное: Ожидание, Выполняется, Восстановлено, Ошибка или Оставлено в стороне. Остановить после этой позволяет текущему восстановлению завершиться и больше ничего не запускает. Флешка приходит ZIP-файлом для скачивания, а наборы данных ZFS и автобэкап восстанавливаются по одному.

Восстановление нескольких записей: по строке на запись с её ходом выполнения. Восстановление нескольких записей: по строке на запись с её ходом выполнения.

Восстановление стека

Щелчок по стеку в карточке Стеки открывает Восстановить стек. Он восстанавливает каждого участника из его последней копии одновременно, а с Запустить в порядке зависимостей после восстановления запускает их в порядке depends_on: сначала базы данных и кэши, затем приложение. Если папки проекта участника нет в выбранном вами месте, окно предлагает вместо этого состояние из Локально.

Сначала BombVault проверяет участников и папку проекта, и восстановление, которое не могло бы сработать, ничего не меняет. Иначе он останавливает работающих участников, приложения раньше их баз данных, затем записывает папку проекта, затем восстанавливает участников. Если папка проекта не вернулась, участники всё равно восстанавливаются, но остаются остановленными, потому что папка может быть записана наполовину, а именно в ней обычно лежат bind mount участников. Запуск каждого участника сообщает об этом.

База данных, у которой есть только дампы и нет копии файлов и чей контейнер и именованный том исчезли, возвращается без своих данных. Проверка сообщает об этом до восстановления. База остаётся остановленной, как и контейнеры, которые от неё зависят, чтобы ни одно приложение не запустило свою первоначальную настройку на пустой базе данных. Запустите её, импортируйте дамп и запустите остальные. См. Дампы баз данных.

Другие источники

  • Из старой папки с копиями открывает репозиторий другого BombVault, который больше не работает, на диске или во внешнем месте назначения, с его набором для восстановления или введённым APP_KEY. Сеанс только для чтения и живёт только в памяти. См. Из старой папки с копиями.
  • Импорт из плагина Appdata.Backup читает папку копий плагина. Каждый архив контейнера становится точкой восстановления этого контейнера с датой, когда его сделал плагин. Архивы, импортированные ранее, пропускаются, а сами архивы только читаются. Контейнеру сначала нужна одна копия в BombVault, чтобы у восстановления было его определение. Хранение не трогает импортированные точки восстановления, так что удалите одну сами, когда она больше не нужна.

После восстановления

Копия, восстановленная рядом с оригиналом, показывается в разделе Резервные копии как исключённая, так что не считается открытой задачей. Добавьте её в расписание, если хотите её сохранить. Контейнер или виртуальная машина, которые работали в момент копирования, возвращаются работающими, а остановленные остаются остановленными. В Unraid восстановленный контейнер снова появляется на вкладке Docker как обычное изменяемое приложение, а виртуальная машина в VM Manager с подключёнными дисками и NVRAM.