TeaHost
Palworldpalworldбэкапыадминистрирование5 мин. чтения

Бэкап Palworld сервера: настройка сохранений

Бэкап Palworld сервера: какие файлы копировать, встроенный bIsUseBackupSaveData, AutoSaveSpan, скрипт с ротацией по cron и проверка восстановления мира

Кратко

Для бэкапа Palworld архивируйте папку Pal/Saved целиком: в SaveGames лежат Level.sav и папка Players с персонажами, без неё восстановление обнулит игроков. Перед копированием выполняйте Save, храните архивы 14 дней с ротацией и держите хотя бы одну копию вне сервера; встроенный bIsUseBackupSaveData — только дополнительный слой.

Мир Palworld держится на одном файле — Level.sav. Он повреждается от жёсткой остановки процесса, от нехватки места на диске, от неудачного обновления и от эксперимента с модами. Бэкап Palworld сервера — это не «на всякий случай», а обязательный элемент конфигурации: без него любой из перечисленных сценариев означает потерю сотни часов чужого прогресса. Разберём, что именно копировать, как это автоматизировать и почему бэкап без проверки восстановления — самообман.

Что копировать в бэкап Palworld сервера

Вся полезная нагрузка лежит в одной директории:

код
Pal/Saved/

Внутри два интересующих нас куска.

Сохранения мира:

код
Pal/Saved/SaveGames/0/<ID_мира>/

Здесь Level.sav (мир, базы, палы), LevelMeta.sav, WorldOption.sav и папка Players с файлами персонажей — по одному .sav на игрока. Именно Players теряют чаще всего: копируют один Level.sav, восстанавливают, и у всех обнуляются персонажи.

Конфигурация:

код
Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

На Windows-сборке — WindowsServer. Про структуру файла написано в статье про настройку PalWorldSettings.

Проще всего архивировать Pal/Saved целиком: несколько сотен мегабайт, зато без риска забыть половину.

Встроенный бэкап игры

В конфиге есть свой механизм:

код
bIsUseBackupSaveData=True,
AutoSaveSpan=180.000000

bIsUseBackupSaveData заставляет сервер складывать копии сохранений в папку backup рядом с сохранениями мира. AutoSaveSpan — интервал автосохранения в секундах.

По документации Pocketpair встроенный механизм хранит копии с такой ротацией:

ИнтервалСколько копий хранится
каждые 30 секунд5
каждые 10 минут6
каждый час12
каждые сутки7

Разработчики отдельно предупреждают, что опция увеличивает нагрузку на диск.

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

Про AutoSaveSpan отдельно: чем меньше значение, тем меньше потери при падении, но тем чаще на сервере с большим онлайном будет заметный фриз в момент записи. Компромисс на живом сервере — 300–600 секунд плюс внешний бэкап по расписанию.

Правильный порядок снятия бэкапа

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

Есть два подхода.

Надёжный: остановить сервер.

код
Broadcast Backup_in_60_seconds
Save
Shutdown 60 Backup

Дождаться завершения процесса, заархивировать, запустить обратно. Про эти команды — в статье про админ-команды Palworld.

Быстрый: принудительное сохранение без остановки.

Выполнить Save по RCON или REST API, подождать 5–10 секунд, затем архивировать. RCON Pocketpair объявила устаревшим, поэтому новые скрипты лучше сразу строить на REST API — подробности в статье про админ-команды. Сервер продолжает работать, но между Save и завершением архивирования может случиться следующее автосохранение. Риск невелик, поэтому большинство админов живёт именно так, а остановку делают раз в сутки вместе с перезапуском.

Скрипт с ротацией

Рабочий вариант для cron:

bash
#!/bin/bash
SRC=/home/palworld/server/Pal/Saved
DST=/home/palworld/backups
KEEP=14
RCON="/usr/local/bin/rcon -a 127.0.0.1:25575 -p ВАШ_ПАРОЛЬ"

mkdir -p $DST
$RCON "Save"
sleep 10

tar -czf $DST/palworld-$(date +%F-%H%M).tar.gz -C $(dirname $SRC) Saved

find $DST -name "palworld-*.tar.gz" -mtime +$KEEP -delete

Что здесь важно.

Save перед архивированием — обязателен, иначе в бэкап попадёт состояние получасовой давности.

Ротация через find -mtime не даёт диску заполниться. Четырнадцать дней — разумный горизонт: если проблему не заметили за две недели, старый мир всё равно уже не нужен.

Ставится это в планировщик задач. Периодичность зависит от активности: для сервера с ежедневной игрой — раз в 6 часов, для сервера выходного дня — раз в сутки.

Копия вне сервера

Бэкап на том же диске, что и сервер, защищает от кривых рук и не защищает от отказа железа. Минимум — забирать архивы наружу:

bash
rsync -az /home/palworld/backups/ user@backup-host:/storage/palworld/

Либо просто раз в неделю скачивать свежий архив себе по SFTP. Даже одна копия на домашнем компьютере переводит ситуацию из «всё потеряно» в «откатились на неделю».

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

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

Порядок жёсткий, отклонения ломают мир.

  1. Остановите сервер полностью.
  2. Переименуйте текущую SaveGames в SaveGames.broken — не удаляйте, она может пригодиться.
  3. Распакуйте архив на место.
  4. Проверьте, что ID мира в пути совпадает с тем, что был. Palworld идентифицирует мир по имени папки, и восстановление в директорию с другим ID даст «новый» пустой мир.
  5. Проверьте владельца файлов: если распаковывали от root, сервер под своим пользователем не сможет писать сохранения.
  6. Запустите и зайдите в игру.

Подробнее про работу с ID мира и переносом между машинами — в статье про перенос сохранений.

Отдельный случай: мир цел, но у конкретного игрока пропал персонаж. Тогда восстанавливать нужно не весь Level.sav, а один файл из Players/ — при этом Level.sav должен остаться текущим, иначе откатится весь сервер.

Проверьте, что бэкап рабочий

Непроверенный бэкап — это надежда, а не бэкап. Раз в месяц потратьте двадцать минут:

  1. Поднимите второй экземпляр сервера на другом порту.
  2. Разверните в него свежий архив.
  3. Зайдите и посмотрите, на месте ли базы и персонажи.

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

Частые вопросы

Сколько весит бэкап?

Сохранения мира Palworld растут вместе с количеством баз и палов: от 50 МБ на старте до нескольких сотен мегабайт на обжитом сервере. Архив ужимается примерно вдвое.

Можно ли делать бэкап без остановки сервера?

Да, через Save по RCON или REST API и небольшую паузу. Полностью безопасно только на остановленном сервере, но на практике связка Save + архив работает надёжно.

Мир повреждён, бэкапа нет. Что делать?

Проверьте папку backup в каталоге сохранений, если был включён bIsUseBackupSaveData. Если и там пусто — восстановить нечего, придётся начинать заново, см. сброс мира.

Нужен ли бэкап перед обновлением?

Обязательно. Порядок действий описан в статье про обновление сервера Palworld.

Коротко

Архивируйте Pal/Saved целиком, обязательно делайте Save перед снятием копии, держите ротацию на две недели и хотя бы одну копию вне сервера. Встроенный bIsUseBackupSaveData включите, но считайте его дополнением, а не основным механизмом. И раз в месяц реально разворачивайте архив — иначе вы не знаете, работает он или нет.

Если не хочется писать скрипты, автобэкапы по расписанию настраиваются прямо в панели — тарифы Palworld тут.