Рабочая резервная копия должна содержать нужную контрольную точку и дополнительные файлы, без которых сессию не продолжить. Успешная архивация этого не доказывает. Сделайте ручное сохранение, остановите запись, соберите нужные данные и проверьте загрузку копии отдельно от действующего сервера.
Команды рассчитаны на нативную Ubuntu-установку из руководства по запуску: служба satisfactory.service, пользователь и группа satisfactory, HOME /home/satisfactory, установка /home/satisfactory/server. Пример относится к PC-версии без модов. Перед использованием сверьте параметры через systemctl cat и systemctl show: у контейнера, Windows-службы или другой домашней папки расположение данных отличается.
Определите состав восстановления#
Рядом с архивом сохраните небольшой паспорт: ветка и сборка игры, сессия, название ручного сохранения, время, пользователь службы, фактический HOME, каталог установки и параметры запуска. Запишите заметный ориентир в мире и содержимое известного контейнера: так получится отличить нужную точку от просто похожей фабрики.
| Данные | Расположение в примере | Что учесть |
|---|---|---|
| Контрольные точки мира | SaveGames/server | Оставляйте несколько поколений, а не только последний файл. |
| Библиотека чертежей PC | SaveGames/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. Остановите службу и посмотрите результат:
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
Продолжайте после нормального завершения, когда не осталось игрового процесса или другого писателя в эти каталоги. Ошибка остановки или принудительное завершение по тайм-ауту требуют разбора. Следующий блок запускайте после проверки наличия обоих исходных каталогов:
(
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 ради пропавшего мира, предварительно не сохранив этот файл.
Подключитесь, проверьте ориентир и библиотеку, сделайте новое сохранение, штатно перезапустите сервер и войдите ещё раз. Убедитесь, что вернулась нужная сессия и последующие сохранения записываются. Зафиксируйте проверенный архив, сборку и контрольную точку. Именно такая проверка даёт свидетельство восстановления; работающий процесс, успешная отправка файла или совпавшая сумма этого не заменяют.
Если загрузилась другая фабрика, проверьте выбранную сессию и автоматическую загрузку прежде, чем снова менять файлы. Для отсутствующих сохранений проверьте путь и владельца; для отказа загрузки — сборку и журнал; для пропавшей библиотеки — каталог сессии и повторную загрузку. При необходимости вернитесь к сохранённому текущему состоянию, вместо того чтобы многократно перезаписывать его сомнительными копиями.




