【PR】本記事にはプロモーション(広告)が含まれます。広告リンク経由でお申し込みがあった場合、当サイトが報酬を受け取ることがあります。検証結果や評価の内容は広告の有無で変えていません。詳しくは広告表記をご覧ください。

マイクラサーバーのバックアップをLinuxで自動化する手順(RCON+tar)実際に復元まで試した

検証日
2026-10-20
検証環境
box(Debian 13/Intel Xeon 仮想 8 vCPU)、Java 25(Temurin)、Minecraft server 26.3(公式)、RCON は 127.0.0.1 だけで待ち受け
更新日
2026-10-20
カテゴリ
ゲーム別サーバーの立て方 自宅・box検証ラボ(無料で試す)

マイクラのサーバーで一番困るのは、ワールドが壊れたり消えたりすることです。この記事では、サーバーを動かしたままワールドを安全にバックアップするスクリプトを作り、実際にワールドを消してから復元できるかまで試しました。

この記事でやったこと/やっていないこと

仕組み

動いているサーバーは、ワールドを少しずつディスクに書き込んでいます。書き込みの途中でコピーすると、壊れたバックアップになるおそれがあります。そこで、次の順番でコマンドを送ります。

  1. save-off … 自動保存を一時的に止める
  2. save-all flush … まだ書き込んでいない分を、すべてディスクに書き切る
  3. tar で world フォルダを圧縮する
  4. save-on … 自動保存を元に戻す

外からサーバーにコマンドを送るために、RCON(コンソールのコマンドをネットワーク経由で送る機能)を使います。

手順1:RCON を有効にする(自分のマシンからだけ)

server.properties を次のようにします。

server-ip=127.0.0.1
enable-rcon=true
rcon.port=25575
rcon.password=(長いランダムな文字列)

当サイトの検証で起動したときのログです。

[Server thread/INFO]: RCON running on 127.0.0.1:25575

ss -ltnp でも、待ち受けは 127.0.0.1:25575 と 127.0.0.1:25565 だけでした。RCON のポートは、外に公開しないでください。 パスワードを間違えると認証に失敗することも確認しました。

手順2:バックアップのスクリプト

RCON のクライアントには、当サイトで書いた Python の小さなプログラム(約20行、標準ライブラリだけ)を使いました。mcrcon などの既製のツールでも同じことができますが、当サイトでは試していません。

#!/bin/bash
set -euo pipefail
SRV=/path/to/server          # server.jar があるフォルダ
DEST=/path/to/backups
KEEP=7                       # 残すバックアップの数
RCON="python3 rcon.py"       # RCON_PASS 環境変数でパスワードを渡す
mkdir -p "$DEST"
TS=$(date +%Y%m%d-%H%M%S)
$RCON save-off
trap '$RCON save-on >/dev/null' EXIT   # 途中で失敗しても自動保存を戻す
$RCON save-all flush
tar -czf "$DEST/world-$TS.tar.gz" -C "$SRV" world
$RCON save-on; trap - EXIT
ls -1t "$DEST"/world-*.tar.gz | tail -n +$((KEEP+1)) | xargs -r rm --

実行したときの出力(実際のもの)です。

Automatic saving is now disabled
Saving the game (this may take a moment!)Saved the game
Automatic saving is now enabled
backup ok: .../world-20261020-223511.tar.gz (3.2M)

実測: world フォルダは 8.6MB(256チャンクを読み込んだ小さなワールド)、圧縮後は 3.2MB でした。スクリプトの実行時間は 0.37秒と 0.19秒です(2回実行)。ワールドが大きくなるほど、時間とサイズは増えます。

手順3:実際に復元してみる

  1. サーバーを止める(stop)
  2. world フォルダを world.broken という名前に変える(ワールドを失った状態を再現)
  3. 最新のバックアップを展開する: tar -xzf world-YYYYMMDD-HHMMSS.tar.gz -C /path/to/server
  4. 起動する → ログに Done (0.201s)! と出て、RCON の list にも応答しました

注意点として、復元されるのはバックアップした時点のワールドです。今回は、バックアップの後に stop でもう一度保存したので、止める前のワールドとはファイルの中身が少し違っていました。バックアップの後に遊んだ分は戻りません。

定期実行(cron の書き方の例・当サイトでは未実行)

毎日 4:00 に実行し、ログを残す場合の書き方の例です(crontab -e で登録します)。

0 4 * * * RCON_PASS='(パスワード)' /path/to/backup.sh >> /path/to/backup.log 2>&1

※当サイトの検証機には cron が入っていないため、この行での定期実行は試していません。

まとめ

関連記事: マイクラJava版サーバーの立て方(Linux)/server.properties の解説

【PR】ここから下は広告です(A8.net)

XServer VPS for Game

参照URL