
Advanced Backups — Minecraft Java Edition 1.7.10 – 1.21.4
Zależności: · Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Wersja Minecraft: 1.7.10 - 1.21.4 · Wersja moda: 3.7.1 Standardowy…
Zależności: · Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Wersja Minecraft: 1.7.10 - 1.21.4 · Wersja moda: 3.7.1 Standardowy mechanizm tworzenia kopii zapasowych w Minecraft Java Edition ma poważne ogranicze
Zależności:
· Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper
· Wersja Minecraft: 1.7.10 - 1.21.4
· Wersja moda: 3.7.1
Standardowy mechanizm tworzenia kopii zapasowych w Minecraft Java Edition ma poważne ograniczenia. W grze vanilla kopie zapasowe tworzy się ręcznie za pomocą menu lub wymaga to zatrzymania serwera w celu skopiowania plików. Operacje te są wykonywane w głównym wątku gry, co prowadzi do blokowania rozgrywki, lagów lub tymczasowej niedostępności serwera podczas zapisywania gigabajtów danych na dysk. Ponadto standardowa metoda tworzy wyłącznie pełne kopie świata, szybko zapełniając nośnik zduplikowanymi danymi. Modyfikacja Advanced Backups rozwiązuje te problemy, oferując asynchroniczne tworzenie kopii zapasowych według harmonogramu z obsługą różnicowych i przyrostowych modeli kompresji, elastycznym usuwaniem przestarzałych archiwów oraz wbudowanym narzędziem do odzyskiwania danych.
Mechanizmy tworzenia kopii zapasowych: Zip, Differential i Incremental
Narzędzie udostępnia trzy tryby przetwarzania plików świata, które określają równowagę między szybkością wykonania, ilością wykorzystywanego miejsca na dysku a niezawodnością odzyskiwania:
· Zip (pełne kopie): Zasada działania polega na zarchiwizowaniu całego folderu świata do jednego pliku .zip. Ten sposób jest najbardziej zasobochłonny i wymaga najwięcej wolnego miejsca na nośniku, ponieważ każda kopia zapasowa zawiera wszystkie pliki niezależnie od tego, czy zostały zmienione. Jego zaletą jest prostota odzyskiwania — wystarczy po prostu rozpakować potrzebny plik.
· Differential (kopiowanie różnicowe): Opiera się na utworzeniu jednego bazowego archiwum pełnego ("full") oraz kolejnych archiwów częściowych ("partial"). Archiwa częściowe zapisują tylko te pliki, które uległy zmianie od momentu utworzenia bazowego archiwum pełnego. Rozmiar pośrednich kopii zapasowych znacznie się zmniejsza. Do odtworzenia stanu świata w określonym momencie potrzebne są tylko dwa pliki: bazowe archiwum pełne oraz ostatnie archiwum częściowe sprzed tej daty.
· Incremental (kopiowanie przyrostowe): Również wykorzystuje koncepcję archiwów pełnych i częściowych. Jednak każde archiwum częściowe zawiera tylko zmiany, które nastąpiły od momentu utworzenia poprzedniego archiwum częściowego. Minimalizuje to obciążenie podsystemu dyskowego i oszczędza maksymalną ilość wolnego miejsca. Wadą jest zwiększone ryzyko utraty danych: jeśli choćby jeden plik w łańcuchu kopii przyrostowych zostanie uszkodzony, odtworzenie kolejnych kopii aż do utworzenia nowej pełnej kopii zapasowej będzie niemożliwe. Proces odzyskiwania jest również najwolniejszy, ponieważ wymaga sekwencyjnego scalania całego łańcucha plików.
Tworzenie nowych łańcuchów jest regulowane przez parametry config.advancedbackups.chains.length oraz config.advancedbackups.chains.maxpercent. Pierwszy parametr określa maksymalną liczbę kopii częściowych w łańcuchu przed wymuszonym utworzeniem nowego archiwum pełnego. Drugi parametr przeprowadza kontrolę rozmiaru: jeśli ilość nagromadzonych zmian w archiwum częściowym przekroczy ustaloną wartość procentową rozmiaru archiwum pełnego, system automatycznie resetuje łańcuch i tworzy nową pełną kopię zapasową.
System automatycznego czyszczenia (Purging) i praca z łańcuchami
Aby zapobiec zapełnieniu dysku, w modyfikacji zaimplementowano trzy kryteria automatycznego usuwania przestarzałych danych:
· Według liczby dni przechowywania (config.advancedbackups.purge.days).
· Według całkowitego rozmiaru folderu kopii zapasowych w gigabajtach (config.advancedbackups.purge.size).
· Według całkowitej liczby plików kopii (config.advancedbackups.purge.count).
Podczas korzystania z kopii różnicowych lub przyrostowych usunięcie pojedynczych plików z łańcucha jest niemożliwe, ponieważ naruszyłoby to integralność danych. Mod operuje na całych łańcuchach (chains). Łańcuch jest uznawany za przestarzały i usuwany tylko wtedy, gdy wszystkie jego składniki (w tym bazowa pełna kopia zapasowa oraz wszystkie powiązane archiwa częściowe) spełniają kryteria czyszczenia. Za pomocą parametru config.advancedbackups.purge.incrementalchains można ustawić minimalną liczbę pełnych łańcuchów, które system jest zobowiązany zachować niezależnie od innych ograniczeń czyszczenia. Użytkownik może również tworzyć „migawki" (snapshots) — są to statyczne kopie świata, które są chronione przed automatycznym usunięciem.
Konfiguracja pliku konfiguracyjnego AdvancedBackups.properties
Parametry działania systemu tworzenia kopii zapasowych są przechowywane w pliku AdvancedBackups.properties, który jest tworzony w katalogu config podczas pierwszego uruchomienia. Główne klucze konfiguracji:
Parametr | Wartość domyślna | Opis |
| true | Pozwala całkowicie włączyć (true) lub wyłączyć (false) automatyczne tworzenie kopii zapasowych. |
| true | Określa, czy świat ma zostać przymusowo zapisany na dysk przed wykonaniem kopii. |
| true | Wyłącza standardowy autozapis podczas tworzenia kopii i włącza go po zakończeniu procesu. |
| 1048576 | Rozmiar bufora wejścia-wyjścia w bajtach. Wartość przekraczająca limit pamięci RAM może spowodować awarię OutOfMemoryError. |
| false | Przymusowe opróżnianie pamięci podręcznej zapisu dysku. Nieużywane w wersjach Minecraft wcześniejszych niż 1.16. |
| true | Sprawdzanie aktywności graczy. Jeśli od ostatniej kopii zapasowej na serwerze nie było graczy, tworzenie kopii jest pomijane. |
| differential | Typ kopii zapasowych. Możliwe wartości: zip (pełne kopie), differential (kopiowanie różnicowe), incremental (kopiowanie przyrostowe). |
| session.lock,*_old | Lista wykluczeń oddzielona przecinkami dla plików w folderze świata, które nie są dodawane do archiwum (dozwolone są maski w rodzaju *). |
| ./backups | Ścieżka do katalogu zapisu gotowych kopii zapasowych (względna lub bezwzględna). |
| 0.25 | Minimalny dozwolony odstęp między kopiami zapasowymi w godzinach. Zapobiega duplikowaniu. 0 — wyłączone. |
| 24.0 | Maksymalny odstęp w godzinach, po którym kopia zapasowa jest uruchamiana przymusowo, jeśli nie było innych udanych kopii. |
| true | Podstawa harmonogramu: obliczanie czasu pracy serwera (true) lub rzeczywisty astronomiczny czas systemu operacyjnego (false). |
| 1:00 | Lista odstępów tworzenia kopii (na przykład 1:00 dla kopii zapasowej co godzinę lub dokładny rzeczywisty czas 04:00,16:00). |
| false | Przymusowe tworzenie kopii zapasowej świata podczas zatrzymania lub wyłączenia serwera. Respektuje limit frequency.min. |
| false | Tworzenie kopii zapasowej świata podczas uruchamiania serwera. Respektuje limit frequency.min. |
| 30 | Opóźnienie uruchomienia startowej kopii zapasowej w sekundach po włączeniu serwera. Wartość minimalna to 5 sekund. |
| ops | Kategoria odbiorców powiadomień toasts o procesie archiwizacji w grze (ops — operatorzy, all — wszyscy, none — nikt). |
| 500 | Częstotliwość wysyłania pakietów postępu do graczy w milisekundach. Niższe wartości zwiększają obciążenie sieci. |
| true | Zezwolenie na wyświetlanie szczegółowego procentowego postępu archiwizacji w konsoli systemowej serwera. |
| 5000 | Odstęp rejestrowania przebiegu tworzenia kopii zapasowej w konsoli w milisekundach. |
| 50.0 | Limit całkowitego rozmiaru folderu kopii w gigabajtach. Najstarsze kopie są usuwane po jego przekroczeniu. 0 — wyłączone. |
| 0 | Okres przechowywania kopii zapasowych w dniach. Starsze są usuwane. 0 — wyłączone. |
| 0 | Maksymalna dozwolona liczba kopii na dysku. Starsze są usuwane. 0 — wyłączone. |
| true | Zezwolenie na usuwanie łańcuchów przyrostowych w przypadku czyszczenia według rozmiaru. Jeśli false, kopie przyrostowe nigdy nie są czyszczone. |
| 1 | Minimalna liczba łańcuchów przyrostowych, którą czyszczenie jest zobowiązane pozostawić na dysku w każdym przypadku. |
| 4 | Poziom kompresji archiwów ZIP (od 1 do 9). Wyższe wartości oszczędzają miejsce, ale obciążają procesor. |
| 50 | Maksymalna liczba częściowych kopii zapasowych (różnicowych/przyrostowych) przed utworzeniem nowego archiwum pełnego. |
| true | Zezwolenie na kompresję bazowych pełnych kopii oraz kolejnych kopii pośrednich wewnątrz łańcuchów. |
| true | Inteligentny reset łańcucha. Jeśli wszystkie pliki świata zostały zmienione, kopia automatycznie staje się pełna. |
| 50.0 | Limit rozmiaru częściowej kopii zapasowej w procentach pełnej. W przypadku przekroczenia tworzona jest pełna kopia zapasowa. |
Polecenia zarządzania kopiami zapasowymi
Zarządzanie modyfikacją odbywa się za pomocą poleceń konsolowych, które wymagają poziomu dostępu operatora (opcje poleceń zostały zaktualizowane w wersji 3.7 w celu lepszej kompatybilności z command blocks poprzez obniżenie wymaganego poziomu uprawnień do wartości 2):
· /backup start — uruchamia proces tworzenia kopii zapasowej w trybie asynchronicznym. Polecenie uwzględnia wszystkie ustawienia harmonogramu, minimalnych odstępów i aktywności graczy.
· /backup force — przymusowo uruchamia proces kopiowania, ignorując kontrole aktywności graczy oraz limity czasu frequency.min.
· /backup snapshot <name> — tworzy pełną kopię zapasową (migawkę) pod podaną nazwą w podfolderze snapshots. To archiwum nie jest uwzględniane podczas automatycznego czyszczenia przestarzałych kopii zapasowych i nigdy nie jest usuwane automatycznie przez system.
· /backup reload-config — ponownie ładuje parametry z pliku AdvancedBackups.properties bez konieczności ponownego uruchamiania serwera lub klienta gry. W wersjach moda przed 2.2 używa się do tego alternatywnego polecenia /advancedbackups reload.
· /backup check — analizuje bieżący stan harmonogramu i wyświetla informacje o tym, ile czasu pozostało do następnej zaplanowanej kopii zapasowej zgodnie z harmonogramem.
· /backup reset — resetuje licznik bieżącego łańcucha kopii przyrostowych lub różnicowych. Następna zaplanowana lub uruchomiona ręcznie kopia zapasowa zostanie przymusowo utworzona jako archiwum pełne ("full").
Obniżenie poziomu uprawnień dla poleceń do wartości 2 pozwala zautomatyzować tworzenie kopii za pomocą Command Blocks oraz zewnętrznych pluginów harmonogramujących, które wywołują polecenia konsolowe w imieniu serwera.
Konsolowe narzędzie odzyskiwania (Command Line Restoration)
Ponieważ kopie różnicowe i przyrostowe składają się z dużej liczby powiązanych ze sobą plików zmian, ich ręczne odzyskiwanie jest złożonym procesem. W celu rozwiązania tego zadania w pliku JAR modyfikacji wbudowano specjalne narzędzie konsolowe.
Podczas pierwszego tworzenia kopii modyfikacja automatycznie generuje skrypty pomocnicze w katalogu z kopiami zapasowymi:
· restore-bootstrap.bat dla systemu operacyjnego Windows.
· restore-bootstrap.sh dla systemów operacyjnych Linux i macOS.
Te skrypty uruchamiają kreator odzyskiwania wbudowany w plik JAR. Aby ręcznie uruchomić interfejs odzyskiwania za pomocą terminala, używa się polecenia:
|
(nazwa pliku JAR musi dokładnie odpowiadać wersji zainstalowanego moda).
Interfejs konsolowy narzędzia działa w trybie interaktywnym:
1. Uruchomienie skanowania folderu kopii zapasowych w celu analizy dostępnych łańcuchów i migawek.
2. Wyświetlenie listy dostępnych punktów odzyskiwania ze wskazaniem daty, godziny i typu kopii (Full, Diff, Inc).
3. Sprawdzenie integralności łańcucha wybranego archiwum. Jeśli jest to kopia przyrostowa, narzędzie automatycznie sprawdzi, czy obecne są wszystkie pośrednie części od bazowej pełnej kopii zapasowej do wybranego punktu.
4. Zażądanie folderu docelowego do rozpakowania. Narzędzie wykona sekwencyjne scalenie i zastąpienie plików, rekonstruując dokładny stan świata z momentu utworzenia wybranej kopii.
Przed rozpoczęciem odzyskiwania należy całkowicie zatrzymać serwer Minecraft. Próba odzyskania plików na uruchomionym serwerze doprowadzi do uszkodzenia bazy danych świata oraz plików regionów (.mca).
Specyfika działania na różnych platformach i optymalizacja
Modyfikacja ma różnice architektoniczne w zależności od wybranej platformy instalacji:
· Powiadomienia toasts po stronie klienta: Wizualne wyskakujące powiadomienia o rozpoczęciu i zakończeniu tworzenia kopii zapasowej są zaimplementowane za pomocą systemu toasts vanilla. Aby wyświetlać je po stronie klienta, musi być zainstalowany kompatybilny mod (Forge, NeoForge lub Fabric). Podczas korzystania z moda na serwerach Spigot lub Paper klienci bez zainstalowanego moda nie będą widzieć powiadomień wizualnych, a otrzymają jedynie zwykłe wiadomości tekstowe na czacie, jeśli zezwalają na to ustawienia rejestrowania.
· Wersja 1.7.10: Ze względu na techniczne ograniczenia starszych wersji silnika gry wersja moda dla Minecraft 1.7.10 nie obsługuje systemu graficznych powiadomień toasts. Zamiast tego postęp kopiowania jest wyświetlany bezpośrednio na ekranie gry w postaci prostej nakładki tekstowej.
· Kontrola przydziału pamięci RAM: Operacja asynchronicznej kompresji wymaga przydzielenia buforów pamięci w JVM. Jeśli na serwerze o ograniczonej ilości pamięci RAM (na przykład 2-4 GB) ustawi się zbyt dużą wartość parametru config.advancedbackups.buffer (więcej niż 10-20 MB) oraz wysoki poziom kompresji config.advancedbackups.zips.compression (poziom 8-9), może to spowodować przepełnienie sterty (JVM Heap) i awaryjne zakończenie pracy serwera z błędem OutOfMemoryError. Dla stabilnego działania na serwerach o ograniczonych zasobach zaleca się zachowanie standardowego rozmiaru bufora 1 MB oraz poziomu kompresji nie wyższego niż 4.
Podsumowanie
Advanced Backups to kompleksowe rozwiązanie narzędziowe zapewniające ochronę światów gry w Minecraft Java Edition. W przeciwieństwie do prostych alternatyw, takich jak Simple Backups czy narzędzia vanilla, ten mod pozwala wdrożyć pełnoprawną strategię tworzenia kopii zapasowych przy minimalnym zużyciu miejsca na dysku dzięki zastosowaniu łańcuchów przyrostowych. Głównym ograniczeniem modyfikacji jest brak wbudowanych dostawców chmurowych do automatycznego przesyłania archiwów do zewnętrznych magazynów (na przykład Google Drive lub serwerów FTP bezpośrednio z moda), co wymaga skonfigurowania zewnętrznych skryptów synchronizacji folderu ./backups. Modyfikacja jest zalecana do instalacji na publicznych i prywatnych serwerach średniej skali, gdzie krytycznie ważne jest zapewnienie ochrony przed utratą danych bez zatrzymywania rozgrywki.
Instalacja
Typowa instalacja zajmuje około 5 minut. Procedura jest taka sama; różni się tylko loader i odpowiedni build.
- 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.











