
Advanced Backups — Minecraft Java Edition 1.7.10 – 1.21.4
依存関係: · ローダー: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Minecraftのバージョン: 1.7.10 - 1.21.4 · Modのバージョン: 3.7.1 Minecraft Java…
依存関係: · ローダー: Forge, NeoForge, Fabric, Quilt, Spigot, Paper · Minecraftのバージョン: 1.7.10 - 1.21.4 · Modのバージョン: 3.7.1 Minecraft Java Editionの標準的なバックアップ機構には深刻な制限があります。バニラのゲームでは、バックアップの作成はメニューから手動で行うか、ファイルをコピーするためにサーバーを停止する必要
依存関係:
· ローダー: Forge, NeoForge, Fabric, Quilt, Spigot, Paper
· Minecraftのバージョン: 1.7.10 - 1.21.4
· Modのバージョン: 3.7.1
Minecraft Java Editionの標準的なバックアップ機構には深刻な制限があります。バニラのゲームでは、バックアップの作成はメニューから手動で行うか、ファイルをコピーするためにサーバーを停止する必要があります。これらの操作はゲームのメインスレッドで実行されるため、数ギガバイトのデータをディスクに書き込んでいる間、ゲームプレイの停止、ラグ、またはサーバーの一時的な利用不能が発生します。さらに、標準的な方法はワールドの完全なコピーのみを作成するため、重複したデータでストレージがすぐにいっぱいになります。Advanced Backups Modはこれらの問題を解決し、差分圧縮モデルおよび増分圧縮モデルに対応した非同期のスケジュールバックアップ、古いアーカイブの柔軟な削除、そしてデータ復元のための組み込みユーティリティを提供します。
バックアップ機構: Zip、Differential、Incremental
このユーティリティは、ワールドファイルの処理に関して3つのモードを提供します。これらは、実行速度、使用されるディスク容量、および復元の信頼性の間のバランスを決定します:
· Zip(完全コピー): 動作原理は、ワールドフォルダ全体を1つの.zipファイルにアーカイブすることにあります。この方法は最もリソースを消費し、ストレージ上に最も多くの空き容量を必要とします。なぜなら、各バックアップは、ファイルが変更されたかどうかに関係なくすべてのファイルを含むためです。その利点は復元の簡単さで、必要なファイルを解凍するだけで済みます。
· Differential(差分バックアップ): 1つの基準となる完全アーカイブ("full")と、それに続く部分アーカイブ("partial")の作成に基づいています。部分アーカイブには、基準となる完全アーカイブの作成時点から変更されたファイルのみが記録されます。中間バックアップの容量は大幅に削減されます。特定の時点のワールドの状態を復元するには、基準となる完全アーカイブと、その日付より前の最後の部分アーカイブの2つのファイルだけが必要です。
· Incremental(増分バックアップ): こちらも完全アーカイブと部分アーカイブの概念を使用します。ただし、各部分アーカイブには、直前の部分アーカイブの作成時点以降に発生した変更のみが含まれます。これにより、ディスクサブシステムへの負荷が最小化され、空き容量を最大限に節約できます。欠点はデータ損失のリスクが高まることです。増分コピーのチェーン内のファイルが1つでも破損すると、新しい完全バックアップが作成されるまで、それ以降のコピーを復元することは不可能になります。また、復元プロセスはファイルのチェーン全体を順次マージする必要があるため、最も時間がかかります。
新しいチェーンの作成は、パラメータconfig.advancedbackups.chains.lengthおよびconfig.advancedbackups.chains.maxpercentによって制御されます。最初のパラメータは、新しい完全アーカイブが強制的に作成される前にチェーン内に存在できる部分コピーの最大数を決定します。2番目のパラメータはサイズチェックを実行します。部分アーカイブ内に蓄積された変更の量が、完全アーカイブのサイズの設定された割合を超えた場合、システムは自動的にチェーンをリセットし、新しい完全バックアップを作成します。
自動削除システム(Purging)とチェーンの取り扱い
ディスクがいっぱいになるのを防ぐため、このModには古くなったデータを自動的に削除するための3つの基準が実装されています:
· 保存日数による削除(config.advancedbackups.purge.days)。
· バックアップフォルダの合計容量(ギガバイト単位)による削除(config.advancedbackups.purge.size)。
· コピーファイルの合計数による削除(config.advancedbackups.purge.count)。
差分コピーまたは増分コピーを使用している場合、チェーンから個々のファイルを削除することは不可能です。なぜなら、それはデータの整合性を損なうためです。Modはチェーン(chains)全体を単位として扱います。チェーンは、そのすべての構成要素(基準となる完全バックアップおよび関連するすべての部分アーカイブを含む)が削除基準を満たした場合にのみ、古くなったとみなされ削除されます。パラメータconfig.advancedbackups.purge.incrementalchainsを使用すると、他の削除制限に関係なくシステムが保持する義務を負う完全チェーンの最小数を設定できます。また、ユーザーは「スナップショット」(snapshots)を作成することもできます。これは自動削除から保護される、ワールドの静的なコピーです。
設定ファイルAdvancedBackups.propertiesの設定
バックアップシステムの動作パラメータはAdvancedBackups.propertiesファイルに保存されます。このファイルは初回起動時にconfigディレクトリに作成されます。主な設定キー:
パラメータ | デフォルト値 | 説明 |
| true | 自動バックアップの作成を完全に有効(true)または無効(false)にできます。 |
| true | コピーの実行前にワールドをディスクへ強制的に保存する必要があるかどうかを決定します。 |
| true | コピーの作成中に標準の自動保存を無効にし、プロセス完了後に有効にします。 |
| 1048576 | 入出力バッファのサイズ(バイト単位)。メモリの上限を超える値はOutOfMemoryErrorによるクラッシュを引き起こす可能性があります。 |
| false | ディスクの書き込みキャッシュの強制的なフラッシュ。1.16より前のMinecraftのバージョンでは使用されません。 |
| true | プレイヤーのアクティビティのチェック。前回のバックアップ以降サーバーにプレイヤーがいなかった場合、コピーの作成はスキップされます。 |
| differential | バックアップの種類。可能な値: zip(完全コピー)、differential(差分バックアップ)、incremental(増分バックアップ)。 |
| session.lock,*_old | アーカイブに追加されない、ワールドフォルダ内のファイルのカンマ区切りの除外リスト(*のようなマスクが使用可能)。 |
| ./backups | 完成したバックアップを保存するディレクトリへのパス(相対または絶対)。 |
| 0.25 | バックアップ間の最小許容間隔(時間単位)。重複を防ぎます。0 — 無効。 |
| 24.0 | 他に成功したコピーがなかった場合に、バックアップが強制的に実行される最大間隔(時間単位)。 |
| true | スケジューラの基準: サーバーの稼働時間の計算(true)またはOSの実際の天文時刻(false)。 |
| 1:00 | コピー作成の間隔のリスト(例えば、1時間ごとのバックアップの場合は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 | 完全バックアップに対する部分バックアップのサイズ上限(パーセンテージ)。超過すると完全バックアップが作成されます。 |
バックアップ管理コマンド
Modの管理は、オペレーターのアクセスレベルを必要とするコンソールコマンドを使用して行われます(コマンドのオプションは、command blocksとの互換性を高めるため、必要な権限レベルを2に引き下げる形でバージョン3.7で更新されました):
· /backup start — 非同期モードでバックアッププロセスを開始します。このコマンドは、スケジュール、最小間隔、プレイヤーのアクティビティのすべての設定を考慮します。
· /backup force — プレイヤーのアクティビティのチェックと時間制限frequency.minを無視して、コピープロセスを強制的に開始します。
· /backup snapshot <name> — 指定された名前で完全バックアップ(スナップショット)をsnapshotsサブフォルダに作成します。このアーカイブは古いバックアップの自動削除時には考慮されず、システムによって自動的に削除されることは決してありません。
· /backup reload-config — サーバーやゲームクライアントを再起動することなく、AdvancedBackups.propertiesファイルからパラメータの再読み込みを実行します。2.2より前のModのバージョンでは、これに代替コマンド/advancedbackups reloadが使用されます。
· /backup check — スケジューラの現在の状態を分析し、スケジュールに基づいた次回の予定バックアップまでにどれだけの時間が残っているかの情報を出力します。
· /backup reset — 現在の増分または差分コピーのチェーンのカウンタをリセットします。次に予定された、または手動で開始されるバックアップは、強制的に完全アーカイブ("full")として作成されます。
コマンドの権限レベルを2に引き下げることで、サーバーの代わりにコンソールコマンドを呼び出すCommand Blocksやサードパーティのスケジューラプラグインを使用して、コピーの作成を自動化できるようになります。
コンソール復元ユーティリティ(Command Line Restoration)
差分バックアップおよび増分バックアップは、相互に関連する多数の変更ファイルで構成されているため、それらを手動で復元するのは複雑なプロセスです。この課題を解決するために、Modのファイルには専用のコンソールユーティリティが組み込まれています。
コピーを初めて作成する際、Modはバックアップのあるディレクトリに補助スクリプトを自動的に生成します:
· restore-bootstrap.bat はオペレーティングシステムWindows用。
· restore-bootstrap.sh はオペレーティングシステムLinuxおよびmacOS用。
これらのスクリプトは、JARファイルに組み込まれた復元ウィザードを起動します。ターミナルを通じて手動で復元インターフェースを起動するには、次のコマンドを使用します:
|
(JARファイルの名前は、インストールされているModのバージョンと正確に一致している必要があります)。
ユーティリティのコンソールインターフェースは対話モードで動作します:
1. 利用可能なチェーンとスナップショットを分析するための、バックアップフォルダのスキャンの開始。
2. 日付、時刻、コピーの種類(Full、Diff、Inc)を示した、利用可能な復元ポイントの一覧の表示。
3. 選択したアーカイブのチェーンの整合性のチェック。増分コピーの場合、ユーティリティは基準となる完全バックアップから選択したポイントまでのすべての中間部分が存在するかどうかを自動的に確認します。
4. 展開先のフォルダの要求。ユーティリティはファイルの順次マージと置換を実行し、選択したコピーが作成された時点のワールドの正確な状態を再構築します。
復元を開始する前に、Minecraftサーバーを完全に停止する必要があります。稼働中のサーバーでファイルを復元しようとすると、ワールドのデータベースおよびリージョンファイル(.mca)が破損します。
各種プラットフォームでの動作の特徴と最適化
Modは、選択したインストールプラットフォームによってアーキテクチャ上の違いがあります:
· クライアント側のtoasts通知: バックアップ作成の開始と完了に関する視覚的なポップアップ通知は、バニラのtoastsシステムを通じて実装されています。それらをクライアント側で表示するには、互換性のあるMod(Forge、NeoForge、またはFabric)がインストールされている必要があります。SpigotまたはPaperサーバーでModを使用する場合、Modがインストールされていないクライアントは視覚的な通知を見ることができず、ログ設定で許可されている場合に限り、チャットで通常のテキストメッセージのみを受け取ります。
· バージョン1.7.10: 古いバージョンのゲームエンジンの技術的な制限により、Minecraft 1.7.10向けのModのバージョンは、グラフィカルなtoasts通知システムをサポートしていません。代わりに、コピーの進捗はゲーム画面の上に直接、シンプルなテキストオーバーレイの形で表示されます。
· メモリ割り当ての制御: 非同期圧縮の操作には、JVM内でのメモリバッファの割り当てが必要です。RAMの容量が限られているサーバー(例えば2〜4 GB)で、パラメータconfig.advancedbackups.bufferのサイズを大きすぎる値(10〜20 MBを超える)に設定し、かつ高い圧縮レベルconfig.advancedbackups.zips.compression(レベル8〜9)に設定すると、ヒープ(JVM Heap)のオーバーフローを引き起こし、サーバーがOutOfMemoryErrorエラーで緊急停止する可能性があります。リソースの限られたサーバーで安定して動作させるには、標準のバッファサイズである1 MBと、4以下の圧縮レベルを維持することが推奨されます。
結論
Advanced Backupsは、Minecraft Java Editionにおけるゲームワールドの保全を確保するための包括的なツールソリューションです。Simple Backupsのようなシンプルな代替手段やバニラのツールとは異なり、このModは増分チェーンの使用により、最小限のディスク容量で本格的なバックアップ戦略を展開できます。このModの主な制限は、アーカイブを外部ストレージ(例えばGoogle DriveやFTPサーバーへModから直接)へ自動的にアップロードするための組み込みクラウドプロバイダーが存在しないことです。そのため、./backupsフォルダを同期するための外部スクリプトの設定が必要になります。このModは、ゲームプレイを停止することなくデータ損失からの保護を確保することが極めて重要な、中規模の公開サーバーおよびプライベートサーバーへのインストールに推奨されます。
インストール
通常のインストールは約 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.








