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

Резервная копия Satisfactory: сохранить и восстановить сервер

Сохраните мир, чертежи и настройки Satisfactory, вынесите копию с сервера и проверьте восстановление отдельно.

Резервная копия Satisfactory: сохранить и восстановить сервер

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

Команды рассчитаны на нативную Ubuntu-установку из руководства по запуску: служба satisfactory.service, пользователь и группа satisfactory, HOME /home/satisfactory, установка /home/satisfactory/server. Пример относится к PC-версии без модов. Перед использованием сверьте параметры через systemctl cat и systemctl show: у контейнера, Windows-службы или другой домашней папки расположение данных отличается.

Определите состав восстановления#

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

ДанныеРасположение в примереЧто учесть
Контрольные точки мираSaveGames/serverОставляйте несколько поколений, а не только последний файл.
Библиотека чертежей PCSaveGames/blueprints/<session>Сохраняйте отдельно от самого мира.
Идентичность и настройки сервераSaveGames/ServerSettings.PORT.savЗакройте доступ; перенос на другой адрес решается отдельно.
INI-настройки установкиserver/FactoryGame/Saved/Config/LinuxServerПеред восстановлением сравните с версией назначения.
Unit-файл, аргументы запуска, собственные сертификаты и перечень модов при их наличииЗависит от установкиСохраните отдельно: пример архива их не собирает.

Корень SaveGames здесь — /home/satisfactory/.config/Epic/FactoryGame/Saved/SaveGames только при указанном окружении службы. Справочник файлов сервера разделяет постоянные данные и установку. Проверьте содержимое каталогов: папка с именем backups в панели сама по себе не означает, что туда попало всё необходимое.

В PC-версии модули чертежей и их метаданные хранятся в .sbp и .sbpcfg. Откат одного мира не вернёт удалённую библиотеку. В отдельном файле настроек сервера есть сведения о доступе и идентичности. Архивы с ними относятся к закрытым административным данным; не размещайте их в публичных вложениях.

Снимите архив при остановленной записи#

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

До начала работ проверьте unit-файл: штатное завершение должно быть настроено через KillSignal=SIGINT. Остановите службу и посмотрите результат:

bash
sudo systemctl stop satisfactory.service
sudo systemctl show satisfactory.service \
  -p ActiveState -p SubState -p MainPID -p Result
sudo journalctl -u satisfactory.service -n 80 --no-pager

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

bash
(
  set -e
  test "$(sudo systemctl show satisfactory.service -p ActiveState --value)" = inactive
  test "$(sudo systemctl show satisfactory.service -p MainPID --value)" = 0
  test "$(sudo systemctl show satisfactory.service -p Result --value)" = success
  sudo test -d /home/satisfactory/.config/Epic/FactoryGame/Saved/SaveGames/server
  sudo test -d /home/satisfactory/server/FactoryGame/Saved/Config/LinuxServer
  sudo install -d -m 700 /var/backups/satisfactory
  satisfactory_archive="/var/backups/satisfactory/state-$(date -u +%Y%m%dT%H%M%S%NZ).tar.gz"
  sudo sh -c 'umask 077; exec tar -czf "$1" -C /home/satisfactory \
    .config/Epic/FactoryGame/Saved/SaveGames \
    server/FactoryGame/Saved/Config/LinuxServer' sh "$satisfactory_archive"
  sudo tar -tzf "$satisfactory_archive"
  sudo sha256sum "$satisfactory_archive"
)

В архив входит дерево SaveGames целиком, включая существующие чертежи и настройки идентичности, а также INI-каталог этой установки. Произвольные пути сертификатов и unit-файлы он не собирает. Отсутствующий каталог, ошибка чтения или ненулевой код команды останавливают блок: исправьте причину и не распространяйте неполный архив. Игра остаётся остановленной. После успешной проверки отдельно запустите её через sudo systemctl start satisfactory.service, проверьте журнал и подключение клиента.

Руководство GNU tar описывает создание и просмотр архива; просмотр подтверждает читаемость файлов, но не работу фабрики. Контрольная сумма SHA-256 позволяет сравнить переданные байты. Сохраните её отдельно и сопоставьте с суммой скачанного архива на другой машине.

Читаемый архив — промежуточная проверка. Восстановление подтверждается нужной фабрикой, новым сохранением и повторным входом после перезапуска.

В нестандартной установке отдельно учтите цели символических ссылок и внешние хранилища: эта команда tar не раскрывает симлинки.

Оставьте копию вне сервера#

Перенесите архив через SSH/SFTP с проверкой подлинности на отдельное хранилище. Не открывайте публичный веб-каталог ради удобной загрузки. Храните несколько датированных поколений: очередное успешное задание после случайного удаления вполне может сохранить уже неправильное состояние. Интервал выбирайте по допустимой потере игрового времени; перед обновлением или переездом делайте дополнительную копию.

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

Сначала восстановите в отдельное место#

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

Распакуйте собственный архив в новый закрытый промежуточный каталог, а не сразу в /home/satisfactory, и проверьте состав. Для восстановления одного мира загрузите выбранный .sav через Manage Saves либо остановите назначение перед файловым копированием в проверенную папку. В руководстве переноса разобраны владелец файлов и выбор сессии. Соответствующие чертежи восстановите отдельно при остановленной игре. При восстановлении всей установки сравните сохранённые INI и верните только подходящие новому окружению настройки.

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

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

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