
Advanced Backups — Minecraft Java Edition 1.7.10 – 1.21.4
Dépendances : · Chargeur : Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Version de Minecraft : 1.7.10 - 1.21.4 · Version du mod : 3.7.1…
Dépendances : · Chargeur : Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Version de Minecraft : 1.7.10 - 1.21.4 · Version du mod : 3.7.1 Le mécanisme standard de sauvegarde dans Minecraft Java Edition présente de séri
Dépendances :
· Chargeur : Forge, NeoForge, Fabric, Quilt, Spigot, Paper
· Version de Minecraft : 1.7.10 - 1.21.4
· Version du mod : 3.7.1
Le mécanisme standard de sauvegarde dans Minecraft Java Edition présente de sérieuses limitations. Dans le jeu vanilla, la création des sauvegardes s'effectue manuellement via un menu ou nécessite l'arrêt du serveur pour copier les fichiers. Ces opérations sont exécutées dans le thread principal du jeu, ce qui provoque le blocage du déroulement du jeu, des lags ou l'indisponibilité temporaire du serveur pendant l'écriture de gigaoctets de données sur le disque. De plus, la méthode standard ne crée que des copies complètes du monde, remplissant rapidement le support de stockage de données dupliquées. La modification Advanced Backups résout ces problèmes en proposant des sauvegardes asynchrones planifiées prenant en charge les modèles de compression différentiel et incrémentiel, un nettoyage souple des archives obsolètes et un utilitaire intégré pour la restauration des données.
Mécanismes de sauvegarde : Zip, Differential et Incremental
L'utilitaire propose trois modes de traitement des fichiers du monde, qui déterminent l'équilibre entre la vitesse d'exécution, le volume d'espace disque utilisé et la fiabilité de la restauration :
· Zip (copies complètes) : Le principe de fonctionnement consiste à archiver l'intégralité du dossier du monde dans un seul fichier .zip. Cette méthode est la plus gourmande en ressources et nécessite le plus d'espace libre sur le support de stockage, car chaque sauvegarde contient tous les fichiers, qu'ils aient été modifiés ou non. Son avantage réside dans la simplicité de la restauration : il suffit de décompresser le fichier voulu.
· Differential (sauvegarde différentielle) : Repose sur la création d'une seule archive de base complète (« full ») et d'archives partielles ultérieures (« partial »). Les archives partielles n'enregistrent que les fichiers ayant subi des modifications depuis la création de l'archive de base complète. Le volume des sauvegardes intermédiaires diminue considérablement. Pour restaurer l'état du monde à un instant donné, seuls deux fichiers sont nécessaires : l'archive de base complète et la dernière archive partielle antérieure à cette date.
· Incremental (sauvegarde incrémentielle) : Utilise également le concept d'archives complètes et partielles. Cependant, chaque archive partielle ne contient que les modifications survenues depuis la création de la dernière archive partielle précédente. Cela réduit au minimum la charge sur le sous-système disque et permet d'économiser un maximum d'espace libre. Son inconvénient est un risque accru de perte de données : si ne serait-ce qu'un seul fichier de la chaîne de copies incrémentielles est endommagé, il sera impossible de restaurer les copies suivantes jusqu'à la création d'une nouvelle sauvegarde complète. Le processus de restauration est également le plus lent, car il nécessite la fusion séquentielle de toute la chaîne de fichiers.
La création de nouvelles chaînes est régie par les paramètres config.advancedbackups.chains.length et config.advancedbackups.chains.maxpercent. Le premier paramètre définit le nombre maximal de copies partielles dans une chaîne avant la création forcée d'une nouvelle archive complète. Le second paramètre effectue une vérification de la taille : si le volume des modifications accumulées dans une archive partielle dépasse le pourcentage défini par rapport à la taille de l'archive complète, le système réinitialise automatiquement la chaîne et crée une nouvelle sauvegarde complète.
Système de nettoyage automatique (Purging) et travail avec les chaînes
Pour éviter le débordement du disque, trois critères de suppression automatique des données obsolètes ont été implémentés dans la modification :
· Par nombre de jours de conservation (config.advancedbackups.purge.days).
· Par volume total du dossier des sauvegardes en gigaoctets (config.advancedbackups.purge.size).
· Par nombre total de fichiers de copie (config.advancedbackups.purge.count).
Lors de l'utilisation de copies différentielles ou incrémentielles, la suppression de fichiers individuels d'une chaîne est impossible, car cela romprait l'intégrité des données. Le mod opère avec des chaînes entières (chains). Une chaîne est considérée comme obsolète et n'est supprimée que lorsque tous ses composants (y compris la sauvegarde de base complète et toutes les archives partielles associées) répondent aux critères de nettoyage. À l'aide du paramètre config.advancedbackups.purge.incrementalchains il est possible de définir le nombre minimal de chaînes complètes que le système est tenu de conserver indépendamment des autres restrictions de nettoyage. L'utilisateur peut également créer des « snapshots » (instantanés) : ce sont des copies statiques du monde, protégées contre la suppression automatique.
Configuration du fichier AdvancedBackups.properties
Les paramètres de fonctionnement du système de sauvegarde sont stockés dans le fichier AdvancedBackups.properties, qui est créé dans le répertoire config lors du premier démarrage. Les principales clés de configuration :
Paramètre | Valeur par défaut | Description |
| true | Permet d'activer (true) ou de désactiver (false) entièrement la création automatique des sauvegardes. |
| true | Détermine s'il est nécessaire de sauvegarder de force le monde sur le disque avant d'effectuer la copie. |
| true | Désactive la sauvegarde automatique standard pendant la création de la copie et la réactive une fois le processus terminé. |
| 1048576 | Taille du tampon d'entrée/sortie en octets. Une valeur supérieure à la limite de mémoire vive peut provoquer un plantage OutOfMemoryError. |
| false | Vidage forcé du cache d'écriture du disque. N'est pas utilisé dans les versions de Minecraft antérieures à la 1.16. |
| true | Vérification de l'activité des joueurs. S'il n'y a eu aucun joueur sur le serveur depuis la dernière sauvegarde, la création de la copie est ignorée. |
| differential | Type des sauvegardes. Valeurs possibles : zip (copies complètes), differential (sauvegarde différentielle), incremental (sauvegarde incrémentielle). |
| session.lock,*_old | Liste d'exclusions séparées par des virgules pour les fichiers du dossier du monde qui ne sont pas ajoutés à l'archive (les masques de type * sont autorisés). |
| ./backups | Chemin vers le répertoire d'enregistrement des sauvegardes terminées (relatif ou absolu). |
| 0.25 | Intervalle minimal autorisé entre les sauvegardes en heures. Empêche la duplication. 0 — désactivé. |
| 24.0 | Intervalle maximal en heures au-delà duquel la sauvegarde est lancée de force, s'il n'y a pas eu d'autres copies réussies. |
| true | Base du planificateur : calcul du temps de fonctionnement du serveur (true) ou heure astronomique réelle du système d'exploitation (false). |
| 1:00 | Liste des intervalles de création des copies (par exemple, 1:00 pour une sauvegarde toutes les heures, ou l'heure réelle exacte 04:00,16:00). |
| false | Création forcée d'une sauvegarde du monde lors de l'arrêt ou de l'extinction du serveur. Respecte la limite frequency.min. |
| false | Création d'une sauvegarde du monde au démarrage du serveur. Respecte la limite frequency.min. |
| 30 | Délai du lancement de la sauvegarde de démarrage en secondes après la mise en marche du serveur. La valeur minimale est de 5 secondes. |
| ops | Catégorie de destinataires des notifications toast concernant le processus d'archivage dans le jeu (ops — opérateurs, all — tous, none — personne). |
| 500 | Fréquence d'envoi des paquets de progression aux joueurs en millisecondes. Des valeurs plus basses augmentent la charge réseau. |
| true | Autorisation d'afficher la progression détaillée en pourcentage de l'archivage dans la console système du serveur. |
| 5000 | Intervalle de journalisation de l'avancement de la sauvegarde dans la console en millisecondes. |
| 50.0 | Limite du volume total du dossier des copies en gigaoctets. Les copies les plus anciennes sont supprimées en cas de dépassement. 0 — désactivé. |
| 0 | Durée de conservation des sauvegardes en jours. Les plus anciennes sont supprimées. 0 — désactivé. |
| 0 | Nombre maximal autorisé de copies sur le disque. Les plus anciennes sont supprimées. 0 — désactivé. |
| true | Autorisation de supprimer les chaînes incrémentielles en cas de nettoyage par volume. Si false, les copies incrémentielles ne sont jamais nettoyées. |
| 1 | Nombre minimal de chaînes incrémentielles que le nettoyage est tenu de laisser sur le disque dans tous les cas. |
| 4 | Niveau de compression des archives ZIP (de 1 à 9). Des valeurs plus élevées économisent de l'espace, mais chargent le CPU. |
| 50 | Nombre maximal de sauvegardes partielles (différentielles/incrémentielles) avant la création d'une nouvelle archive complète. |
| true | Autorisation de compresser les copies de base complètes et les copies intermédiaires ultérieures à l'intérieur des chaînes. |
| true | Réinitialisation intelligente de la chaîne. Si tous les fichiers du monde ont été modifiés, la copie devient automatiquement complète. |
| 50.0 | Limite de la taille de la sauvegarde partielle en pourcentage de la complète. En cas de dépassement, une sauvegarde complète est créée. |
Commandes de gestion des sauvegardes
La gestion de la modification s'effectue à l'aide de commandes de console qui requièrent le niveau d'accès opérateur (les options des commandes ont été mises à jour dans la version 3.7 pour une meilleure compatibilité avec les blocs de commande, en abaissant l'exigence de niveau de droits à la valeur 2) :
· /backup start — lance le processus de sauvegarde en mode asynchrone. La commande tient compte de tous les paramètres de planification, des intervalles minimaux et de l'activité des joueurs.
· /backup force — lance de force le processus de copie, en ignorant les vérifications de l'activité des joueurs et les limites de temps frequency.min.
· /backup snapshot <name> — crée une sauvegarde complète (instantané) sous le nom indiqué dans le sous-dossier snapshots. Cette archive n'est pas prise en compte lors du nettoyage automatique des sauvegardes obsolètes et n'est jamais supprimée automatiquement par le système.
· /backup reload-config — effectue le rechargement des paramètres depuis le fichier AdvancedBackups.properties sans qu'il soit nécessaire de redémarrer le serveur ou le client du jeu. Dans les versions du mod antérieures à la 2.2, on utilise pour cela la commande alternative /advancedbackups reload.
· /backup check — analyse l'état actuel du planificateur et affiche des informations sur le temps restant avant la prochaine sauvegarde planifiée selon le calendrier.
· /backup reset — réinitialise le compteur de la chaîne actuelle de copies incrémentielles ou différentielles. La prochaine sauvegarde planifiée ou lancée manuellement sera créée de force en tant qu'archive complète (« full »).
L'abaissement du niveau d'autorisation des commandes à la valeur 2 permet d'automatiser la création des copies à l'aide de Command Blocks et de plugins de planification tiers qui appellent des commandes de console au nom du serveur.
Utilitaire de restauration en console (Command Line Restoration)
Comme les sauvegardes différentielles et incrémentielles se composent d'un grand nombre de fichiers de modifications interdépendants, leur restauration manuelle est un processus complexe. Pour résoudre cette tâche, un utilitaire de console spécial est intégré au fichier JAR de la modification.
Lors de la première création des copies, la modification génère automatiquement des scripts auxiliaires dans le répertoire contenant les sauvegardes :
· restore-bootstrap.bat pour le système d'exploitation Windows.
· restore-bootstrap.sh pour les systèmes d'exploitation Linux et macOS.
Ces scripts lancent l'assistant de restauration intégré au fichier JAR. Pour lancer l'interface de restauration manuellement via le terminal, on utilise la commande :
|
(le nom du fichier JAR doit correspondre exactement à la version du mod installé).
L'interface de console de l'utilitaire fonctionne en mode interactif :
1. Lancement de l'analyse du dossier des sauvegardes afin d'examiner les chaînes et les instantanés disponibles.
2. Affichage de la liste des points de restauration disponibles avec indication de la date, de l'heure et du type de copie (Full, Diff, Inc).
3. Vérification de l'intégrité de la chaîne de l'archive sélectionnée. S'il s'agit d'une copie incrémentielle, l'utilitaire vérifie automatiquement si toutes les parties intermédiaires, depuis la sauvegarde de base complète jusqu'au point sélectionné, sont présentes.
4. Demande du dossier cible pour la décompression. L'utilitaire effectuera la fusion séquentielle et le remplacement des fichiers, reconstruisant l'état exact du monde au moment de la création de la copie sélectionnée.
Avant de commencer la restauration, il est nécessaire d'arrêter complètement le serveur Minecraft. Toute tentative de restauration des fichiers sur un serveur en cours d'exécution entraînera l'endommagement de la base de données du monde et des fichiers de région (.mca).
Particularités de fonctionnement sur les différentes plateformes et optimisation
La modification présente des différences architecturales selon la plateforme d'installation choisie :
· Notifications toast côté client : Les notifications pop-up visuelles relatives au début et à la fin de la création de la sauvegarde sont réalisées via le système de toasts vanilla. Pour qu'elles s'affichent côté client, un mod compatible (Forge, NeoForge ou Fabric) doit être installé. Lors de l'utilisation du mod sur des serveurs Spigot ou Paper, les clients sans le mod installé ne verront pas les notifications visuelles, mais recevront uniquement des messages texte ordinaires dans le chat, si les paramètres de journalisation l'autorisent.
· Version 1.7.10 : En raison des limitations techniques des anciennes versions du moteur du jeu, la version du mod pour Minecraft 1.7.10 ne prend pas en charge le système de notifications toast graphiques. À la place, la progression de la copie s'affiche directement par-dessus l'écran de jeu sous la forme d'une simple superposition de texte.
· Contrôle de l'allocation de la mémoire vive : L'opération de compression asynchrone nécessite l'allocation de tampons mémoire dans la JVM. Si, sur un serveur disposant d'une quantité limitée de RAM (par exemple, 2-4 Go), on définit une taille trop importante pour le paramètre config.advancedbackups.buffer (plus de 10-20 Mo) et un niveau de compression élevé config.advancedbackups.zips.compression (niveau 8-9), cela peut provoquer un débordement du tas (JVM Heap) et un arrêt brutal du serveur avec l'erreur OutOfMemoryError. Pour un fonctionnement stable sur des serveurs aux ressources limitées, il est recommandé de conserver la taille de tampon standard de 1 Mo et un niveau de compression ne dépassant pas 4.
Conclusion
Advanced Backups est une solution outillée complète pour assurer la conservation des mondes de jeu dans Minecraft Java Edition. Contrairement à des alternatives simples telles que Simple Backups ou aux outils vanilla, ce mod permet de déployer une stratégie de sauvegarde à part entière avec une consommation minimale d'espace disque grâce à l'utilisation de chaînes incrémentielles. La principale limitation de la modification est l'absence de fournisseurs cloud intégrés pour le téléversement automatique des archives vers des stockages externes (par exemple, Google Drive ou des serveurs FTP directement depuis le mod), ce qui nécessite la configuration de scripts externes de synchronisation du dossier ./backups. La modification est recommandée pour une installation sur des serveurs publics et privés de taille moyenne, où il est crucial d'assurer une protection contre la perte de données sans interrompre le déroulement du jeu.
Installation
Une installation classique prend environ 5 minutes. Le déroulé est le même ; seuls le loader et le build correspondant changent.
- 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.








