Rust Руководство

Map wipe и blueprint wipe в Rust: какие данные сохранять

Разберите map wipe и blueprint wipe Rust: какие файлы относятся к миру и чертежам, как сохранить полную копию и выбрать объём сброса.

Map wipe и blueprint wipe в Rust: какие данные сохранять

До работы с файлами запишите, что именно обещано игрокам: новая карта с сохранением изученных чертежей, сброс чертежей с сохранением мира или оба изменения. Формулировка «полный вайп» слишком расплывчата для выбора файлов, особенно если плагины отдельно хранят экономику и прогрессию.

Речь о самостоятельно администрируемом Rust PC на Ubuntu: служба и пользователь rust, установка /srv/rust/game, identity friends, как в руководстве по запуску. Сначала уточните свои пути и место для резервной копии. Если обновление игры меняет совместимость данных, сохранить прежний прогресс удаётся не всегда.

Разделите правила вайпа и требования обновления#

Для объявления обслуживания подходят три конкретных варианта:

  • Map wipe: сбросить мир и его объекты, сохранить совместимый прогресс чертежей.
  • Blueprint wipe: сбросить изученные чертежи, сохранить совместимое состояние мира.
  • Оба сброса: применить оба пункта, отдельно решить судьбу прогрессии плагинов.

Прежний seed не сохраняет постройки, если сброшен сейв мира. Изменение отображаемой даты вайпа или тегов сервера тоже не очищает данные. Расписание администратора и совместимость очередного обновления игры — отдельные условия.

Перед обещанием сохранить чертежи прочитайте описание текущего обновления. Facepunch может потребовать сброс, и наличие старой базы ещё не означает, что новая сборка её использует. Не переименовывайте суффиксы протокола ради загрузки несовместимых данных. Справочник файлов identity прямо предостерегает от обхода обязательной несовместимости сейвов через переименование.

Найдите файлы действующего identity#

Приватно сверьте identity и параметры карты в службе и конфигурации, затем получите список файлов:

bash
sudo find /srv/rust/game/server/friends -maxdepth 1 -type f -printf '%f\n' | sort

Семейство .sav хранит сохранённый мир и его объекты. .map содержит рельеф: постройки игроков нужно искать не в нём. За изученные чертежи отвечают базы player.blueprints; полное имя содержит суффиксы, зависящие от версии. Связанные журналы относятся к своей базе. Записывайте фактические имена, не переносите номер протокола из старой инструкции.

Это отвечает на вопрос из старого обсуждения вайпа только карты: для нового мира с прежними чертежами не нужно удалять все базы игроков. Сохраните cfg, настройки администраторов и банов, файлы привязки и другое независимое состояние, если их сброс отдельно не включён в план.

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

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

Остановите запись и сохраните установку#

Объявите перерыв и приостановите внешние расписания перезапуска. Дождитесь обычного сохранения, остановите службу и проверьте оставшиеся процессы:

bash
sudo systemctl stop rust
sudo systemctl show rust -p ActiveState -p SubState -p MainPID
sudo pgrep -u rust -x RustDedicated

Отсутствие совпадения у pgrep обычно означает код 1. Если остался неожиданный процесс, разберитесь с ним до копирования. Остановленная служба не исключает второй запуск, который пишет в тот же каталог. Внешнюю базу плагинов тоже сохраняйте после остановки записи и по процедуре её разработчика.

Пример ниже архивирует весь /srv/rust за пределами этого дерева. Заранее проверьте свободное место: в архив попадёт установленная игра, а не только небольшие сейвы. Определение службы храните приватно — оно может содержать секреты:

bash
(
  set -e
  sudo install -d -m 0700 /srv/backups/rust
  backup="/srv/backups/rust/pre-wipe-$(date -u +%Y%m%dT%H%M%SZ)-$$.tar.gz"
  sudo tar --acls --xattrs -C /srv -czf "$backup" rust
  sudo chmod 0600 "$backup"
  sudo tar -tzf "$backup" >/dev/null
  sudo sha256sum "$backup"
  sudo sh -c 'systemctl cat rust > "$1"' sh "$backup.service"
  sudo chmod 0600 "$backup.service"
)

GNU tar сохраняет выбранное дерево; дополнительные параметры захватывают расширенные метаданные там, где это поддерживается. Чтение списка архива подтверждает его читаемость, но не заменяет проверку восстановления. Скопируйте архив на другую машину, сохраните сведения о соответствующей сборке, отдельно добавьте конфигурацию и хранилища за пределами /srv/rust. При ошибке копирования дальнейшие изменения отменяются.

Переместите только выбранный набор#

Создайте новый приватный каталог карантина вне рабочего identity. Пока сервер остановлен, используйте доверенный файловый менеджер или отдельные операции перемещения с проверенными полными именами. Запишите исходный путь и назначение каждого файла. Команды массового удаления по маске из форума здесь не нужны.

Для вайпа только карты вынесите .sav нужного мира и соседние резервные версии этого сейва из рабочего identity. Оставшаяся старая копия может неожиданно повлиять на восстановление при загрузке. Базу чертежей и связанные с ней файлы оставьте. Если рельеф должен сохраниться, файл карты можно оставить. Для другого рельефа запишите новый seed, размер или выбор пользовательской карты; старый ресурс карты перемещайте лишь тогда, когда это действительно нужно для выбранного изменения или повторной генерации.

Для вайпа только чертежей переместите выбранную базу чертежей вместе с существующими соответствующими журналами и sidecar-файлами общей памяти. Сейв мира, его копии и карту сохраните. player.tokens, player.states или все player.* не заменяют точный выбор базы чертежей. Если нужны оба сброса, объедините эти два набора и отдельно согласованные изменения плагинов.

Проверьте результат через игрока#

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

До открытия обычного доступа проверьте сохранение и запланированный перезапуск. Если выбрана неверная область сброса, прекратите новые действия и используйте полный совместимый снимок для контролируемого восстановления. Архив и карантин нужны до окончания проверки. Попытка наугад объединить старую базу с уже созданной новой лишь добавляет ещё одну проблему восстановления.