DGuard

Резервные копии сервера Minecraft: что, как и как часто

Бэкап сервера — это миры, папка plugins с конфигами и данными, файлы настроек и базы данных плагинов. Делайте копии автоматически, храните хотя бы одну не на той же машине и время от времени проверяйте, что из них действительно можно восстановиться.

Команда DGuard7 мин

Короткий ответ: копируйте всю папку сервера, кроме логов и кэша, плюс дампы внешних баз данных. Копию делайте на остановленном сервере или после save-off и save-all flush, автоматически по расписанию и обязательно перед обновлениями. Частота зависит от того, сколько прогресса игроков вы готовы потерять.

Что копировать

ЧтоГде лежитЗачем
МирыДо 26.1 Paper хранит каждое измерение в своей папке: world, world_nether, world_the_end. С 26.1 всё внутри world: измерения — в world/dimensions/minecraft/, данные игроков — в world/players/.Постройки, сундуки, инвентари и прогресс игроков.
Плагиныplugins/ целиком: jar-файлы, конфиги и данные — дома, регионы, SQLite-базы плагинов.Без данных плагинов мир вернётся без приватов, экономики и прав.
Настройки сервераserver.properties, bukkit.yml, spigot.yml, config/paper-global.yml, config/paper-world-defaults.yml, ops.json, whitelist.json, banned-players.json, banned-ips.json.Чтобы поднять сервер таким же, а не с настройками по умолчанию.
Внешние базы данныхMySQL, MariaDB или PostgreSQL, которыми пользуются плагины (права, авторизация, экономика). Досье игроков DGuard тоже хранит в вашей MySQL.Этих данных нет в папке сервера — их нужно выгружать отдельно.

Можно не копировать logs, cache, libraries, versions и plugins/.paper-remapped — Paper создаст их заново. Перед переходом на 26.x сохраните копию отдельно и надолго: Paper предупреждает, что после обновления мира до 26.1 откатиться на старую версию нельзя.

Правило 3-2-1

Классическое правило резервного копирования: 3 копии данных, на 2 разных носителях или хранилищах, 1 — в другом месте. Для сервера Minecraft это выглядит так: рабочие файлы, свежие архивы на той же машине для быстрого отката и копия на другой машине или в облачном хранилище.

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

Как сделать копию без битых чанков

Сервер постоянно дописывает чанки на диск. Если скопировать мир «на ходу», в архив может попасть наполовину записанный файл региона — и после восстановления часть мира может оказаться повреждённой. Есть два надёжных способа.

Остановить сервер. Выключили, скопировали, запустили. Проще некуда, и это удобно совместить с ночным перезапуском. Копировать без остановки. Команды консоли (уровень оператора 4):

консоль сервера
save-off          # перестать записывать мир, изменения копятся в памяти
save-all flush    # записать все чанки и игроков на диск прямо сейчас
# … копируете файлы …
save-on           # вернуть запись мира

save-all flush на мгновение подвешивает сервер — это нормально. Главное — не забыть save-on: пока запись выключена, мир не сохраняется, и сбой унесёт всё несохранённое. После перезапуска сервер снова сохраняет мир сам. Файлы игроков, достижений и статистики сервер пишет и при save-off.

Автоматизация: скрипт и cron

Ручные бэкапы делают до первого забытого раза. На VPS достаточно короткого скрипта и cron. Пример ниже рассчитан на сервер, запущенный в tmux-сессии mc: команды консоли скрипт отправляет через tmux send-keys. Пути и имя базы замените на свои.

/srv/minecraft/backup.sh
#!/bin/bash
# backup.sh — копия сервера Minecraft без остановки
set -euo pipefail

SERVER=/srv/minecraft          # папка сервера
DEST=/backups/minecraft        # куда складывать копии
STAMP=$(date +%F_%H-%M)
mkdir -p "$DEST"

# сервер запущен в tmux-сессии «mc»
tmux send-keys -t mc "save-off" Enter
trap 'tmux send-keys -t mc "save-on" Enter' EXIT   # вернуть сохранение, даже если скрипт упадёт
tmux send-keys -t mc "save-all flush" Enter
sleep 30                       # даём серверу дописать чанки

# код 1 у tar — «файл изменился при чтении»: предупреждение, не ошибка
tar -czf "$DEST/server-$STAMP.tar.gz" -C "$SERVER" \
  --exclude=./logs --exclude=./cache --exclude=./libraries --exclude=./versions . || [ $? -eq 1 ]

tmux send-keys -t mc "save-on" Enter
trap - EXIT

# базы MySQL плагинов (и досье DGuard); логин и пароль — в ~/.my.cnf
mysqldump --single-transaction --databases minecraft > "$DEST/db-$STAMP.sql"

# локально — 14 дней, копия — на другую машину
find "$DEST" -type f -mtime +14 -delete
rsync -a "$DEST/" backup@backup.example.com:/backups/minecraft/

--single-transaction у mysqldump выгружает таблицы InnoDB целостным снимком, не блокируя их для плагинов. rsync здесь без --delete: если локальные архивы кто-то сотрёт, удалённая копия останется. Сделайте скрипт исполняемым (chmod +x) и добавьте его в cron (crontab -e):

crontab -e
# каждый день в 05:00
0 5 * * * /srv/minecraft/backup.sh >> $HOME/mc-backup.log 2>&1

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

Как часто делать бэкапы

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

Восстановление и проверка

  1. 1

    Остановите сервер

    Восстанавливать файлы на работающий сервер нельзя: он перезапишет их своими данными.

  2. 2

    Отложите текущие файлы

    Не удаляйте, а переименуйте папку сервера (например, в minecraft.broken) — вдруг из неё что-то понадобится.

  3. 3

    Распакуйте архив

    mkdir /srv/minecraft && tar -xzf server-<дата>.tar.gz -C /srv/minecraft

  4. 4

    Загрузите базы

    Дамп, сделанный с --databases, сам создаёт базы: mysql < db-<дата>.sql.

  5. 5

    Запустите и проверьте

    Зайдите в игру: на месте ли постройки, инвентари, приваты и права. Посмотрите консоль на ошибки плагинов.

Бэкап, из которого ни разу не восстанавливались, — это надежда, а не бэкап. Раз в месяц разворачивайте свежий архив на тестовом сервере в отдельной папке и на другом порту. Целостность архива быстро проверяет tar -tzf <архив> > /dev/null.

Откат грифа без восстановления мира

Восстановить весь мир из бэкапа — значит откатить прогресс всех игроков ради одного грифера. Для таких случаев есть логгер блоков: CoreProtect записывает, кто что сломал, поставил или вынул из сундука, и откатывает действия одного игрока: /co rollback u:<ник> t:1h r:20. Бэкапы оставьте для катастроф: порчи мира, неудачного обновления, потерянного VPS. Остальные меры — в статье защита от грифа.

Откатывать придётся реже, если ловить тех, кто ломает мир читами. DGuard проверяет Nuker, FastBreak и Scaffold вместе с остальными видами читов из сравнения. X-Ray плагинный античит не видит — против него в Paper есть анти-X-Ray, см. защиту от X-Ray.

Частые вопросы

Где хранятся миры сервера Paper?

До 26.1 — в папках world, world_nether и world_the_end в корне сервера. С 26.1 все измерения лежат внутри world/dimensions/minecraft/, а данные игроков — в world/players/.

Можно ли сделать бэкап, не выключая сервер?

Да: выполните save-off, затем save-all flush, скопируйте файлы и верните запись командой save-on. Без save-off в копию может попасть наполовину записанный файл региона.

Как часто делать бэкап сервера Minecraft?

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

Нужно ли копировать базу MySQL?

Да, отдельно: базы плагинов (права, авторизация, экономика, досье DGuard) не лежат в папке сервера. Выгружайте их mysqldump вместе с архивом мира.

Как откатить мир сервера из бэкапа?

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

Источники

Все разделы
Защита сервера6 минЗащита от гриферов: регионы, приваты и откатыГриферов останавливает не один плагин, а система: регионы и приваты не дают ломать, логи блоков позволяют найти виновного и откатить, права и бэкапы страхуют от худшего. Разбираем каждую часть с командами по документации — и что из этого закрывает античит.ЧитатьПлагины6 минCoreProtect: как найти грифера и откатить разрушенияВключите инспектор /co i и кликните по блоку — увидите, кто его поставил или сломал. /co rollback вернёт всё, что натворил игрок, а по логам добычи руды можно заподозрить X-Ray.ЧитатьСоздание сервера7 минХостинг или VPS для сервера Minecraft: что выбратьИгровой хостинг — быстрый старт через панель, но с общими ресурсами и ограничениями. VPS или выделенный сервер — полный контроль, но систему, защиту и бэкапы настраиваете сами. В обоих случаях смотрите на однопоточную производительность процессора, гарантированную память, быстрый диск, защиту от DDoS и расстояние до игроков.Читать

Поставьте лучший античит для современного Minecraft

DGuard ловит все 47 видов читов из нашего сравнения — у ближайшего соперника, Intave, 27. Полная защита на любом тарифе, до 30 игроков онлайн — бесплатно.