
Advanced Backups — Minecraft Java Edition 1.7.10 – 1.21.4
Зависимости: · Загрузчик: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Версия Minecraft: 1.7.10 - 1.21.4 · Версия мода: 3.7.1…
Зависимости: · Загрузчик: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Версия Minecraft: 1.7.10 - 1.21.4 · Версия мода: 3.7.1 Стандартный механизм резервного копирования в Minecraft Java Edition имеет серьёзные огран
Зависимости:
· Загрузчик: Forge, NeoForge, Fabric, Quilt, Spigot, Paper
· Версия Minecraft: 1.7.10 - 1.21.4
· Версия мода: 3.7.1
Стандартный механизм резервного копирования в Minecraft Java Edition имеет серьёзные ограничения. В ванильной игре создание резервных копий выполняется вручную через меню или требует остановки сервера для копирования файлов. Эти операции выполняются в основном потоке игры, что приводит к блокировке игрового процесса, лагам или временной недоступности сервера во время записи гигабайтов данных на диск. Кроме того, стандартный метод создаёт только полные копии мира, быстро переполняя накопитель дублированными данными. Модификация Advanced Backups решает эти проблемы, предлагая асинхронное резервное копирование по расписанию с поддержкой дифференциальных и инкрементных моделей сжатия, гибкой очисткой устаревших архивов и встроенной утилитой для восстановления данных.
Механизмы резервного копирования: Zip, Differential и Incremental
Утилита предоставляет три режима обработки файлов мира, которые определяют баланс между скоростью выполнения, объёмом используемого дискового пространства и надёжностью восстановления:
· Zip (полные копии): Принцип работы заключается в архивации всей папки мира в один .zip файл. Этот способ является наиболее ресурсоёмким и требует больше всего свободного места на накопителе, поскольку каждый бэкап содержит все файлы независимо от того, изменялись они или нет. Его преимуществом является простота восстановления — достаточно просто распаковать нужный файл.
· Differential (дифференциальное / разностное копирование): Основано на создании одного базового полного архива ("full") и последующих частичных архивов ("partial"). Частичные архивы записывают только те файлы, которые изменились с момента создания базового полного архива. Объём промежуточных бэкапов существенно уменьшается. Для восстановления состояния мира на определённый момент времени нужны только два файла: базовый полный архив и последний частичный архив перед этой датой.
· Incremental (инкрементное копирование): Также использует концепцию полных и частичных архивов. Однако каждый частичный архив содержит только изменения, произошедшие с момента создания последнего предыдущего частичного архива. Это минимизирует нагрузку на дисковую подсистему и экономит максимальное количество свободного места. Недостатком является повышенный риск потери данных: если хотя бы один файл в цепочке инкрементных копий будет повреждён, восстановить последующие копии до создания нового полного бэкапа будет невозможно. Процесс восстановления также является самым медленным, поскольку требует последовательного слияния всей цепочки файлов.
Создание новых цепочек регулируется параметрами config.advancedbackups.chains.length и config.advancedbackups.chains.maxpercent. Первый параметр определяет максимальное количество частичных копий в цепочке перед принудительным созданием нового полного архива. Второй параметр выполняет проверку размера: если объём накопленных изменений в частичном архиве превышает установленный процент от размера полного архива, система автоматически сбрасывает цепочку и создаёт новый полный бэкап.
Система автоматической очистки (Purging) и работа с цепочками
Для предотвращения переполнения диска в модификации реализованы три критерия автоматического удаления устаревших данных:
· По количеству дней хранения (config.advancedbackups.purge.days).
· По общему объёму папки бэкапов в гигабайтах (config.advancedbackups.purge.size).
· По общему количеству файлов копий (config.advancedbackups.purge.count).
При использовании дифференциальных или инкрементных копий удаление отдельных файлов из цепочки невозможно, поскольку это нарушит целостность данных. Мод оперирует целыми цепочками (chains). Цепочка считается устаревшей и удаляется только тогда, когда все её компоненты (включая базовый полный бэкап и все связанные частичные архивы) соответствуют критериям очистки. С помощью параметра config.advancedbackups.purge.incrementalchains можно установить минимальное количество полных цепочек, которые система обязана хранить независимо от других ограничений очистки. Также пользователь может создавать "снимки" (snapshots) — это статические копии мира, которые защищены от автоматического удаления.
Настройка конфигурационного файла AdvancedBackups.properties
Параметры работы системы резервного копирования хранятся в файле AdvancedBackups.properties, который создаётся в директории config при первом запуске. Основные ключи конфигурации:
Параметр | Значение по умолчанию | Описание |
| true | Позволяет полностью включить (true) или отключить (false) автоматическое создание резервных копий. |
| true | Определяет, нужно ли принудительно сохранять мир на диск перед выполнением копирования. |
| true | Отключает стандартное автосохранение во время создания копии и включает его после завершения процесса. |
| 1048576 | Размер буфера ввода-вывода в байтах. Значение сверх лимита оперативной памяти может привести к сбою OutOfMemoryError. |
| false | Принудительная очистка кэша записи диска. Не используется в версиях Minecraft ранее 1.16. |
| true | Проверка активности игроков. Если на сервере не было игроков с момента последнего бэкапа, создание копии пропускается. |
| differential | Тип резервных копий. Возможные значения: zip (полные копии), differential (разностное копирование), incremental (инкрементное копирование). |
| session.lock,*_old | Список исключений через запятую для файлов в папке мира, которые не добавляются в архив (допускаются маски вида *). |
| ./backups | Путь к каталогу сохранения готовых резервных копий (относительный или абсолютный). |
| 0.25 | Минимальный допустимый интервал между резервными копиями в часах. Предотвращает дублирование. 0 — отключено. |
| 24.0 | Максимальный интервал в часах, после которого бэкап запускается принудительно, если не было других успешных копий. |
| true | База планировщика: расчёт времени работы сервера (true) или реальное астрономическое время ОС (false). |
| 1:00 | Список интервалов создания копий (например, 1:00 для ежечасного бэкапа или точное реальное время 04:00,16:00). |
| false | Принудительное создание резервной копии мира при остановке или выключении сервера. Соблюдает лимит frequency.min. |
| false | Создание резервной копии мира при запуске сервера. Соблюдает лимит frequency.min. |
| 30 | Задержка запуска стартового бэкапа в секундах после включения сервера. Минимальное значение — 5 секунд. |
| ops | Категория получателей toasts-уведомлений о процессе архивации в игре (ops — операторы, all — все, none — никто). |
| 500 | Периодичность отправки пакетов прогресса игрокам в миллисекундах. Меньшие значения увеличивают сетевую нагрузку. |
| true | Разрешение на вывод подробного процентного прогресса архивации в системную консоль сервера. |
| 5000 | Интервал логирования хода выполнения резервного копирования в консоль в миллисекундах. |
| 50.0 | Лимит общего объёма папки копий в гигабайтах. Самые старые копии удаляются при превышении. 0 — отключено. |
| 0 | Срок хранения резервных копий в днях. Более старые удаляются. 0 — отключено. |
| 0 | Максимальное допустимое количество копий на диске. Более старые удаляются. 0 — отключено. |
| true | Разрешение на удаление инкрементных цепочек при очистке по объёму. Если false, инкрементные копии никогда не очищаются. |
| 1 | Минимальное количество инкрементных цепочек, которое очистка обязана оставить на диске в любом случае. |
| 4 | Уровень сжатия ZIP-архивов (от 1 до 9). Большие значения экономят место, но нагружают CPU. |
| 50 | Максимальное количество частичных резервных копий (разностных/инкрементных) перед созданием нового полного архива. |
| true | Разрешение на сжатие базовых полных копий и последующих промежуточных копий внутри цепочек. |
| true | Интеллектуальный сброс цепочки. Если все файлы мира были изменены, копия автоматически становится полной. |
| 50.0 | Лимит размера частичного бэкапа в процентах от полного. Если превышен, создаётся полноценный бэкап. |
Команды управления резервным копированием
Управление модификацией осуществляется с помощью консольных команд, требующих уровня доступа оператора (опции команд были обновлены в версии 3.7 для лучшей совместимости с командными блоками путём снижения требований уровня прав до значения 2):
· /backup start — запускает процесс резервного копирования в асинхронном режиме. Команда учитывает все настройки расписания, минимальных интервалов и активности игроков.
· /backup force — принудительно запускает процесс копирования, игнорируя проверки активности игроков и лимиты времени frequency.min.
· /backup snapshot <name> — создаёт полную резервную копию (снимок) под указанным именем в подпапке snapshots. Этот архив не учитывается при автоматической очистке устаревших бэкапов и никогда не удаляется системой автоматически.
· /backup reload-config — выполняет перезагрузку параметров из файла AdvancedBackups.properties без необходимости перезапуска сервера или клиента игры. В версиях мода до 2.2 для этого используется альтернативная команда /advancedbackups reload.
· /backup check — анализирует текущее состояние планировщика и выводит информацию о том, сколько времени осталось до следующего запланированного резервного копирования по расписанию.
· /backup reset — сбрасывает счётчик текущей цепочки инкрементных или дифференциальных копий. Следующий запланированный или запущенный вручную бэкап будет принудительно создан как полный архив ("full").
Снижение уровня разрешения для команд до значения 2 позволяет автоматизировать создание копий с помощью Command Blocks и сторонних плагинов планировщиков, которые вызывают консольные команды от имени сервера.
Консольная утилита восстановления (Command Line Restoration)
Поскольку дифференциальные и инкрементные резервные копии состоят из большого количества взаимосвязанных файлов изменений, их ручное восстановление является сложным процессом. Для решения этой задачи в JAR-файл модификации встроена специальная консольная утилита.
При первом создании копий модификация автоматически генерирует вспомогательные скрипты в каталоге с бэкапами:
· restore-bootstrap.bat для операционной системы Windows.
· restore-bootstrap.sh для операционных систем Linux и macOS.
Эти скрипты запускают встроенный в JAR-файл мастер восстановления. Для запуска интерфейса восстановления вручную через терминал используется команда:
|
(название JAR-файла должно точно соответствовать версии установленного мода).
Консольный интерфейс утилиты работает в интерактивном режиме:
1. Запуск сканирования папки бэкапов для анализа доступных цепочек и снимков.
2. Отображение списка доступных точек восстановления с указанием даты, времени и типа копии (Full, Diff, Inc).
3. Проверка целостности цепочки выбранного архива. Если это инкрементная копия, утилита автоматически проверит, присутствуют ли все промежуточные части от базового полного бэкапа до выбранной точки.
4. Запрос целевой папки для распаковки. Утилита выполнит последовательное слияние и замену файлов, реконструируя точное состояние мира на момент создания выбранной копии.
Перед началом восстановления необходимо полностью остановить сервер Minecraft. Попытка восстановления файлов на запущенном сервере приведёт к повреждению базы данных мира и файлов регионов (.mca).
Особенности работы на разных платформах и оптимизация
Модификация имеет архитектурные различия в зависимости от выбранной платформы установки:
· Клиентские toasts-уведомления: Визуальные всплывающие уведомления о начале и завершении создания бэкапа реализованы через ванильную систему toasts. Для их отображения на стороне клиента должен быть установлен совместимый мод (Forge, NeoForge или Fabric). При использовании мода на серверах Spigot или Paper клиенты без установленного мода не будут видеть визуальных уведомлений, а будут получать только обычные текстовые сообщения в чате, если это разрешено настройками логирования.
· Версия 1.7.10: Из-за технических ограничений старых версий движка игры версия мода для Minecraft 1.7.10 не поддерживает систему графических toasts-уведомлений. Вместо этого прогресс копирования выводится непосредственно поверх игрового экрана в виде простого текстового оверлея.
· Контроль выделения оперативной памяти: Операция асинхронного сжатия требует выделения буферов памяти в JVM. Если на сервере с ограниченным объёмом RAM (например, 2-4 ГБ) установить слишком большой размер параметра config.advancedbackups.buffer (более 10-20 МБ) и высокий уровень сжатия config.advancedbackups.zips.compression (уровень 8-9), это может спровоцировать переполнение кучи (JVM Heap) и аварийное завершение работы сервера с ошибкой OutOfMemoryError. Для стабильной работы на серверах с ограниченными ресурсами рекомендуется сохранять стандартный размер буфера в 1 МБ и уровень сжатия не выше 4.
Заключение
Advanced Backups — это комплексное инструментальное решение для обеспечения сохранности игровых миров в Minecraft Java Edition. В отличие от простых альтернатив типа Simple Backups или ванильных инструментов, этот мод позволяет развернуть полноценную стратегию резервного копирования с минимальными затратами дискового пространства благодаря использованию инкрементных цепочек. Основным ограничением модификации является отсутствие встроенных облачных провайдеров для автоматической загрузки архивов во внешние хранилища (например, Google Drive или FTP-серверы непосредственно из мода), что требует настройки внешних скриптов синхронизации папки ./backups. Модификация рекомендуется для установки на публичных и приватных серверах среднего масштаба, где критически важно обеспечить защиту от потери данных без остановки игрового процесса.
Установка
Базовая установка занимает около 5 минут. Общий процесс одинаков, отличается только лоадер и совместимый билд.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











