Успешная задача резервного копирования ещё не доказывает, что из неё получится вернуть рабочий сервер. Выберите конкретную копию, восстановите её отдельно, зайдите в нужный мир и проверьте новое сохранение после перезапуска. Работающий сервер и исходный архив во время проверки должны оставаться нетронутыми.
Это общий порядок для игровых серверов на Linux. Команды сохранения, выбор мира и требования к базе данных зависят от игры. Заранее выделите место для загруженного архива, распакованных файлов и рабочей тестовой копии: заполненный диск может сорвать проверку независимо от качества бэкапа.
Определите, что должно восстановиться#
Зафиксируйте идентификатор копии, время её создания, версию игры, модов или плагинов и имя сохранения. Выберите узнаваемые признаки: постройку по известным координатам, инвентарь игрока, прогресс и запись в списке доступа. Возьмите копию из того внешнего хранилища, которым действительно будете пользоваться после потери основного диска.
Разделите два требования. Допустимый возраст восстановленного состояния определяет, сколько прогресса можно потерять. Допустимое время восстановления — сколько игроки готовы ждать. Запустите настоящий таймер с начала получения файлов: поиск ключа расшифровки и загрузка зависимостей тоже занимают время.
Соберите полное и согласованное состояние#
Архив одного каталога мира может не содержать базу игроков, права доступа, настройки модов или внешнюю SQL-базу. Перед созданием копии составьте короткую опись:
| Компонент | Что зафиксировать |
|---|---|
| Состояние игры | Выбранный мир, измерения, файлы игроков, общие базы |
| Среда запуска | Сборка игры, источник исполняемых файлов, Java/runtime, моды |
| Настройки | Аргументы запуска, пользователь службы, рабочий каталог, права |
| Зависимости | Экспорт базы, расположение ключа шифрования, расширения |
Для понятной исходной проверки объявите обслуживание, сохраните игру штатной командой, корректно остановите сервер и убедитесь, что процесс завершился. Остановите всех писателей связанного состояния, затем копируйте файлы и делайте согласованные экспорты баз. Для внешней базы используйте поддерживаемый ею способ резервного копирования; перенос её работающего каталога данных не заменяет экспорт.
Если простой недопустим, применяйте документированный для игры механизм сброса сохранения или интеграцию снимков. Сам по себе снимок файловой системы не доказывает согласованность приложения. После получения копии запустите основной сервер и отдельно проверьте его работу. Дальнейшие действия выполняются с копией.
Если вы администрируете свои хосты через панель, например Nexardo, сохраните в плане восстановления отдельную инструкцию доступа к самому хосту. Проверка должна оставаться выполнимой, когда панель недоступна.
Получите архив и проверьте байты#
Загрузите бэкап тем способом и с теми доступами, которые останутся после потери исходной машины. Получите ключи расшифровки из отдельного защищённого места. Если единственные учётные данные лежат на сломанном диске, план восстановления неполон.
Для tar-архива с отдельно сохранённой контрольной суммой пример проверки выглядит так:
cd "$HOME/recovery-inbox"
sha256sum --check server-backup.tar.gz.sha256
tar --list --gzip --file server-backup.tar.gz
Подставьте свои имена файлов; файл контрольных сумм должен ссылаться только на проверяемый архив. Совпадение хэша подтверждает соответствие полученных байтов записанной копии, но не исправность исходного мира. Аналогичное различие есть у репозиториев: restic отдельно проверяет структуру и чтение сохранённых данных. Учитывайте время и трафик выбранной проверки.
Восстановите данные в отдельное окружение#
Используйте отдельного непривилегированного пользователя или временную VM без права записи в рабочие каталоги сервера. Создайте новый пустой каталог назначения. До распаковки проверьте состав архива: для обычных игровых данных отклоняйте абсолютные пути, переходы через .., символические и жёсткие ссылки, специальные файлы. Ограничьте доступный объём квотой или аналогичным механизмом: небольшой сжатый файл способен занять много места.
Выбирайте распаковщик с нужными ограничениями; документация Python объясняет фильтры извлечения и их пределы. Не распаковывайте от root и не используйте каталог со старыми ссылками. Если ссылки предусмотрены вашим форматом копирования, для них нужна отдельная опись и проверенная процедура восстановления.
Подготовьте совпадающие версии игры, среды запуска и модов. Не обновляйте мир попутно: преобразование сохранения добавит ещё одну переменную и затруднит сравнение с исходным состоянием.
Отключите связи с рабочим сервером#
Перед запуском изучите скопированные скрипты, абсолютные пути, задания планировщика и файлы окружения. Отключите обращения к рабочей базе, вебхуки, платёжные и модерационные интеграции, автообновления и расписание бэкапов. Используйте тестовые доступы и отдельно восстановленную базу; при необходимости ограничьте исходящий трафик.
Если игра поддерживает выбор адреса, привяжите сервер к loopback или изолированному частному интерфейсу. Иначе разрешите входящие подключения только тестировщику через firewall. Выделите отдельные игровые, query- и административные порты. Не публикуйте копию в общем браузере серверов. После запуска проверьте реальные слушающие сокеты и владельца процесса, включая дополнительные интерфейсы из конфигурации.
Зайдите в мир, сохраните изменение и перезапустите#
Подключитесь совместимым игровым клиентом к частному тестовому адресу. Проверьте выбранные постройки, состояние игрока и права. Посмотрите журнал: нет ли потерянного контента, ошибок базы или признаков создания нового пустого мира.
Сделайте заметное временное изменение в тестовом мире. Сохраните игру штатным способом, корректно остановите сервер, запустите тот же восстановленный экземпляр и подключитесь повторно. Изменение должно сохраниться. Работающий процесс или открытый порт эту проверку не заменяет.
Запишите идентификатор копии, восстановленные версии, выполненные проверки, фактическое время и недостающие зависимости. Сохраните порядок действий и результаты там, где другой администратор найдёт их при аварии. По окончании остановите тестовый экземпляр и удалите только его ресурсы. Исходный бэкап сохраните. Повторяйте проверку после смены формата копирования, runtime, модов или хранилища. В обсуждении резервных копий на Admincraft хорошо видна практическая проблема: иметь архив и уметь восстановить сервер — две разные задачи.




