Короткий ответ: копируйте всю папку сервера, кроме логов и кэша, плюс дампы внешних баз данных. Копию делайте на остановленном сервере или после 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. Пути и имя базы замените на свои.
#!/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):
# каждый день в 05:00
0 5 * * * /srv/minecraft/backup.sh >> $HOME/mc-backup.log 2>&1Дату удобнее формировать в скрипте, а не в строке cron: там символ % превращается в перевод строки, если его не экранировать. На игровом хостинге обычно есть встроенные бэкапы в панели — включите расписание и выясните, где лежат копии: если на той же машине, раз в неделю скачивайте свежую к себе.
Как часто делать бэкапы
- По расписанию — минимум раз в сутки для живого сервера, на активном — чаще. Ориентир простой: сколько часов прогресса игроков не жалко потерять.
- Перед любым рискованным шагом — обновлением Paper или версии Minecraft, установкой и обновлением плагинов, крупной правкой конфигов, вайпом или ивентом.
- С ротацией — храните копии за несколько моментов, а не одну последнюю: Paper советует иметь бэкапы из разных моментов времени. Порча мира или гриф часто обнаруживаются через несколько дней, и вчерашняя копия уже содержит проблему.
Восстановление и проверка
- 1
Остановите сервер
Восстанавливать файлы на работающий сервер нельзя: он перезапишет их своими данными.
- 2
Отложите текущие файлы
Не удаляйте, а переименуйте папку сервера (например, в
minecraft.broken) — вдруг из неё что-то понадобится. - 3
Распакуйте архив
mkdir /srv/minecraft && tar -xzf server-<дата>.tar.gz -C /srv/minecraft - 4
Загрузите базы
Дамп, сделанный с
--databases, сам создаёт базы:mysql < db-<дата>.sql. - 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.
Источники
- Paper: обновление сервера, шаг «Бэкап»
- Paper: новости 26.1 (новая структура мира)
- Paper: миграция (структура мира до 26.1)
- Paper: файлы конфигурации
- Minecraft Wiki: save-all, save-off, save-on
- crontab(5): формат строк cron
- MySQL: mysqldump
- CoreProtect: команды
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf