
Advanced Backups — Minecraft Java Edition 1.7.10 – 1.21.4
Afhængigheder: · Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Minecraft-version: 1.7.10 - 1.21.4 · Mod-version: 3.7.1…
Afhængigheder: · Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Minecraft-version: 1.7.10 - 1.21.4 · Mod-version: 3.7.1 Standardmekanismen til sikkerhedskopiering i Minecraft Java Edition har alvorlige begrænsn
Afhængigheder:
· Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper
· Minecraft-version: 1.7.10 - 1.21.4
· Mod-version: 3.7.1
Standardmekanismen til sikkerhedskopiering i Minecraft Java Edition har alvorlige begrænsninger. I vanilla-spillet oprettes sikkerhedskopier manuelt via menuen eller kræver, at serveren stoppes for at kopiere filer. Disse operationer udføres i spillets hovedtråd, hvilket fører til frysninger i gameplayet, lag eller midlertidig utilgængelighed af serveren, mens gigabyte af data skrives til disken. Derudover opretter standardmetoden kun fulde kopier af verdenen, hvilket hurtigt fylder drevet op med duplikerede data. Modifikationen Advanced Backups løser disse problemer ved at tilbyde asynkron, planlagt sikkerhedskopiering med understøttelse af differentielle og inkrementelle komprimeringsmodeller, fleksibel oprydning af forældede arkiver og et indbygget værktøj til gendannelse af data.
Sikkerhedskopieringsmekanismer: Zip, Differential og Incremental
Værktøjet tilbyder tre tilstande til behandling af verdensfiler, som bestemmer balancen mellem udførelseshastighed, mængden af brugt diskplads og gendannelsens pålidelighed:
· Zip (fulde kopier): Princippet i driften består i at arkivere hele verdensmappen i en enkelt .zip-fil. Denne metode er den mest ressourcekrævende og kræver mest ledig plads på drevet, da hver sikkerhedskopi indeholder alle filer, uanset om de er blevet ændret. Dens fordel er enkelheden i gendannelsen — det er nok blot at udpakke den ønskede fil.
· Differential (differentiel kopiering): Baseret på oprettelse af ét fuldt basisarkiv ("full") og efterfølgende delvise arkiver ("partial"). De delvise arkiver registrerer kun de filer, der er blevet ændret siden oprettelsen af det fulde basisarkiv. Omfanget af de mellemliggende sikkerhedskopier reduceres betydeligt. For at gendanne verdenens tilstand på et bestemt tidspunkt kræves der kun to filer: det fulde basisarkiv og det seneste delvise arkiv før denne dato.
· Incremental (inkrementel kopiering): Anvender også konceptet med fulde og delvise arkiver. Hvert delvist arkiv indeholder dog kun de ændringer, der er sket siden oprettelsen af det foregående delvise arkiv. Dette minimerer belastningen på diskundersystemet og sparer den maksimale mængde ledig plads. Ulempen er en øget risiko for datatab: hvis bare én fil i kæden af inkrementelle kopier bliver beskadiget, vil det være umuligt at gendanne de efterfølgende kopier, indtil der oprettes en ny fuld sikkerhedskopi. Gendannelsesprocessen er også den langsomste, da den kræver en sekventiel sammenfletning af hele kæden af filer.
Oprettelsen af nye kæder styres af parametrene config.advancedbackups.chains.length og config.advancedbackups.chains.maxpercent. Den første parameter bestemmer det maksimale antal delvise kopier i en kæde, før der tvangsoprettes et nyt fuldt arkiv. Den anden parameter udfører en størrelseskontrol: hvis omfanget af de akkumulerede ændringer i et delvist arkiv overstiger den fastsatte procentdel af det fulde arkivs størrelse, nulstiller systemet automatisk kæden og opretter en ny fuld sikkerhedskopi.
Systemet til automatisk oprydning (Purging) og arbejde med kæder
For at forhindre, at disken bliver fyldt op, er der i modifikationen implementeret tre kriterier for automatisk sletning af forældede data:
· Efter antal opbevaringsdage (config.advancedbackups.purge.days).
· Efter den samlede størrelse af sikkerhedskopimappen i gigabyte (config.advancedbackups.purge.size).
· Efter det samlede antal kopifiler (config.advancedbackups.purge.count).
Ved brug af differentielle eller inkrementelle kopier er sletning af enkelte filer fra en kæde umulig, da det ville bryde dataintegriteten. Modden arbejder med hele kæder (chains). En kæde betragtes som forældet og slettes kun, når alle dens komponenter (inklusive den fulde basis-sikkerhedskopi og alle tilknyttede delvise arkiver) opfylder oprydningskriterierne. Ved hjælp af parameteren config.advancedbackups.purge.incrementalchains kan man indstille det mindste antal fulde kæder, som systemet er forpligtet til at bevare uanset andre oprydningsbegrænsninger. Brugeren kan også oprette "snapshots" — det er statiske kopier af verdenen, som er beskyttet mod automatisk sletning.
Konfiguration af konfigurationsfilen AdvancedBackups.properties
Driftsparametrene for sikkerhedskopieringssystemet gemmes i filen AdvancedBackups.properties, som oprettes i mappen config ved første opstart. De vigtigste konfigurationsnøgler:
Parameter | Standardværdi | Beskrivelse |
| true | Giver mulighed for helt at aktivere (true) eller deaktivere (false) automatisk oprettelse af sikkerhedskopier. |
| true | Bestemmer, om verdenen skal tvangsgemmes til disken, før kopieringen udføres. |
| true | Deaktiverer den almindelige autogemning, mens en kopi oprettes, og aktiverer den igen, når processen er afsluttet. |
| 1048576 | Størrelsen på I/O-bufferen i bytes. En værdi over RAM-grænsen kan føre til et OutOfMemoryError-nedbrud. |
| false | Tvungen tømning af diskens skrivecache. Bruges ikke i Minecraft-versioner tidligere end 1.16. |
| true | Kontrol af spilleraktivitet. Hvis der ikke har været spillere på serveren siden den seneste sikkerhedskopi, springes oprettelsen af en kopi over. |
| differential | Typen af sikkerhedskopier. Mulige værdier: zip (fulde kopier), differential (differentiel kopiering), incremental (inkrementel kopiering). |
| session.lock,*_old | En kommasepareret undtagelsesliste for filer i verdensmappen, som ikke tilføjes til arkivet (masker som * er tilladt). |
| ./backups | Stien til mappen, hvor de færdige sikkerhedskopier gemmes (relativ eller absolut). |
| 0.25 | Det mindste tilladte interval mellem sikkerhedskopier i timer. Forhindrer dublering. 0 — deaktiveret. |
| 24.0 | Det maksimale interval i timer, hvorefter en sikkerhedskopi tvangskøres, hvis der ikke har været andre vellykkede kopier. |
| true | Planlæggerens grundlag: beregning af serverens oppetid (true) eller den reelle astronomiske OS-tid (false). |
| 1:00 | En liste over intervaller for oprettelse af kopier (for eksempel 1:00 for en time-baseret sikkerhedskopi eller det præcise reelle tidspunkt 04:00,16:00). |
| false | Tvungen oprettelse af en sikkerhedskopi af verdenen ved stop eller nedlukning af serveren. Respekterer grænsen frequency.min. |
| false | Oprettelse af en sikkerhedskopi af verdenen ved opstart af serveren. Respekterer grænsen frequency.min. |
| 30 | Forsinkelsen i sekunder af opstarts-sikkerhedskopien, efter serveren er tændt. Mindsteværdien er 5 sekunder. |
| ops | Kategorien af modtagere af toasts-meddelelser om arkiveringsprocessen i spillet (ops — operatører, all — alle, none — ingen). |
| 500 | Hyppigheden af afsendelse af fremskridtspakker til spillere i millisekunder. Lavere værdier øger netværksbelastningen. |
| true | Tilladelse til at udskrive detaljeret procentvist arkiveringsfremskridt til serverens systemkonsol. |
| 5000 | Intervallet for logning af sikkerhedskopieringens forløb til konsollen i millisekunder. |
| 50.0 | Grænsen for den samlede størrelse af kopimappen i gigabyte. De ældste kopier slettes ved overskridelse. 0 — deaktiveret. |
| 0 | Opbevaringsperioden for sikkerhedskopier i dage. Ældre slettes. 0 — deaktiveret. |
| 0 | Det maksimalt tilladte antal kopier på disken. Ældre slettes. 0 — deaktiveret. |
| true | Tilladelse til at slette inkrementelle kæder ved oprydning efter størrelse. Hvis false, ryddes inkrementelle kopier aldrig op. |
| 1 | Det mindste antal inkrementelle kæder, som oprydningen er forpligtet til at efterlade på disken under alle omstændigheder. |
| 4 | Komprimeringsniveauet for ZIP-arkiver (fra 1 til 9). Højere værdier sparer plads, men belaster CPU'en. |
| 50 | Det maksimale antal delvise sikkerhedskopier (differentielle/inkrementelle), før der oprettes et nyt fuldt arkiv. |
| true | Tilladelse til at komprimere fulde basiskopier og efterfølgende mellemliggende kopier inde i kæderne. |
| true | Intelligent nulstilling af kæden. Hvis alle verdensfiler er blevet ændret, bliver kopien automatisk en fuld kopi. |
| 50.0 | Størrelsesgrænsen for en delvis sikkerhedskopi i procent af den fulde. Hvis den overskrides, oprettes en fuld sikkerhedskopi. |
Kommandoer til styring af sikkerhedskopiering
Modifikationen styres ved hjælp af konsolkommandoer, der kræver operatøradgangsniveau (kommandoindstillingerne blev opdateret i version 3.7 for bedre kompatibilitet med command blocks ved at sænke kravet til rettighedsniveauet til værdien 2):
· /backup start — starter sikkerhedskopieringsprocessen i asynkron tilstand. Kommandoen tager hensyn til alle indstillinger for tidsplan, mindste intervaller og spilleraktivitet.
· /backup force — starter tvangsmæssigt kopieringsprocessen og ignorerer kontroller af spilleraktivitet og tidsgrænserne frequency.min.
· /backup snapshot <name> — opretter en fuld sikkerhedskopi (snapshot) under det angivne navn i undermappen snapshots. Dette arkiv tages ikke i betragtning under den automatiske oprydning af forældede sikkerhedskopier og slettes aldrig automatisk af systemet.
· /backup reload-config — genindlæser parametrene fra filen AdvancedBackups.properties uden behov for at genstarte serveren eller spilklienten. I mod-versioner før 2.2 bruges den alternative kommando /advancedbackups reload til dette.
· /backup check — analyserer planlæggerens nuværende tilstand og udskriver oplysninger om, hvor lang tid der er tilbage til den næste planlagte sikkerhedskopi ifølge tidsplanen.
· /backup reset — nulstiller tælleren for den nuværende kæde af inkrementelle eller differentielle kopier. Den næste planlagte eller manuelt startede sikkerhedskopi vil tvangsmæssigt blive oprettet som et fuldt arkiv ("full").
Sænkning af rettighedsniveauet for kommandoer til værdien 2 gør det muligt at automatisere oprettelsen af kopier ved hjælp af Command Blocks og tredjeparts planlæggerplugins, der kalder konsolkommandoer på serverens vegne.
Konsolværktøj til gendannelse (Command Line Restoration)
Da differentielle og inkrementelle sikkerhedskopier består af et stort antal indbyrdes forbundne ændringsfiler, er det en kompleks proces at gendanne dem manuelt. For at løse denne opgave er der indbygget et særligt konsolværktøj i modifikationens JAR-fil.
Ved den første oprettelse af kopier genererer modifikationen automatisk hjælpescripts i mappen med sikkerhedskopier:
· restore-bootstrap.bat til operativsystemet Windows.
· restore-bootstrap.sh til operativsystemerne Linux og macOS.
Disse scripts starter gendannelsesguiden, der er indbygget i JAR-filen. For at starte gendannelsesgrænsefladen manuelt via terminalen bruges kommandoen:
|
(JAR-filens navn skal nøjagtigt svare til versionen af den installerede mod).
Værktøjets konsolgrænseflade fungerer i interaktiv tilstand:
1. Start af en scanning af sikkerhedskopimappen for at analysere de tilgængelige kæder og snapshots.
2. Visning af en liste over tilgængelige gendannelsespunkter med angivelse af dato, tidspunkt og kopitype (Full, Diff, Inc).
3. Kontrol af integriteten af det valgte arkivs kæde. Hvis det er en inkrementel kopi, kontrollerer værktøjet automatisk, om alle de mellemliggende dele fra den fulde basis-sikkerhedskopi til det valgte punkt er til stede.
4. Anmodning om målmappen til udpakning. Værktøjet udfører en sekventiel sammenfletning og udskiftning af filer og rekonstruerer den nøjagtige tilstand af verdenen på det tidspunkt, hvor den valgte kopi blev oprettet.
Før gendannelsen påbegyndes, skal Minecraft-serveren stoppes helt. Et forsøg på at gendanne filer på en kørende server vil føre til beskadigelse af verdensdatabasen og regionsfilerne (.mca).
Særlige forhold på forskellige platforme og optimering
Modifikationen har arkitektoniske forskelle afhængigt af den valgte installationsplatform:
· Toasts-meddelelser på klientsiden: Visuelle pop op-meddelelser om begyndelsen og afslutningen af oprettelsen af en sikkerhedskopi er implementeret via vanilla-toasts-systemet. For at vise dem på klientsiden skal der være installeret en kompatibel mod (Forge, NeoForge eller Fabric). Ved brug af modden på Spigot- eller Paper-servere vil klienter uden den installerede mod ikke se visuelle meddelelser, men vil kun modtage almindelige tekstbeskeder i chatten, hvis logningsindstillingerne tillader det.
· Version 1.7.10: På grund af tekniske begrænsninger i ældre versioner af spilmotoren understøtter mod-versionen til Minecraft 1.7.10 ikke systemet med grafiske toasts-meddelelser. I stedet vises kopieringsfremskridtet direkte oven på spilskærmen i form af et simpelt tekstoverlay.
· Kontrol af RAM-tildeling: Den asynkrone komprimeringsoperation kræver tildeling af hukommelsesbuffere i JVM'en. Hvis man på en server med en begrænset mængde RAM (for eksempel 2-4 GB) indstiller en for stor værdi for parameteren config.advancedbackups.buffer (mere end 10-20 MB) og et højt komprimeringsniveau config.advancedbackups.zips.compression (niveau 8-9), kan det udløse et JVM Heap-overløb og en nødnedlukning af serveren med en OutOfMemoryError-fejl. For stabil drift på servere med begrænsede ressourcer anbefales det at bevare standardbufferstørrelsen på 1 MB og et komprimeringsniveau på højst 4.
Konklusion
Advanced Backups er en omfattende værktøjsløsning til at sikre bevarelsen af spilverdener i Minecraft Java Edition. I modsætning til simple alternativer som Simple Backups eller vanilla-værktøjer giver denne mod mulighed for at implementere en fuldt udbygget sikkerhedskopieringsstrategi med minimale omkostninger til diskplads takket være brugen af inkrementelle kæder. Modifikationens største begrænsning er fraværet af indbyggede cloud-udbydere til automatisk upload af arkiver til ekstern lagring (for eksempel Google Drive eller FTP-servere direkte fra modden), hvilket kræver opsætning af eksterne scripts til synkronisering af mappen ./backups. Modifikationen anbefales til installation på offentlige og private servere af mellemstor skala, hvor det er kritisk vigtigt at sikre beskyttelse mod datatab uden at stoppe gameplayet.
Installation
En typisk installation tager omkring 5 minutter. Forløbet er det samme; kun Loader og den matchende build er forskellige.
- 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.








