Пользу резервной копии Valheim подтверждает загрузка полного мира в отдельном каталоге: нужные постройки должны остаться на месте и после перезапуска. Архив, который удалось открыть, доказывает только исправность самого архива. Ниже — остановленный снимок, проверка состава и репетиция восстановления до замены рабочих данных.
Пример использует Linux-схему из инструкции по установке: службу valheim, каталог сохранений /srv/valheim/data и launcher /srv/valheim/start.sh. Если ваша схема отличается, замените все три значения согласованно. Разбираем стабильную ветку Valheim 1.0; источники проверены 18 октября 2026 года.
Сохраняйте актуальную структуру целиком#
В Valheim 1.0 мир хранится каталогом с несколькими чанками. В публикациях разработчика описано изменение мировых сохранений при прежней схеме персонажей. Скрипт, выбирающий только *.db и *.fwl, способен пропустить действующий мир. Копируйте весь настроенный корень сохранений, включая списки доступа и каталоги автоматических копий.
Отдельно сохраните launcher, конфигурацию службы, установленную версию и необходимые моды с настройками. Пример ниже архивирует данные и launcher; подходящий runtime нужно зафиксировать до обновления отдельно. Серверный снимок не содержит всех персонажей игроков, хранящихся у них отдельно. Для сценария, требующего отката персонажей, участники сохраняют собственные копии.
В обсуждении после выхода 1.0 администратор спрашивает, как теперь загрузить бэкап. Это повод заранее проверить восстановление, а не рассчитывать на старую инструкцию про два файла.
До копирования остановите всех писателей#
Предупредите игроков и исключите новые подключения. Изучите systemctl cat valheim: unit из прежней инструкции запрашивает мягкую остановку через SIGINT. Для другой службы сначала проверьте корректность её остановки. Затем:
sudo systemctl stop valheim
sudo systemctl show valheim -p ActiveState -p MainPID -p Result
sudo journalctl -u valheim --since '10 minutes ago' --no-pager
Продолжайте после завершённого сохранения и мягкого выхода, состояния inactive и MainPID=0. Тайм-аут с принудительным убийством не равнозначен такому результату. Проверьте, что вручную запущенная копия или контейнер не продолжают писать в тот же каталог. Отсутствие PID у одной службы не заменяет проверку фактической схемы запуска.
Создайте закрытый архив с контрольной суммой#
Выполните блок целиком. Проверка дерева отклоняет ссылки и специальные файлы, вместо перехода по ссылкам за пределы выбранных данных. Для установки, использующей симлинки, сначала нужен отдельно проверенный экспорт обычных файлов.
(
set -e
test "$(sudo systemctl show valheim -p ActiveState --value)" = inactive
test "$(sudo systemctl show valheim -p MainPID --value)" = 0
sudo test ! -L /var/backups
sudo test ! -L /var/backups/valheim
sudo install -d -o root -g root -m 700 /var/backups/valheim
sudo python3 - <<'PYTREE'
from pathlib import Path
for root in [Path('/srv/valheim/data'), Path('/srv/valheim/start.sh')]:
for item in [root, *root.rglob('*')] if root.is_dir() else [root]:
if item.is_symlink() or not (item.is_file() or item.is_dir()):
raise SystemExit('Require a complete regular-file tree without links')
PYTREE
valheim_snapshot=$(sudo mktemp -d /var/backups/valheim/snapshot-XXXXXXXX)
sudo tar -czf "$valheim_snapshot/server.tar.gz" -C /srv/valheim data start.sh
sudo sh -c 'systemctl cat valheim > "$1/unit.txt"' sh "$valheim_snapshot"
sudo sh -c 'cd "$1" && sha256sum server.tar.gz > server.sha256' sh "$valheim_snapshot"
sudo sh -c 'cd "$1" && sha256sum -c server.sha256' sh "$valheim_snapshot"
sudo tar -tzf "$valheim_snapshot/server.tar.gz" >/dev/null
printf '%s\n' "$valheim_snapshot"
)
Запишите выведенный каталог и время снимка. Unit и launcher могут содержать секреты, поэтому сохраняйте закрытый доступ. Перенесите готовый снимок в отдельное защищённое хранилище и проверьте сумму уже там. Архив на том же диске помогает при ошибке администратора, но не при потере самого диска. Если вы только делали бэкап, после завершения копирования можно запустить существующую службу.
Сначала восстановите в новый каталог#
Для репетиции подставьте фактический каталог снимка вместо REPLACE_SNAPSHOT_DIRECTORY. На время теста на том же хосте рабочая служба остаётся остановленной. Команды распаковывают данные в новый закрытый каталог, а не поверх существующего мира:
(
set -e
valheim_snapshot=/var/backups/valheim/REPLACE_SNAPSHOT_DIRECTORY
test "$(sudo systemctl show valheim -p ActiveState --value)" = inactive
test "$(sudo systemctl show valheim -p MainPID --value)" = 0
sudo test -d "$valheim_snapshot"
sudo test ! -L "$valheim_snapshot"
sudo sh -c 'cd "$1" && sha256sum -c server.sha256' sh "$valheim_snapshot"
valheim_restore=$(sudo mktemp -d /srv/valheim/restore-XXXXXXXX)
sudo tar --extract --gzip --file "$valheim_snapshot/server.tar.gz" --directory "$valheim_restore" --no-same-owner --no-same-permissions
sudo chown -R valheim:valheim "$valheim_restore"
sudo chmod -R u+rwX,go-rwx "$valheim_restore"
printf '%s\n' "$valheim_restore"
)
Используйте созданный выше архив либо другой доверенный и проверенный снимок. Это не инструкция для распаковки произвольных загруженных архивов от root. Сравните восстановленное дерево с составом архива и убедитесь, что нужный мир присутствует. Пустой staging-каталог и правильная сумма сами по себе не доказывают полноту исходного отбора файлов.
Подтвердите восстановление до замены рабочего мира#
Редактируйте только восстановленный launcher. Направьте -savedir на data внутри выведенного каталога, сохраните точное имя мира и используйте совместимый сохранённый runtime. Оставьте необходимые настройки библиотек и моды. Выделите тестовый endpoint с отдельным доступом либо при остановленной рабочей службе используйте её endpoint в согласованном окне. Скрытая запись в списке не изолирует тест: ограничьте доступ тестовыми игроками.
После проверки путей и доступа в восстановленном launcher замените REPLACE_RESTORE_DIRECTORY именем выведенного каталога и запустите копию в foreground от существующего игрового пользователя. Сохраняются рабочий каталог из инструкции установки и заданное launcher окружение библиотек. До запуска runtime в /srv/valheim/server должен соответствовать записанной совместимой версии снимка:
(
set -e
valheim_restore=/srv/valheim/REPLACE_RESTORE_DIRECTORY
test "$(sudo systemctl show valheim -p ActiveState --value)" = inactive
test "$(sudo systemctl show valheim -p MainPID --value)" = 0
sudo test -d "$valheim_restore/data"
sudo test -f "$valheim_restore/start.sh"
sudo test ! -L "$valheim_restore/start.sh"
sudo -u valheim -H /bin/bash -c 'cd /srv/valheim/server && exec /bin/bash "$1/start.sh"' valheim-restore "$valheim_restore"
)
Держите терминал открытым во время теста. Для остановки нажмите Ctrl+C, дождитесь завершённого мягкого сохранения и выхода, затем подтвердите отсутствие тестового процесса до нового запуска или переключения. Одновременно запускать valheim.service нельзя. Изучите тестовый вывод и войдите совместимым игровым клиентом. Посетите знакомые постройки, проверьте сундуки, сделайте небольшое тестовое изменение, мягко остановите копию и загрузите её снова. Изменение должно сохраниться. Не запустите по ошибке исходный launcher, который по-прежнему указывает на рабочие данные.
При настоящем переключении остановите оба процесса, сохраните действующее дерево под новым именем и установите выбранное восстановленное дерево целиком. При необходимости верните подходящие launcher и runtime. Не распаковывайте поверх существующих чанков и не соединяйте две папки бэкапов. Сохраняйте вытесненные данные до успешного входа и проверки перезапуска рабочего сервера.
В описании инцидента конвертации Iron Gate поясняет потерю прогресса при возврате старого снимка; патч 1.0.17 исправлял ошибку потери объектов, связанную с чанками. Исправный старый бэкап восстанавливает свой момент времени, а не последующий прогресс. Храните несколько независимо проверенных дат.




