
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.











