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

Как перенести мир Terraria на Linux-сервер и сохранить прогресс

Перенесите мир Terraria на Linux-сервер: сохраните исходник, выберите нужный файл и проверьте прогресс после перезапуска.

Как перенести мир Terraria на Linux-сервер и сохранить прогресс

Переносите остановленную копию существующего мира, задавайте на новом сервере явное имя файла и проверяйте знакомую постройку до возвращения игроков. Успешная генерация пустого мира ещё не означает, что перенос состоялся.

Инструкция предназначена для vanilla Terraria на PC и пользователя terraria из руководства по Linux-серверу. На новом сервере используются /srv/terraria/worlds и /srv/terraria/serverconfig.txt. Версии PC-игры должны быть совместимы; пример запуска относится к 1.4.5.8. Экспорт с консолей и мобильных устройств, дополнительные файлы tModLoader и базы TShock требуют отдельного плана.

Найдите сохранение последней игровой сессии#

Сохраните мир, выйдите из него и закройте игру или dedicated-сервер, который его записывает. Для сервера в tmux подключитесь к консоли, выполните save, дождитесь записи, затем выполните exit. На время переноса исключите повторный запуск старого мира другим администратором или автоматизацией.

На Windows проверьте %USERPROFILE%\Documents\My Games\Terraria\Worlds. Папка Documents может быть перенаправлена. Мир в Steam Cloud может находиться в userdata\<userID>\105600\remote\worlds внутри фактического каталога Steam. В справочнике миров эти расположения разделены. До остановки подтвердите выбор мира в самой игре: привычный каталог не всегда содержит активное сохранение.

В обсуждении переноса за 2026 год игроки получили старый прогресс после копирования файлов. Там используется модифицированная игра; для vanilla полезен именно вопрос выбора активного источника, а не перечень модовых файлов.

При остановленном процессе скопируйте vanilla-файл .wld в отдельный экспортный каталог. Сохраните оригинал и соседние резервные копии. Запишите размер и контрольную сумму. Не переименовывайте резервный файл поверх единственного оригинала и не оставляйте облачную синхронизацию единственной страховкой.

Загрузите файл в промежуточный каталог#

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

На новом сервере создайте закрытый каталог из обычной административной SSH-сессии:

bash
(
  set -eu
  umask 077
  mkdir "$HOME/terraria-import"
)

Если каталог уже существует, команда остановится. Разберите предыдущую загрузку вместо смешивания двух переносов. На своём компьютере замените путь, SSH-пользователя и адрес:

bash
scp /PATH/TO/Coop.wld YOUR_SSH_USER@YOUR_VPS_IP:terraria-import/Coop.wld

Имя Coop.wld выбрано без пробелов, чтобы не зависеть от обработки аргументов launcher-скриптом. На сервере выполните sha256sum "$HOME/terraria-import/Coop.wld" и сравните результат с суммой исходного файла, полученной локальной утилитой. Совпадение подтверждает перенос байтов, но не исправность мира.

Остановите существующий экземпляр Terraria на новом сервере. Сохраните его прежний выбранный мир и конфигурацию по инструкции резервного копирования. Закрытая промежуточная папка и новое имя файла не делают одновременную запись безопасной.

Установите отдельный файл с правильным владельцем#

Команды ниже выполняются административным SSH-пользователем нового сервера. Они отвергают символьную ссылку вместо источника и занятое имя назначения. Для повторного переноса выберите другое свободное имя:

bash
(
  set -eu
  terraria_source="$HOME/terraria-import/Coop.wld"
  terraria_target=/srv/terraria/worlds/ImportedCoop.wld
  test -f "$terraria_source"
  test ! -L "$terraria_source"
  test -s "$terraria_source"
  sudo test -d /srv/terraria/worlds
  sudo test ! -L /srv/terraria/worlds
  sudo test ! -e "$terraria_target"
  sudo test ! -L "$terraria_target"
  sudo install -o terraria -g terraria -m 600 \
    "$terraria_source" "$terraria_target"
  sudo -u terraria test -r "$terraria_target"
)

Откройте /srv/terraria/serverconfig.txt и явно укажите выбранный файл:

ini
world=/srv/terraria/worlds/ImportedCoop.wld
worldpath=/srv/terraria/worlds
port=7777

Существующий пароль и лимит игроков сохраните в конфигурации. Уберите активный autocreate и проверьте отсутствие второго world= или аргумента запуска -world, выбирающего другой файл. Не исправляйте права рекурсивными командами на весь сервер и не выдавайте запись всем пользователям.

Запустите сервер и проверьте конкретный прогресс#

Вернитесь в tmux-сессию пользователя terraria. Если её нет, создайте под этим пользователем. Убедившись, что другого экземпляра нет, запустите:

bash
cd /opt/terraria-release/1458/Linux
./TerrariaServer -config /srv/terraria/serverconfig.txt

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

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

Закрепите перенос повторным запуском#

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

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