
Advanced Backups — Minecraft Java Edition 1.7.10 – 1.21.4
Dipendenze: · Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Versione di Minecraft: 1.7.10 - 1.21.4 · Versione della mod: 3.7.1 Il…
Dipendenze: · Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Versione di Minecraft: 1.7.10 - 1.21.4 · Versione della mod: 3.7.1 Il meccanismo standard di backup in Minecraft Java Edition presenta limitazioni si
Dipendenze:
· Loader: Forge, NeoForge, Fabric, Quilt, Spigot, Paper
· Versione di Minecraft: 1.7.10 - 1.21.4
· Versione della mod: 3.7.1
Il meccanismo standard di backup in Minecraft Java Edition presenta limitazioni significative. Nel gioco vanilla, la creazione dei backup viene eseguita manualmente tramite un menu oppure richiede l'arresto del server per copiare i file. Queste operazioni vengono eseguite nel thread principale del gioco, il che comporta il blocco del gameplay, lag o l'indisponibilità temporanea del server durante la scrittura di gigabyte di dati su disco. Inoltre, il metodo standard crea solo copie complete del mondo, riempiendo rapidamente l'unità di archiviazione con dati duplicati. La modifica Advanced Backups risolve questi problemi offrendo backup asincroni pianificati con supporto per i modelli di compressione differenziale e incrementale, una pulizia flessibile degli archivi obsoleti e un'utilità integrata per il ripristino dei dati.
Meccanismi di backup: Zip, Differential e Incremental
L'utilità offre tre modalità di elaborazione dei file del mondo, che determinano l'equilibrio tra velocità di esecuzione, quantità di spazio su disco utilizzato e affidabilità del ripristino:
· Zip (copie complete): Il principio di funzionamento consiste nell'archiviare l'intera cartella del mondo in un unico file .zip. Questo metodo è il più dispendioso in termini di risorse e richiede la maggior quantità di spazio libero sull'unità di archiviazione, poiché ogni backup contiene tutti i file indipendentemente dal fatto che siano stati modificati o meno. Il suo vantaggio è la semplicità del ripristino: è sufficiente estrarre il file necessario.
· Differential (backup differenziale): Si basa sulla creazione di un unico archivio di base completo ("full") e dei successivi archivi parziali ("partial"). Gli archivi parziali registrano solo i file che hanno subito modifiche dal momento della creazione dell'archivio di base completo. Il volume dei backup intermedi si riduce notevolmente. Per ripristinare lo stato del mondo a un determinato momento sono necessari solo due file: l'archivio di base completo e l'ultimo archivio parziale precedente a quella data.
· Incremental (backup incrementale): Utilizza anch'esso il concetto di archivi completi e parziali. Tuttavia, ogni archivio parziale contiene solo le modifiche avvenute dal momento della creazione dell'ultimo archivio parziale precedente. Ciò riduce al minimo il carico sul sottosistema disco e consente di risparmiare la massima quantità di spazio libero. Lo svantaggio è un maggiore rischio di perdita di dati: se anche un solo file della catena di copie incrementali viene danneggiato, sarà impossibile ripristinare le copie successive fino alla creazione di un nuovo backup completo. Anche il processo di ripristino è il più lento, poiché richiede l'unione sequenziale dell'intera catena di file.
La creazione di nuove catene è regolata dai parametri config.advancedbackups.chains.length e config.advancedbackups.chains.maxpercent. Il primo parametro determina il numero massimo di copie parziali in una catena prima della creazione forzata di un nuovo archivio completo. Il secondo parametro esegue un controllo delle dimensioni: se il volume delle modifiche accumulate in un archivio parziale supera la percentuale stabilita rispetto alla dimensione dell'archivio completo, il sistema reimposta automaticamente la catena e crea un nuovo backup completo.
Sistema di pulizia automatica (Purging) e gestione delle catene
Per prevenire il riempimento del disco, nella modifica sono stati implementati tre criteri di eliminazione automatica dei dati obsoleti:
· In base al numero di giorni di conservazione (config.advancedbackups.purge.days).
· In base al volume totale della cartella dei backup in gigabyte (config.advancedbackups.purge.size).
· In base al numero totale di file di copia (config.advancedbackups.purge.count).
Quando si utilizzano copie differenziali o incrementali, non è possibile eliminare singoli file da una catena, poiché ciò comprometterebbe l'integrità dei dati. La mod opera con catene intere (chains). Una catena è considerata obsoleta e viene eliminata solo quando tutti i suoi componenti (incluso il backup di base completo e tutti gli archivi parziali associati) soddisfano i criteri di pulizia. Tramite il parametro config.advancedbackups.purge.incrementalchains è possibile impostare il numero minimo di catene complete che il sistema è tenuto a conservare indipendentemente da altre restrizioni di pulizia. Inoltre l'utente può creare degli "snapshot" (istantanee): si tratta di copie statiche del mondo, protette dall'eliminazione automatica.
Configurazione del file AdvancedBackups.properties
I parametri di funzionamento del sistema di backup vengono memorizzati nel file AdvancedBackups.properties, che viene creato nella directory config al primo avvio. Le principali chiavi di configurazione:
Parametro | Valore predefinito | Descrizione |
| true | Consente di abilitare (true) o disabilitare (false) completamente la creazione automatica dei backup. |
| true | Determina se è necessario salvare forzatamente il mondo su disco prima di eseguire la copia. |
| true | Disabilita il salvataggio automatico standard durante la creazione della copia e lo riabilita al termine del processo. |
| 1048576 | Dimensione del buffer di input/output in byte. Un valore superiore al limite della memoria RAM può causare un crash OutOfMemoryError. |
| false | Svuotamento forzato della cache di scrittura del disco. Non viene utilizzato nelle versioni di Minecraft precedenti alla 1.16. |
| true | Verifica dell'attività dei giocatori. Se sul server non ci sono stati giocatori dal momento dell'ultimo backup, la creazione della copia viene saltata. |
| differential | Tipo di backup. Valori possibili: zip (copie complete), differential (backup differenziale), incremental (backup incrementale). |
| session.lock,*_old | Elenco di esclusioni separate da virgole per i file della cartella del mondo che non vengono aggiunti all'archivio (sono consentite maschere come *). |
| ./backups | Percorso della directory in cui vengono salvati i backup completati (relativo o assoluto). |
| 0.25 | Intervallo minimo consentito tra i backup in ore. Previene la duplicazione. 0: disabilitato. |
| 24.0 | Intervallo massimo in ore dopo il quale il backup viene avviato forzatamente, se non ci sono state altre copie riuscite. |
| true | Base dello scheduler: calcolo del tempo di funzionamento del server (true) o tempo astronomico reale del sistema operativo (false). |
| 1:00 | Elenco degli intervalli di creazione delle copie (ad esempio, 1:00 per un backup ogni ora, oppure l'orario reale esatto 04:00,16:00). |
| false | Creazione forzata di un backup del mondo durante l'arresto o lo spegnimento del server. Rispetta il limite frequency.min. |
| false | Creazione di un backup del mondo all'avvio del server. Rispetta il limite frequency.min. |
| 30 | Ritardo dell'avvio del backup iniziale in secondi dopo l'accensione del server. Il valore minimo è di 5 secondi. |
| ops | Categoria dei destinatari delle notifiche toast sul processo di archiviazione nel gioco (ops: operatori, all: tutti, none: nessuno). |
| 500 | Frequenza di invio dei pacchetti di avanzamento ai giocatori in millisecondi. Valori più bassi aumentano il carico di rete. |
| true | Autorizzazione a visualizzare l'avanzamento percentuale dettagliato dell'archiviazione nella console di sistema del server. |
| 5000 | Intervallo di registrazione dell'avanzamento del backup nella console in millisecondi. |
| 50.0 | Limite del volume totale della cartella delle copie in gigabyte. Le copie più vecchie vengono eliminate al superamento. 0: disabilitato. |
| 0 | Periodo di conservazione dei backup in giorni. Quelli più vecchi vengono eliminati. 0: disabilitato. |
| 0 | Numero massimo consentito di copie su disco. Quelle più vecchie vengono eliminate. 0: disabilitato. |
| true | Autorizzazione a eliminare le catene incrementali in caso di pulizia per volume. Se false, le copie incrementali non vengono mai eliminate. |
| 1 | Numero minimo di catene incrementali che la pulizia è tenuta a lasciare sul disco in ogni caso. |
| 4 | Livello di compressione degli archivi ZIP (da 1 a 9). Valori più alti consentono di risparmiare spazio, ma sovraccaricano la CPU. |
| 50 | Numero massimo di backup parziali (differenziali/incrementali) prima della creazione di un nuovo archivio completo. |
| true | Autorizzazione a comprimere le copie di base complete e le successive copie intermedie all'interno delle catene. |
| true | Reimpostazione intelligente della catena. Se tutti i file del mondo sono stati modificati, la copia diventa automaticamente completa. |
| 50.0 | Limite della dimensione del backup parziale in percentuale rispetto a quello completo. Se superato, viene creato un backup completo. |
Comandi di gestione del backup
La gestione della modifica avviene tramite comandi della console che richiedono il livello di accesso di operatore (le opzioni dei comandi sono state aggiornate nella versione 3.7 per una migliore compatibilità con i blocchi di comando, riducendo il requisito del livello di permessi al valore 2):
· /backup start — avvia il processo di backup in modalità asincrona. Il comando tiene conto di tutte le impostazioni di pianificazione, degli intervalli minimi e dell'attività dei giocatori.
· /backup force — avvia forzatamente il processo di copia, ignorando i controlli sull'attività dei giocatori e i limiti di tempo frequency.min.
· /backup snapshot <name> — crea un backup completo (snapshot) con il nome indicato nella sottocartella snapshots. Questo archivio non viene considerato durante la pulizia automatica dei backup obsoleti e non viene mai eliminato automaticamente dal sistema.
· /backup reload-config — esegue il ricaricamento dei parametri dal file AdvancedBackups.properties senza la necessità di riavviare il server o il client di gioco. Nelle versioni della mod precedenti alla 2.2, per questo si utilizza il comando alternativo /advancedbackups reload.
· /backup check — analizza lo stato attuale dello scheduler e mostra le informazioni su quanto tempo rimane fino al successivo backup pianificato secondo il calendario.
· /backup reset — reimposta il contatore della catena attuale di copie incrementali o differenziali. Il successivo backup pianificato o avviato manualmente verrà creato forzatamente come archivio completo ("full").
L'abbassamento del livello di permesso per i comandi al valore 2 consente di automatizzare la creazione delle copie tramite Command Blocks e plugin di pianificazione di terze parti che richiamano comandi della console per conto del server.
Utilità di ripristino da console (Command Line Restoration)
Poiché i backup differenziali e incrementali sono composti da un gran numero di file di modifiche interconnessi, il loro ripristino manuale è un processo complesso. Per risolvere questo problema, nel file JAR della modifica è stata integrata un'apposita utilità da console.
Durante la prima creazione delle copie, la modifica genera automaticamente script ausiliari nella directory dei backup:
· restore-bootstrap.bat per il sistema operativo Windows.
· restore-bootstrap.sh per i sistemi operativi Linux e macOS.
Questi script avviano la procedura guidata di ripristino integrata nel file JAR. Per avviare l'interfaccia di ripristino manualmente tramite il terminale si utilizza il comando:
|
(il nome del file JAR deve corrispondere esattamente alla versione della mod installata).
L'interfaccia da console dell'utilità funziona in modalità interattiva:
1. Avvio della scansione della cartella dei backup per analizzare le catene e gli snapshot disponibili.
2. Visualizzazione dell'elenco dei punti di ripristino disponibili con indicazione di data, ora e tipo di copia (Full, Diff, Inc).
3. Verifica dell'integrità della catena dell'archivio selezionato. Se si tratta di una copia incrementale, l'utilità verifica automaticamente se sono presenti tutte le parti intermedie dal backup di base completo fino al punto selezionato.
4. Richiesta della cartella di destinazione per l'estrazione. L'utilità eseguirà l'unione sequenziale e la sostituzione dei file, ricostruendo lo stato esatto del mondo al momento della creazione della copia selezionata.
Prima di iniziare il ripristino è necessario arrestare completamente il server Minecraft. Il tentativo di ripristinare i file su un server in esecuzione causerà il danneggiamento del database del mondo e dei file delle regioni (.mca).
Particolarità di funzionamento sulle diverse piattaforme e ottimizzazione
La modifica presenta differenze architetturali a seconda della piattaforma di installazione scelta:
· Notifiche toast lato client: Le notifiche pop-up visive sull'inizio e sul completamento della creazione del backup sono realizzate tramite il sistema di toast vanilla. Affinché vengano visualizzate sul lato client, deve essere installata una mod compatibile (Forge, NeoForge o Fabric). Quando si utilizza la mod su server Spigot o Paper, i client senza la mod installata non vedranno le notifiche visive, ma riceveranno solo normali messaggi di testo nella chat, se consentito dalle impostazioni di registrazione.
· Versione 1.7.10: A causa delle limitazioni tecniche delle vecchie versioni del motore di gioco, la versione della mod per Minecraft 1.7.10 non supporta il sistema di notifiche toast grafiche. Al suo posto, l'avanzamento della copia viene visualizzato direttamente sopra la schermata di gioco sotto forma di un semplice overlay testuale.
· Controllo dell'allocazione della memoria RAM: L'operazione di compressione asincrona richiede l'allocazione di buffer di memoria nella JVM. Se su un server con una quantità limitata di RAM (ad esempio, 2-4 GB) si imposta una dimensione troppo grande per il parametro config.advancedbackups.buffer (più di 10-20 MB) e un livello di compressione elevato config.advancedbackups.zips.compression (livello 8-9), ciò può provocare un overflow dell'heap (JVM Heap) e l'arresto anomalo del server con l'errore OutOfMemoryError. Per un funzionamento stabile su server con risorse limitate si consiglia di mantenere la dimensione standard del buffer di 1 MB e un livello di compressione non superiore a 4.
Conclusione
Advanced Backups è una soluzione strumentale completa per garantire la conservazione dei mondi di gioco in Minecraft Java Edition. A differenza di semplici alternative come Simple Backups o degli strumenti vanilla, questa mod consente di implementare una strategia di backup completa con un consumo minimo di spazio su disco grazie all'utilizzo delle catene incrementali. La principale limitazione della modifica è l'assenza di provider cloud integrati per il caricamento automatico degli archivi su storage esterni (ad esempio, Google Drive o server FTP direttamente dalla mod), il che richiede la configurazione di script esterni per la sincronizzazione della cartella ./backups. La modifica è consigliata per l'installazione su server pubblici e privati di medie dimensioni, dove è di importanza critica garantire la protezione dalla perdita di dati senza interrompere il gameplay.
Installazione
Un'installazione tipica richiede circa 5 minuti. Il procedimento è lo stesso; cambiano solo il loader e la build corrispondente.
- 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.








