Главная Статьи Обновление плагинов без поломок и бэкапы сервера Minecraft

Обновление плагинов без поломок и бэкапы сервера Minecraft

Что именно сохранять, как снять копию мира на работающем сервере, в каком порядке обновлять плагины и как откатиться за пять минут, если что-то пошло не так.

Обновление плагинов без поломок и бэкапы сервера Minecraft

Обновили плагин, и пропали права. У магазина обнулились цены. Сервер не стартует после новой версии ядра. Такие истории обычно заканчиваются вопросом «а бэкап есть?». Ниже порядок, при котором ответ всегда «да», а откат занимает минуты.

Что входит в бэкап

ЧтоГде лежитЗачем
Мирыworld, world_nether, world_the_end и другие папки мировпостройки, инвентари и данные игроков
Плагиныplugins/ целикомjar, конфиги и данные, которые плагины хранят в файлах
Настройки ядраserver.properties, bukkit.yml, spigot.yml, папка config/ у Paperбез них сервер после восстановления поведёт себя иначе
Спискиops.json, whitelist.json, banned-players.json, banned-ips.jsonоператоры, белый список, баны
Внешняя базаMySQL или MariaDBправа, экономика, логи, если плагины пишут туда

Последний пункт забывают чаще всего. Копия папок базу данных не включает, её выгружают отдельно. LuckPerms вдобавок умеет сохранить себя в файл командой /lp export backup, файл появится в папке плагина.

Как скопировать мир и не получить битые чанки

Если копировать папку мира, пока сервер в неё пишет, часть чанков в копии окажется недописанной. Безопасных путей два.

  1. Остановить сервер, скопировать, запустить. Надёжно, но игроков выкинет.
  2. Без остановки. Запретить серверу запись, сбросить всё на диск, скопировать и вернуть запись обратно.
save-off
save-all flush
(копируете файлы)
save-on

Пример для Linux, если сервер лежит в /opt/mc, а копии складываются в /backup:

cd /opt/mc
tar -czf /backup/mc-$(date +%F-%H%M).tar.gz world world_nether world_the_end plugins config *.yml *.json server.properties
mysqldump -u mc -p luckperms > /backup/luckperms-$(date +%F).sql
find /backup -name 'mc-*.tar.gz' -mtime +14 -delete

Последняя строка удаляет архивы старше двух недель, иначе диск однажды кончится. Поставьте скрипт в cron на ночь, и копии будут появляться сами.

Копия на том же диске не бэкап. Умрёт диск или хостинг закроет VPS, уйдут обе. Хотя бы раз в неделю уносите архив на другую машину или в облако.

И хотя бы раз проверьте восстановление: разверните архив в отдельную папку и запустите на другом порту. Бэкап, который ни разу не разворачивали, это надежда, а не бэкап.

Обновление плагина по шагам

  1. Прочитать список изменений на странице плагина. Ищите слова про конфиг, базу данных, минимальную версию ядра и Java.
  2. Проверить совместимость с вашей версией игры и ядром.
  3. Сделать бэкап. Минимум папка плагина и сам jar, лучше полный.
  4. Сначала на копии, если она есть. Хватит локального сервера на своём ПК с теми же плагинами.
  5. Остановить сервер, убрать старый jar, положить новый. Две версии одного плагина в папке дают предупреждение Ambiguous plugin name, и какая из них загрузится, неизвестно.
  6. Запустить и читать консоль: ошибки плагина, сообщения о переносе конфига или базы.
  7. Сверить конфиг. Новые ключи плагин обычно дописывает сам, но не всегда. Сравните с конфигом по умолчанию из новой версии.
  8. Зайти обычным игроком и проверить, что плагин делает своё. Под оператором половина проблем с правами не видна.

Если сервер нельзя остановить прямо сейчас, есть папка обновлений Bukkit: jar, положенный в plugins/update, при следующем запуске заменит одноимённый в plugins. Имя файла должно совпадать с текущим.

Если обновляете много сразу

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

Типичные ошибки

  • Обновление перед ивентом. В пятницу вечером, когда онлайн максимальный, а времени на откат нет.
  • /reload вместо перезапуска. Старые классы остаются в памяти, и плагин ведёт себя странно до первого рестарта.
  • Бэкап только мира. Права, экономика и настройки живут в plugins/.
  • Забытая база. Файлы откатили, а MySQL осталась от новой версии.
  • jar с левого сайта. Обновление с форума или из чата может нести чужой код. Берите с официальной страницы: SpigotMC, Modrinth, Hangar, репозиторий автора.
  • Откат одного jar. Новая версия уже переделала конфиг или базу под себя, и старая их не понимает. Откатывать надо вместе с папкой плагина и базой.

Как то же сделать быстрее

Миры Cloud Panel не бэкапит, для этого остаются архивы выше. Её зона это конфиги и питание сервера.

  • Журнал правок. Каждая правка конфига через панель записывается, любую можно откатить, и файл вернётся байт в байт. Когда после обновления подкручиваете новый конфиг, копии руками перед каждой правкой не нужны.
  • Плагин выключается кнопкой. jar уходит в отдельную папку и возвращается обратно. Новая версия ведёт себя плохо: выключили, перезапустили, разбираетесь спокойно.
  • Питание и консоль. Запуск, стоп и перезапуск кнопками, консоль рядом. Сразу видно, поднялся ли сервер и сколько игроков онлайн.

Чек-лист

  1. В бэкапе миры, plugins/, настройки ядра, списки и дамп базы.
  2. Мир копировался после остановки или через save-off и save-all flush.
  3. Копия лежит не только на той же машине.
  4. Восстановление проверено хотя бы раз.
  5. Список изменений плагина прочитан.
  6. Старый jar удалён, новый один.
  7. Консоль после запуска чистая.
  8. Проверено обычным игроком, а не оператором.
  9. Обновление не в час пик и не перед ивентом.

Журнал правок с откатом и выключение плагина кнопкой можно проверить на своём сервере: 3 дня бесплатно.

Не хотите собирать всё это руками?

Мы делаем сборки, плагины и сайты для серверов Minecraft с 2022 года. Готовое решение ставится на ваш хостинг за вечер, установку делаем бесплатно.