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

Восстановление повреждённого мира Valheim: ошибка «Error loading world file» и откат .db/.fwl

Пошаговое руководство по исправлению ошибки «Error loading world file» в Valheim: поиск битых файлов .db и .fwl, откат к резервным копиям .old и ручное восстановление мира на сервере Linux.

Восстановление повреждённого мира Valheim: ошибка «Error loading world file» и откат .db/.fwl

Критический сбой «Error loading world file: check backups» при запуске сервера Valheim — одна из самых частых аварийных ситуаций, с которой сталкиваются администраторы. Игра внезапно отказывается загружать мир, сбрасывает карту до дефолтного состояния или аварийно завершает процесс сервера при инициализации базы данных мира. В большинстве случаев это происходит из-за некорректного завершения процесса во время записи автосейва, нехватки места на диске или падения виртуальной машины.

В этом руководстве разобран регламент диагностики повреждений мира Valheim, процесс изоляции повреждённых файлов и пошаговый откат к резервным копиям .old и снапшотам на Linux-сервере.

Причины повреждения файлов .db и .fwl в Valheim#

Мир Valheim состоит из двух взаимосвязанных файлов с одинаковым именем:

  1. <WorldName>.db — бинарный файл базы данных, содержащий все построенные игроками структуры, изменённый ландшафт, сундуки, инвентарь и состояние сущностей.
  2. <WorldName>.fwl — метаданные мира: сид генерации, версия движка мира и системные флаги.

Сервер Valheim выполняет процедуру сохранения каждые 20 минут. Во время сохранения движок производит запись во временные структуры. Если в этот момент сервер получает сигнал аварийного завершения (kill -9), сервер перезагружается по OOM-killer или на диске заканчивается свободное место, файл .db или .fwl усекается до 0 байт либо теряет контрольные байты заголовка.

При запуске сервера движок сверяет заголовок и контрольную сумму. Если файл повреждён или не совпадает версия между .db и .fwl, в логе появляется ошибка: Error loading world file: <WorldName>, check backups!

Локализация каталогов сохранений и журналов на Linux#

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

bash
sudo systemctl stop valheim
sudo systemctl status valheim --no-pager

На современных версиях выделенного сервера Valheim файлы сохранений располагаются в каталоге пользователя, от имени которого запущена служба (обычно valheim или steam):

bash
WORLD_DIR="$HOME/.config/unity3d/IronGate/Valheim/worlds_local"
test -d "$WORLD_DIR" || WORLD_DIR="$HOME/.config/unity3d/IronGate/Valheim/worlds"
echo "Active world directory: $WORLD_DIR"

Каталог автоматических резервных копий Valheim по умолчанию располагается рядом:

bash
BACKUP_DIR="$HOME/.config/unity3d/IronGate/Valheim/backups/worlds"
ls -la "$BACKUP_DIR"

Проверьте системный журнал сервера на наличие сообщений об ошибках сериализации:

bash
journalctl -u valheim -n 50 --no-pager | grep -i "world"

Проверка целостности и изоляция повреждённых файлов#

Перейдите в каталог сохранений и проверьте размеры файлов мира:

bash
cd "$WORLD_DIR"
ls -lh

Если размер файла .db или .fwl равен 0 байт либо существенно меньше предыдущих значений (например, 1 КБ вместо привычных 80 МБ), файл повреждён.

Никогда не удаляйте битые файлы сразу. Создайте карантинный каталог и переместите текущие файлы мира в него:

bash
QUARANTINE_DIR="$WORLD_DIR/corrupted_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$QUARANTINE_DIR"

mv Dedicated.db Dedicated.fwl "$QUARANTINE_DIR/"

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

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

Восстановление мира из файлов .old и каталога backups#

Движок Valheim хранит предыдущее успешное состояние мира прямо в рабочей папке сохранений под расширением .old:

bash
ls -lh "$WORLD_DIR"/Dedicated.*.old

Если файлы Dedicated.db.old и Dedicated.fwl.old присутствуют и имеют ненулевой размер, скопируйте их на место основных файлов:

bash
cp "$WORLD_DIR/Dedicated.db.old" "$WORLD_DIR/Dedicated.db"
cp "$WORLD_DIR/Dedicated.fwl.old" "$WORLD_DIR/Dedicated.fwl"

Если файлы .old также повреждены или отсутствуют, воспользуйтесь каталогом backups/worlds/, куда движок складывает архивы с метками времени:

bash
ls -lh "$BACKUP_DIR"/Dedicated_backup_*.db

Найдите самый свежий снапшот с ненулевым размером и восстановите пару файлов:

bash
LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/Dedicated_backup_*.db | head -n 1 | sed 's/\.db$//')
echo "Restoring from: $LATEST_BACKUP"

cp "${LATEST_BACKUP}.db" "$WORLD_DIR/Dedicated.db"
cp "${LATEST_BACKUP}.fwl" "$WORLD_DIR/Dedicated.fwl"

Назначение прав доступа и запуск выделенного сервера#

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

bash
sudo chown -R valheim:valheim "$HOME/.config/unity3d/IronGate/Valheim"
sudo chmod 644 "$WORLD_DIR"/Dedicated.db "$WORLD_DIR"/Dedicated.fwl

Запустите службу сервера и отслеживайте вывод инициализации в реальном времени:

bash
sudo systemctl start valheim
sudo journalctl -u valheim -f --no-pager

Убедитесь, что в журнале появилась строка успешной загрузки мира: World Dedicated loadedПосле этого сервер готов принимать подключения игроков.

Источники#