RE:NODE

Руководства10 мин чтения

Бэкапы сервера Palworld и сброс мира

Как правильно делать backup выделенного сервера Palworld, восстанавливать Level.sav из копии и сбрасывать мир целиком или частично, не теряя настройки и бан-лист.

0 прочтений

Весь мир сервера Palworld - это одна папка: Pal/Saved/SaveGames/0/<WorldID>/. Сделайте копию этой папки - после принудительного сохранения или при остановленном сервере - вместе с Pal/Saved/Config/LinuxServer/ и бан-листом, и вы сможете восстановить сервер с нуля. Восстановление - это то же копирование в обратную сторону при остановленном сервере. Сброс мира - это либо удаление этой папки (все начинают заново), либо переключение сервера на новую (старый мир остаётся на диске). Собственные копии игры от bIsUseBackupSaveData полезны, но лежат на том же диске, что и сохранение, поэтому резервными копиями в важном смысле они не являются. Остальная часть статьи - подробности: что хранит каждый файл, как получить целостную копию с работающего сервера, как восстанавливать и как сбрасывать мир, не выбросив то, что хотелось сохранить.

Что лежит в папке мира Palworld#

Выделенный сервер хранит каждый мир в отдельной папке внутри Pal/Saved/SaveGames/0/, с именем из 32-символьного шестнадцатеричного ID. Сервер загружает тот мир, который указан в GameUserSettings.ini как DedicatedServerName.

Файл или папкаЧто хранитЕсли потерять
Level.savМир: каждая база, постройка, пал, сундук, гильдия, уровень и инвентарь персонажейВы потеряли мир
LevelMeta.savИмя мира и метаданныеСервер пересоздаст его; мелочь
Players/<id>.savДанные персонажа, привязанные к ID каждого игрокаЭтот игрок начинает заново
WorldOption.savНастройки, зашитые при создании мира в кооперативеОбычно ничего - на сервере его всё равно стоит удалить
backup/Сменяющиеся резервные копии самой игрыНичего, если только они вам не понадобились

За пределами папки мира есть ещё три вещи, которые стоит сохранять:

  • Pal/Saved/Config/LinuxServer/PalWorldSettings.ini - все ваши игровые настройки. (WindowsServer вместо LinuxServer на Windows.)
  • Pal/Saved/Config/LinuxServer/GameUserSettings.ini - какой мир загружать.
  • Pal/Saved/SaveGames/banlist.txt - бан-лист сервера, если вы кого-то банили.

Level.sav - самый важный и самый хрупкий файл. Это единый сжатый файл, в котором хранится почти всё, поэтому мир легко копировать, а повреждение оказывается полным: половину испорченного Level.sav не восстановить. Именно это свойство и определяет все рекомендации ниже. В статье память сервера Palworld объясняется, почему этот же файл растёт за время жизни сервера.

Как получить целостную копию#

Palworld записывает мир по таймеру, который задаёт AutoSaveSpan в PalWorldSettings.ini. Между сохранениями свежие изменения существуют только в памяти. Копия, сделанная при работающем сервере, - это состояние на момент последнего сохранения, а копия, сделанная во время сохранения, может захватить недописанный файл. Есть два способа получить хорошую копию:

Остановить сервер, потом копировать. Самый простой и безопасный. Штатная остановка записывает мир перед выходом, так что файлы на диске полные и актуальные. Для ночного backup в час, когда никто не играет, это правильный способ.

Принудительно сохранить, подождать, потом копировать. Если остановить сервер нельзя, сначала дайте команду сохранения и дайте ей время закончиться. В игре или через RCON это команда Save; через REST API - POST на /v1/api/save:

bash
$ curl -X POST -u admin:YOUR_ADMIN_PASSWORD http://203.0.113.10:8212/v1/api/save

REST API требует RESTAPIEnabled=True и слушает RESTAPIPort, по умолчанию 8212; имя пользователя - admin, пароль - ваш AdminPassword. На большом мире сохранение длится несколько секунд, так что подождите хотя бы тридцать, прежде чем начинать копирование. Оба интерфейса разобраны в статье команды администратора Palworld и RCON.

Встроенные копии: что делает bIsUseBackupSaveData#

bIsUseBackupSaveData=True в PalWorldSettings.ini заставляет сервер хранить сменяющиеся копии мира в папке backup внутри папки мира, во вложенных папках с отметкой времени. Сколько копий он хранит и как часто их делает, менялось от версии к версии, так что смотрите в папку на своём сервере, а не полагайтесь на цифру из гайда.

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

Резервными копиями они не являются по причинам, которые в общем виде разобраны в статье резервные копии, которые действительно восстанавливаются:

  • Они лежат на том же диске, что и то, что они защищают. Отказавший диск, удалённый сервер или ошибка в файловом менеджере заберут и их.
  • Они сменяются. Проблема, которую вы заметили через несколько дней, может уже быть скопирована поверх каждой из них.
  • Их возраст - это период ротации, а он может составлять минуты, а не сутки до обновления, к которым вы на самом деле хотите вернуться.

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

Порядок резервного копирования, который выдерживает реальность#

Разумный порядок для сервера группы:

  1. Ежедневная копия в час, когда никто не играет. Сначала остановите или сохраните, затем скопируйте папку мира, папку конфигурации и бан-лист.
  2. Ручная копия перед каждым обновлением игры. Обновления Palworld не раз меняли формат сохранения. Если обновление пойдёт не так, вам нужно сохранение до него и версия сервера, которая ещё может его прочитать.
  3. Ручная копия перед любым большим изменением - новые моды, переделка настроек, host save fix, переезд мира.
  4. Храните как минимум неделю. Проблемы не всегда замечают в тот же день.
  5. Иногда восстанавливайте одну из копий. На запасном сервере или локально. Копия, которую никто не восстанавливал, - это гипотеза.

В панели это расписание, а не рутина. В RE:NODE вкладка Schedules принимает cron-выражение и выполняет упорядоченные задачи с задержками - консольная команда, backup, действие с питанием, - так что ежедневный порядок может быть таким: «объявить предупреждение, подождать, Save, подождать, сделать backup, перезапустить». Резервные копии хранятся не на той машине, которую защищают, восстанавливаются одной кнопкой, их можно скачать и заблокировать, чтобы ротация никогда не удалила копию, сделанную перед большим обновлением. Больше примеров - в статье запланированные задачи, которые стоит завести.

code
Schedule: nightly backup and restart       cron: 0 5 * * *  1. command   Broadcast Restart_in_5_minutes  2. wait      240 s  3. command   Save  4. wait      60 s  5. backup  6. power     restart

Старые сборки выделенного сервера плохо обрабатывали пробелы в сообщениях Broadcast, поэтому в примерах часто встречаются подчёркивания. Текущие сборки справляются с пробелами лучше; проверьте на своей.

Как восстановить мир#

Берётся ли копия из вашего собственного backup или из папки backup самой игры, порядок одинаковый.

  1. Остановите сервер. Не перезапустите, а остановите, и дождитесь, пока он полностью выключится.
  2. Отодвиньте текущую папку мира в сторону, а не удаляйте её. Переименуйте в <WorldID>.broken или скачайте. Если окажется, что вы восстановили не ту копию, у вас останется то, с чего вы начинали.
  3. Положите копию на место как Pal/Saved/SaveGames/0/<WorldID>/, с тем же именем папки, на которое указывает DedicatedServerName.
  4. Из собственных копий игры скопируйте содержимое вложенной папки с отметкой времени (Level.sav и остальное) в папку мира поверх текущих файлов.
  5. Запустите сервер и проверьте консоль. Затем зайдите и посмотрите на что-нибудь недавнее, что вы помните, чтобы убедиться, что вы там, где думаете.

Если восстановленный мир загружается, но у игроков нет персонажей, значит, их файлы Players/*.sav не были восстановлены; восстанавливайте всю папку, а не только Level.sav. Если сервер генерирует новый мир, не совпадает имя папки или DedicatedServerName.

Полный сброс мира#

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

Удалить мир. Остановите сервер, сделайте копию папки мира (она вам ещё понадобится, хотя бы из ностальгии), удалите её и запустите сервер. Если DedicatedServerName указывает на папку, которой больше нет, или пустую, сервер создаст новый мир с новым ID. После первого запуска проверьте GameUserSettings.ini; сервер записывает туда новый ID.

Сохранить старый мир и переключиться. Остановите сервер, очистите DedicatedServerName или задайте несуществующее значение и запустите. Сгенерируется новый мир, а старый останется нетронутым в своей папке. Чтобы потом переключиться обратно, верните его ID. Это лучший вариант для сервера с достаточным местом на диске, потому что сброс остаётся обратимым, пока вы храните папку.

Что полный сброс сохраняет и что теряет:

СохраняетсяТеряется
PalWorldSettings.ini - все рейты и правилаКаждый персонаж, уровень и открытые технологии
Бан-листКаждый пал, база и предмет
Пароль администратора, настройки RCON и RESTГильдии
Имя сервера и выделенные портыИсследованная карта

Поддерживаемого способа перенести персонажей в новый мир нет. Уровень персонажа, инвентарь и палы хранятся в Level.sav, а не только в файлах игроков, поэтому копирование Players/ в новый мир ничей прогресс не перенесёт. Скажите об этом игрокам до сброса, а не после.

Частичный сброс#

Иногда проблема не в мире, а в одной гильдии, одном игроке или одной заброшенной базе. Инструменты Palworld для частичного сброса ограничены, так что выбирайте правильный.

  • Заброшенные гильдии. AutoResetGuildNoOnlinePlayers=True вместе с AutoResetGuildTimeNoOnlinePlayers в часах заставляет сервер удалять базы гильдий, в которых никого не было в сети столько времени. Это самый чистый способ не дать сохранению публичного сервера заполниться базами, к которым никто не вернётся. Выберите щедрый срок - скорее неделю, чем три дня, - и объявите о нём.
  • Один игрок начинает заново. Если при остановленном сервере удалить файл игрока Players/<id>.sav, он вернётся к созданию персонажа. Базы его гильдии останутся; предметы и палы, которые принадлежали ему, могут оказаться в странном состоянии. Сначала сделайте копию.
  • Уборка мусора на земле. Уменьшите DropItemMaxNum и DropItemAliveMaxHours, чтобы выброшенные предметы исчезали быстрее. Это ничего не сбрасывает, но убирает один из источников медленной деградации.
  • Мягкий сброс одной области. Обычными средствами невозможен. Редакторы сохранений существуют, но ручная правка Level.sav - самый быстрый способ его повредить; делайте это только на копии и только если у вас есть проверенный backup.

Как планировать сбросы на публичном сервере#

На сервере с постоянным сообществом сброс - это событие, а не несчастный случай. Чтобы всё прошло хорошо, помогает вот что:

  • Объявляйте минимум за неделю, с датой и временем, и публикуйте там, где люди это увидят. О формулировках - в статье как объявлять техработы и простои.
  • Привязывайте сбросы к большим обновлениям, когда это возможно. Крупное контентное обновление - как раз тот момент, когда большинство игроков и так хочет начать заново.
  • Храните папку старого мира какое-то время после сброса - для жалоб («у меня в palbox был легендарный пал») и для неизбежного «а можно вернуться».
  • Меняйте настройки при сбросе, а не между сбросами. Изменение рейтов на живом мире делает прежний прогресс либо дешёвым, либо напрасным; сброс - чистый момент для корректировок.

Если что-то пошло не так#

Восстановление загрузило не тот мир. DedicatedServerName указывает на другую папку. Проверьте GameUserSettings.ini и имя папки.

Восстановил, а мир вернулся к состоянию до восстановления. Сервер работал, пока вы копировали файлы, и его следующее сохранение их перезаписало. Остановите сервер, восстановите снова, потом запустите.

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

Резервные копии огромные. Level.sav вырос, а папка backup игры хранит несколько его копий. Если места мало, исключите backup/ из своих копий; ваши копии её заменяют.

Сброс оставил старый мир. Сервер загрузил его, потому что DedicatedServerName по-прежнему называет его папку. Очистите значение или переместите папку.

После восстановления игроки потеряли персонажей, а базы на месте. Восстановили только Level.sav. Восстановите папку Players из той же копии.

FAQ#

Где лежат файлы сохранений сервера Palworld?

В Pal/Saved/SaveGames/0/<WorldID>/ внутри установки сервера, по одной папке на мир. Level.sav в этой папке - сам мир; в Players/ по одному файлу на персонажа.

Делает ли Palworld резервные копии автоматически?

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

Можно ли сбросить мир, но сохранить всех персонажей?

Поддерживаемыми средствами - нет. Прогресс персонажей хранится в Level.sav вместе с миром. Новый мир означает, что все начинают с первого уровня.

Как сбросить только одного игрока?

Остановите сервер и удалите файл этого игрока из Players/. При следующем входе он создаст нового персонажа. Сначала сделайте копию, потому что его предметы и палы могут оказаться в несогласованном состоянии.

Как часто делать резервные копии сервера Palworld?

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


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000