2026.05.08広告・PRを含む記事です

サーバーの設定

マイクラサーバーの自動バックアップ方法!cron・プラグイン・Windows対応

マイクラサーバーの自動バックアップとcron対応を示すサムネイル
  • 昨日バックアップしたか覚えていない
  • 荒らしに気づいた時点で、壊れた状態しか残っていない
  • VPSの中に置いたバックアップごと消えた
  • 自動バックアップはあるけど、復元したことがない

手動でバックアップを取っていても、続けていくうちにこういう穴が出てきます。

バックアップは「ファイルが作られている」だけでは足りません。

必要なデータが入っていて、古い世代も残っていて、いざというときに戻せる形でないと意味がありません。

この記事では、マイクラサーバーのバックアップを自動化する手順を、環境別にまとめます。

  • Linuxならcronでサーバー停止・圧縮・起動を自動化する方法
  • Windowsならタスクスケジューラで組む方法
  • Paper・Spigotならバックアッププラグインを使う方法
  • 統合版サーバー固有の注意点
  • 復元テストの確認手順
spa

自動化って聞くと難しそうですが、最初は「止める、圧縮する、起動する」の3つだけで大丈夫です!

読み終えると、自分の環境に合った自動バックアップを設定して、次回起動時からバックアップが自動で動く状態にできます。

手動バックアップと復元の基本がまだ不安な場合は、先にこちらを読んでおくと理解しやすいです。

マイクラサーバーのバックアップと復元の戻し方を示すサムネイル

【マイクラ】サーバーのバックアップ方法!復元・自動化・保存先まで初心者向けに解説

結論:初心者はサーバーを止める自動バックアップから始める

自動バックアップの流れ。停止、圧縮、起動、外部保存、復元テストの順番で進めることを示している

最初におすすめしたいのは、サーバーを一度止めてからコピーする自動バックアップです。

稼働中のまま取る方法もありますが、save-offsave-onの扱いを間違えると逆に危ないです。

少人数サーバーなら、深夜に数分止めてバックアップする方が現実的です。

環境おすすめ方法
Linux VPSsystemctl または screencron で停止、圧縮、起動
Windows自宅サーバーPowerShellとタスクスケジューラ
Paper・SpigotDriveBackupV2などのバックアッププラグイン
レンタルサーバー管理画面の自動バックアップと手動保存を併用
統合版サーバー停止コピー、慣れたら save hold 系を検討

迷ったら、「毎日1回」「7世代保存」「サーバー外にも保存」「月1回の復元テスト」から始めます。

凝った仕組みを作ることより、戻せるバックアップを残すことを優先します。

補足

この記事のコマンドは、基本的にコピペして使える形にしています。 ただし、/opt/minecraftserver.jarMinecraftminecraft などの名前は、自分の環境に合わせて置き換えます。

自動バックアップ前に確認する3つのこと

自動バックアップを作る前に、次の3つだけ確認します。

ここを先に把握しておくと、どの手順を使えばいいか迷いにくいです。

確認すること見るコマンド
サーバーフォルダの場所pwdls
起動方法systemctlscreen
サーバーを動かしているユーザーwhoamiscreen -list

今いる場所がサーバーフォルダか確認するなら、次のコマンドを使います。

Terminal window
pwd
ls

server.jarworldserver.propertiesが見えれば、そこがサーバーフォルダです。

systemdで動いているか見るなら、次のコマンドです。

Terminal window
systemctl list-units --type=service | grep minecraft

screenで動いているか見るなら、こちらです。

Terminal window
screen -list

サーバーを動かしているユーザーを確認するなら、次のコマンドです。

Terminal window
whoami
補足

初心者なら、サーバーを一度止めてからバックアップすると、保存途中のデータをコピーして復元できない状態になるリスクを減らせます。 稼働中バックアップは便利ですが、保存停止と再開の扱いを間違えると復元時に困ります。

自動バックアップで保存すべきファイル

自動化する前に、保存対象を決めます。

ここを間違えると、毎日バックアップしていても復元時に困ります。

Java版で保存するもの

Java版は、サーバーソフトとバージョンで、ネザーとエンドの入る場所が変わります。

保存対象もそれに合わせます。

サーバー保存対象
バニラworldserver.properties
旧Paper・Spigot(26.0以前)worldworld_netherworld_the_endserver.propertiesplugins
Paper26.1以降worldserver.propertiesplugins
プラグイン運用上記に加えて ops.jsonwhitelist.jsonbanned-players.json

迷いやすいのは、ネザーとエンドの保存場所です。

旧PaperやSpigotは、ネザーとエンドがworld_netherworld_the_endとしてworldの外にわかれます。

この構造でworldだけ保存すると、通常世界しか戻らずネザーとエンドが抜けます。

Paper26.1以降はワールド構造が変わり、ネザーとエンドはworld/dimensions/minecraft/the_netherworld/dimensions/minecraft/the_endのようにworldフォルダの中へ入ります。

この場合はworldフォルダごと保存すれば、ネザーとエンドも一緒に残せます。

補足

自分のサーバーがどちらの構造かわからないときは、worldの隣にworld_netherがあるかを見ます。

あれば旧構造、なければworldの中のdimensionsを確認します。

プラグインサーバーなら、pluginsフォルダも保存します。

LuckPermsや経済、保護系のプラグインは、ワールドだけ戻しても権限や保護の設定が戻らないためです。

level-nameserver-port など、設定ファイルの中身まで見ておきたい場合は先にこちらを読んでおくと迷いにくいです。

server.propertiesファイルの主要設定を解説するガイド画像

マイクラserver.properties設定一覧!場所・開き方・反映方法を解説

Paper、Spigot、Vanillaの違いで迷っている場合は、先にサーバーソフトの選び方を見ておくと判断しやすいです。

統合版で保存するもの

統合版サーバーでは、基本的に worlds フォルダを保存します。

許可リストや権限も戻したいなら、次のファイルも含めます。

ファイル役割
worldsワールドデータ
server.propertiesサーバー設定
allowlist.json許可リスト
permissions.json権限設定
resource_packsリソースパック
behavior_packsビヘイビアーパック

統合版はJava版とフォルダ構造が違います。

Java版の world_nether のような感覚で探すと迷うので、最初は worlds を中心に確認します。

ホワイトリストやallowlistの設定まで一緒に戻したい場合は、こちらも確認しておくと迷いにくいです。

マイクラサーバーのホワイトリストで参加できるプレイヤーを追加・削除する方法

マイクラサーバーのホワイトリスト設定方法|追加・削除・確認手順

Linux VPSで「cron」自動バックアップを設定する

Linux VPSでは、シェルスクリプトを作ってcronで毎日実行します。

ここでは、サーバーを停止してからバックアップする方法を例にします。

補足

cronは、Linuxなどで「毎日午前3時にこのコマンドを実行する」と指定できる仕組みです。 分、時、日、月、曜日の5項目で実行タイミングを決めます。

前提のフォルダ構成

この記事では、次の構成を例にします。

/opt/minecraft
├── server.jar
├── world
├── world_nether # 旧Paper/Spigotのみ。Paper26.1以降はworldの中に入る
├── world_the_end # 同上
├── plugins
└── server.properties
/opt/minecraft-backups

実際のフォルダ名は、自分のサーバーに合わせて変えます。

world_netherworld_the_endが見当たらないなら、Paper26.1以降の構造でworldの中にまとまっています。

/home/minecraft/server で運用しているなら、スクリプト内の SERVER_DIR をそこに変更します。

補足

以降のLinux手順では、/opt/minecraft をサーバーフォルダ、/opt/minecraft-backups をバックアップ保存先として進めます。 違う場所で運用している場合は、スクリプト内の SERVER_DIRBACKUP_DIR だけ直せばOKです。

systemdでサーバーを動かしている場合

VPSで運用しているなら、マイクラサーバーを systemd のサービスとして動かしている人も多いです。

サービス名が minecraft.service なら、次のコマンドで停止と起動をします。

Terminal window
sudo systemctl stop minecraft
sudo systemctl start minecraft

サービス名が違う場合は、自分の環境に合わせます。

確認は次のコマンドです。

Terminal window
systemctl list-units --type=service | grep minecraft

「screen」でサーバーを動かしている場合

自宅サーバーやVPSでは、screenでマイクラサーバーを動かしている人もいます。

たとえば、次のように起動しているケースです。

Terminal window
cd /opt/minecraft
screen -dmS Minecraft java -Xms2G -Xmx2G -jar server.jar nogui

この場合は、次のコマンドでは止められません。

Terminal window
systemctl stop minecraft

screenセッションへsaystopを送って、サーバーが終了してからバックアップします。

screenセッション名を確認します。

Terminal window
screen -list

Minecraft という名前で動いていれば、次のようにコマンドを送れます。

Terminal window
screen -S Minecraft -p 0 -X stuff "say バックアップのためサーバーを停止します$(printf '\r')"
screen -S Minecraft -p 0 -X stuff "save-all$(printf '\r')"
screen -S Minecraft -p 0 -X stuff "stop$(printf '\r')"

screenで運用している場合は、次の「systemd版」ではなく「screen版」のスクリプトを使います。

systemd版のバックアップスクリプトを作る

次のスクリプトを /usr/local/bin/mc-backup.sh に保存します。

SERVER_DIRBACKUP_DIRSERVICE_NAME は環境に合わせて変更します。

初心者は、nano でファイルを開くのがわかりやすいです。

Terminal window
sudo nano /usr/local/bin/mc-backup.sh

開いたら、次の内容をそのまま貼り付けます。

#!/bin/bash
set -euo pipefail
SERVER_DIR="/opt/minecraft"
BACKUP_DIR="/opt/minecraft-backups"
SERVICE_NAME="minecraft"
KEEP_DAYS=7
DATE="$(date '+%Y-%m-%d_%H-%M-%S')"
BACKUP_FILE="${BACKUP_DIR}/minecraft_${DATE}.tar.gz"
LOG_FILE="${BACKUP_DIR}/backup.log"
SERVER_STOPPED=0
TARGETS=(
world
world_nether # 旧Paper/Spigotのみ。Paper26.1以降は無く自動でスキップされる
world_the_end # 同上。26.1以降はworldの中に入るのでworldだけで足りる
plugins
server.properties
ops.json
whitelist.json
banned-players.json
)
cleanup() {
if [ "$SERVER_STOPPED" -eq 1 ]; then
systemctl start "$SERVICE_NAME" || true
fi
}
trap cleanup EXIT
mkdir -p "$BACKUP_DIR"
{
echo "[$(date '+%Y-%m-%d %H:%M:%S')] backup start"
systemctl stop "$SERVICE_NAME"
SERVER_STOPPED=1
EXISTING_TARGETS=()
for target in "${TARGETS[@]}"; do
if [ -e "$SERVER_DIR/$target" ]; then
EXISTING_TARGETS+=("$target")
fi
done
if [ "${#EXISTING_TARGETS[@]}" -eq 0 ]; then
echo "backup targets not found"
exit 1
fi
tar -czf "$BACKUP_FILE" -C "$SERVER_DIR" "${EXISTING_TARGETS[@]}"
systemctl start "$SERVICE_NAME"
SERVER_STOPPED=0
find "$BACKUP_DIR" -name 'minecraft_*.tar.gz' -mtime +"$KEEP_DAYS" -delete
echo "[$(date '+%Y-%m-%d %H:%M:%S')] backup done: $BACKUP_FILE"
} >> "$LOG_FILE" 2>&1

貼り付けたら、Ctrl + O、Enter、Ctrl + X の順で保存して閉じます。

補足

systemd版で最低限書き換えるのは、SERVER_DIRBACKUP_DIRSERVICE_NAME の3つです。 サービス名が minecraft ではない場合、systemctl list-units --type=service | grep minecraft で出た名前に合わせます。

このスクリプトは、次の順番で動きます。

  1. バックアップ保存先を作る
  2. マイクラサーバーを停止する
  3. ワールド、設定、プラグインを tar.gz に圧縮する
  4. サーバーを起動する
  5. 7日より古いバックアップを削除する
  6. ログを backup.log に残す

TARGETS に書いた候補のうち、実際に存在するファイルやフォルダだけを圧縮します。

バニラサーバーで pluginsops.json が無くても、そのせいで止まらないようにしています。

途中で tar が失敗しても、cleanup でサーバーを起動し直す形にしています。

バックアップ失敗でサーバーが止まりっぱなしになるのを避けるためです。

保存対象を確かめるには、自分のサーバーフォルダで ls を実行します。

Terminal window
ls /opt/minecraft

「screen」版のバックアップスクリプトを作る

screenで運用している場合は、こちらを /usr/local/bin/mc-backup-screen.sh に保存します。

SCREEN_NAMESERVER_DIRBACKUP_DIR、起動時のメモリ量は自分の環境に合わせます。

screen版は、マイクラサーバーを起動しているユーザーで実行するのが基本です。

たとえば minecraft ユーザーでscreenを起動しているなら、バックアップスクリプトも minecraft ユーザーのcronから動かします。

rootのcronから実行すると、既存のscreenセッションが見えずに失敗する場合があります。

初心者

screenで起動しているのに、cronから見ると見つからないことがあるんですね!

screenを起動しているユーザーでファイルを開きます。

Terminal window
nano /usr/local/bin/mc-backup-screen.sh

権限エラーになる場合は、先に管理者権限で空ファイルを作って所有者を変えます。

Terminal window
sudo touch /usr/local/bin/mc-backup-screen.sh
sudo chown minecraft:minecraft /usr/local/bin/mc-backup-screen.sh
nano /usr/local/bin/mc-backup-screen.sh

minecraft:minecraft は、自分がサーバーを動かしているユーザー名に置き換えます。

開いたら、次の内容を貼り付けます。

#!/bin/bash
set -euo pipefail
SERVER_DIR="/opt/minecraft"
BACKUP_DIR="/opt/minecraft-backups"
SCREEN_NAME="Minecraft"
KEEP_DAYS=7
START_COMMAND='java -Xms2G -Xmx2G -jar server.jar nogui'
DATE="$(date '+%Y-%m-%d_%H-%M-%S')"
BACKUP_FILE="${BACKUP_DIR}/minecraft_${DATE}.tar.gz"
LOG_FILE="${BACKUP_DIR}/backup.log"
SERVER_STOPPED=0
TARGETS=(
world
world_nether # 旧Paper/Spigotのみ。Paper26.1以降は無く自動でスキップされる
world_the_end # 同上。26.1以降はworldの中に入るのでworldだけで足りる
plugins
server.properties
ops.json
whitelist.json
banned-players.json
)
cleanup() {
if [ "$SERVER_STOPPED" -eq 1 ]; then
screen -dmS "$SCREEN_NAME" bash -c "cd \"$SERVER_DIR\" && exec $START_COMMAND" || true
fi
}
trap cleanup EXIT
mkdir -p "$BACKUP_DIR"
{
echo "[$(date '+%Y-%m-%d %H:%M:%S')] screen backup start"
if screen -list | grep -q "$SCREEN_NAME"; then
screen -S "$SCREEN_NAME" -p 0 -X stuff "say バックアップのためサーバーを停止します$(printf '\r')"
sleep 5
screen -S "$SCREEN_NAME" -p 0 -X stuff "save-all$(printf '\r')"
sleep 10
screen -S "$SCREEN_NAME" -p 0 -X stuff "stop$(printf '\r')"
for i in {1..60}; do
if ! screen -list | grep -q "$SCREEN_NAME"; then
break
fi
sleep 2
done
else
echo "screen session not found: $SCREEN_NAME"
exit 1
fi
if screen -list | grep -q "$SCREEN_NAME"; then
echo "server did not stop. backup aborted."
exit 1
fi
SERVER_STOPPED=1
EXISTING_TARGETS=()
for target in "${TARGETS[@]}"; do
if [ -e "$SERVER_DIR/$target" ]; then
EXISTING_TARGETS+=("$target")
fi
done
if [ "${#EXISTING_TARGETS[@]}" -eq 0 ]; then
echo "backup targets not found"
exit 1
fi
tar -czf "$BACKUP_FILE" -C "$SERVER_DIR" "${EXISTING_TARGETS[@]}"
screen -dmS "$SCREEN_NAME" bash -c "cd \"$SERVER_DIR\" && exec $START_COMMAND"
SERVER_STOPPED=0
find "$BACKUP_DIR" -name 'minecraft_*.tar.gz' -mtime +"$KEEP_DAYS" -delete
echo "[$(date '+%Y-%m-%d %H:%M:%S')] screen backup done: $BACKUP_FILE"
} >> "$LOG_FILE" 2>&1

貼り付けたら、Ctrl + O、Enter、Ctrl + X で保存します。

補足

screen版で最低限書き換えるのは、SERVER_DIRBACKUP_DIRSCREEN_NAMESTART_COMMAND です。 特に SCREEN_NAME="Minecraft" は、screen -list で表示された名前と合わせます。

このスクリプトは、screen内のマイクラサーバーへ save-allstop を送ります。

その後、screenセッションが消えたことを確認してから圧縮します。

圧縮が終わったら、同じscreen名でサーバーを起動し直します。

server.jar の名前やメモリ量が違う場合は、START_COMMANDjava -Xms2G -Xmx2G -jar server.jar nogui を必ず直します。

保存対象を増やしたい場合は、systemd版と同じく TARGETS にフォルダ名やファイル名を追加します。

スクリプトに実行権限を付けて手動確認する

スクリプトを実行できるようにします。

Terminal window
sudo chmod +x /usr/local/bin/mc-backup.sh

screen版を使う場合はこちらです。

Terminal window
sudo chmod +x /usr/local/bin/mc-backup-screen.sh

手動で一度動かします。

Terminal window
sudo /usr/local/bin/mc-backup.sh

screen版ならこちらを実行します。

Terminal window
sudo /usr/local/bin/mc-backup-screen.sh

ただし、screenを一般ユーザーで起動している場合は、sudo を付けずに同じユーザーで試します。

Terminal window
/usr/local/bin/mc-backup-screen.sh

その場合、バックアップ保存先へ書き込める権限も必要です。

Terminal window
sudo mkdir -p /opt/minecraft-backups
sudo chown minecraft:minecraft /opt/minecraft-backups

minecraft:minecraft の部分は、自分がサーバーを動かしているユーザー名に変えます。

バックアップファイルができているか確認します。

Terminal window
ls -lh /opt/minecraft-backups

ログも見ます。

Terminal window
tail -n 50 /opt/minecraft-backups/backup.log

この時点で失敗しているなら、cronに入れる前に原因を直します。

手動実行で失敗するものは、自動化しても同じように失敗します。

「cron」で毎日3時に自動実行する

crontab -e を開きます。

Terminal window
sudo crontab -e

screen版で、一般ユーザーのscreenセッションを使っている場合は sudo を付けません。

Terminal window
crontab -e

毎日午前3時に実行するなら、次の1行を追加します。

0 3 * * * /usr/local/bin/mc-backup.sh

screen版なら、登録するスクリプト名を変えます。

0 3 * * * /usr/local/bin/mc-backup-screen.sh

screen版は、cronを登録したユーザーとscreenを起動したユーザーをそろえます。

ここがズレると、screen session not found で止まります。

cronの5項目は、左から分、時、日、月、曜日です。

0 3 * * * は、毎日3時0分という意味になります。

補足

cronに登録したら、翌日まで待たずに手動実行で確認します。 /usr/local/bin/mc-backup.sh または /usr/local/bin/mc-backup-screen.sh を直接実行して成功してから、cronに任せる流れが安全です。

設定後は、登録内容を確認します。

Terminal window
sudo crontab -l

次の日に、バックアップファイルとログが増えているか確認します。

Terminal window
ls -lh /opt/minecraft-backups
tail -n 50 /opt/minecraft-backups/backup.log

サーバーを止めずに稼働中バックアップする方法

サーバーを止めずにバックアップしたい場合は、save-allsave-offsave-on を使う方法もあります。

ただし、初心者にはあまりおすすめしません。

save-off のあとに save-on を忘れると、ワールド保存が止まったままになります。

stop で止める流れが不安なら、先に停止と再起動の基本を押さえておくと作業しやすいです。

マイクラサーバーを安全に手動再起動し自動再起動を設定する方法

【初心者向け】マイクラサーバーを再起動する方法!手動・自動の両方を解説

Java版の保存系コマンド

Java版の専用サーバーでは、保存に関係するコマンドを使います。

コマンド役割
save-allサーバーデータを保存する
save-all flushチャンクをすぐ保存するが、短時間止まることがある
save-offワールドファイルへの書き込みを止める
save-onワールドファイルへの書き込みを再開する

各コマンドは、サーバーのコンソールやRCON、screen経由で実行します。

稼働中バックアップの流れは、次のようになります。

  1. チャンクをすぐ保存する
save-all flush
  1. ワールドファイルへの書き込みを止める
save-off
  1. ワールドと設定ファイルをコピーする
  2. ワールドファイルへの書き込みを再開する
save-on

この方法では、RCONやscreen経由でサーバーコマンドを送ります。

よくわからないうちは、停止バックアップのほうが安全です。

「screen」で「save-all」「save-off」を送る方法

screenで Minecraft というセッション名を使っているなら、次のようにコマンドを送れます。

Terminal window
screen -S Minecraft -p 0 -X stuff "save-all flush$(printf '\r')"
screen -S Minecraft -p 0 -X stuff "save-off$(printf '\r')"
screen -S Minecraft -p 0 -X stuff "save-on$(printf '\r')"

ただし、コピー中に失敗して save-on が実行されないのが一番怖いポイントです。

使うなら、エラー時にも save-on を実行するようにスクリプトを組みます。

save-off を使うバックアップは、手順を理解してから試す方が安全です。

バックアップをサーバー外の別ストレージへ転送する

同じVPS内に保存するだけだと、ディスク障害や誤削除に弱いです。

大事なワールドなら、外部ストレージにも逃がします。

別サーバーへ「scp」で転送する

別VPSや自宅NASへSSH接続できる環境なら、scp で転送します。

Terminal window
scp "$BACKUP_FILE" [email protected]:/data/minecraft-backups/

これをバックアップスクリプトの tar 後に入れます。

SSH鍵を設定してパスワードなしで転送できる状態にしておくと、cronでも動かしやすいです。

「rsync」で同期する

差分同期したいなら rsync も使えます。

Terminal window
rsync -av --ignore-existing /opt/minecraft-backups/ [email protected]:/data/minecraft-backups/

--ignore-existing を付けると、すでにあるファイルは上書きしません。

バックアップ先を壊したくない場合に扱いやすいです。

クラウドストレージを使う場合

Google DriveやS3互換ストレージへ送る場合は、rclone のような同期ツールを使います。

ただし、認証設定や保存容量の管理が必要です。

初心者なら、まずサーバー内バックアップを作ってから外部転送を足す順番が楽です。

一気に全部やろうとすると、失敗したときに原因を切り分けにくくなるためです。

Windowsでタスクスケジューラ自動バックアップを作る

Windowsの自宅サーバーなら、PowerShellスクリプトとタスクスケジューラを使います。

ここでは、サーバーを停止してからZIPを作る方法を例にします。

前提のフォルダ構成

この記事では、次の構成を例にします。

C:\MinecraftServer
C:\MinecraftBackups

実際のフォルダに合わせて変更します。

PowerShellスクリプトを作る

C:\MinecraftServer\backup.ps1 を作ります。

Terminal window
$ServerDir = "C:\MinecraftServer"
$BackupDir = "C:\MinecraftBackups"
$KeepDays = 7
$Date = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
$BackupFile = Join-Path $BackupDir "minecraft_$Date.zip"
$LogFile = Join-Path $BackupDir "backup.log"
New-Item -ItemType Directory -Force -Path $BackupDir | Out-Null
"[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] backup start" | Add-Content $LogFile
Get-Process -Name "java" -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Sleep -Seconds 10
$Targets = @(
"world",
"world_nether",
"world_the_end",
"plugins",
"server.properties",
"ops.json",
"whitelist.json",
"banned-players.json"
)
$ExistingTargets = $Targets | ForEach-Object {
$Path = Join-Path $ServerDir $_
if (Test-Path $Path) { $Path }
}
Compress-Archive -Path $ExistingTargets -DestinationPath $BackupFile -Force
Start-Process -FilePath "java" -ArgumentList "-Xms2G -Xmx2G -jar server.jar nogui" -WorkingDirectory $ServerDir
Get-ChildItem $BackupDir -Filter "minecraft_*.zip" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$KeepDays) } |
Remove-Item -Force
"[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] backup done: $BackupFile" | Add-Content $LogFile

この例は、java プロセスを止めてからZIPを作ります。

ただし、これはわかりやすさを優先した簡易例です。

Stop-Process -Force は、マイクラサーバーに stop コマンドを送って正常終了する方法ではありません。

同じPCで別のJavaアプリを動かしている場合は、それも止まる可能性があります。

その場合は、サーバー起動用のバッチファイルや管理ツールに合わせて、停止方法を変えます。

できれば、サーバーコンソール、RCON、管理ツールなどから stop を送って終了し、完全に止まったことを確認してからZIPを作る形にします。

補足

PowerShellの Compress-Archive は手軽ですが、大きいワールドではZIP作成に失敗したり時間がかかったりする場合があります。 特にワールドが数GB規模なら、7-Zipなどの圧縮ツールを使う方法も検討します。

PowerShellを手動実行する

管理者権限のPowerShellで試します。

Terminal window
powershell -ExecutionPolicy Bypass -File "C:\MinecraftServer\backup.ps1"

C:\MinecraftBackups にZIPファイルができているか確認します。

手動で動かないうちは、タスクスケジューラに入れない方がいいです。

タスクスケジューラに登録する

コマンドで登録するなら、schtasks を使えます。

毎日3時に実行する例です。

Terminal window
schtasks /Create /SC DAILY /ST 03:00 /TN "Minecraft Backup" /TR "powershell -ExecutionPolicy Bypass -File C:\MinecraftServer\backup.ps1"

登録できたら、すぐ手動実行して確認します。

Terminal window
schtasks /Run /TN "Minecraft Backup"

結果はタスクスケジューラの履歴、または C:\MinecraftBackups\backup.log で見ます。

Paper・Spigotはバックアッププラグインで自動化する

PaperやSpigotを使っているなら、バックアッププラグインで自動化する方法もあります。

代表例は、DriveBackupV2です。

DriveBackupV2は、Google Drive、OneDrive、Dropbox、FTP、WebDAV、S3互換ストレージなどへの保存に対応しています。

Paper、Spigot、Bukkit系サーバーで使えるのが特徴です。

プラグイン方式が向いている人

プラグイン方式は、次の人に向いています。

  • PaperやSpigotで運用している
  • コマンドライン操作に慣れていない
  • Google Driveなどへ直接保存したい
  • バックアップの世代管理をプラグイン側でやりたい

一方で、バニラサーバーや統合版サーバーでは使えません。

プラグインを入れられるサーバーかどうかを先に確認します。

Paperの導入前なら、こちらの手順記事を先に見ておくとプラグイン方式を選びやすいです。

PaperMCのロゴ。高速で軽量なマイクラプラグインサーバーソフトウェアを表すアイコン

マイクラサーバーのPaperMCとは?Spigotとの違い・メリットや導入方法を解説

DriveBackupV2の基本手順

DriveBackupV2は、次の順番で設定します。

  1. DriveBackupV2のjarをダウンロードする
  2. plugins フォルダへ入れる
  3. サーバーを再起動する
  4. plugins/DriveBackupV2/config.yml を確認する
  5. 保存先を設定する
  6. 1回手動バックアップを実行する
  7. 復元できるか確認する

配布ページは、DriveBackupV2のCurseForgeページ から開けます。

Google Driveへ連携する場合は、サーバー内で次のようなコマンドを実行して認証します。

/drivebackup linkaccount googledrive

OneDriveなら次のコマンドです。

/drivebackup linkaccount onedrive

Dropboxならこちらです。

/drivebackup linkaccount dropbox

ローカル保存だけで始めるなら、plugins/DriveBackupV2/config.ymllocal-keep-count を見ます。

local-keep-count は、サーバー内に残すバックアップ数です。

初期値が 0 の場合、クラウドなどへアップロードするまでの一時保存として扱われます。

サーバー内にも7世代残したいなら、次のように設定します。

local-keep-count: 7

Google DriveやOneDriveなど、リモート側にも世代数を決めたい場合は keep-count を見ます。

たとえば20世代まで残すなら、次のようにします。

keep-count: 20

DriveBackupV2は、初期状態だと worldplugins をバックアップ対象にします。

旧PaperやSpigotで world_netherworld_the_end がわかれている場合は、backup-list に含まれているかを見ます。

Paper26.1以降はこの2つが world の中に入るので、world を入れておけば足ります。

ワールドだけでなく設定も戻したいなら、少なくとも次のものをバックアップ対象に入れておくと扱いやすいです。

  • world
  • world_nether(旧Paper/Spigotのみ)
  • world_the_end(旧Paper/Spigotのみ)
  • plugins
  • server.properties
  • ops.json
  • whitelist.json
  • banned-players.json

backup-list は、次のように「バックアップするフォルダやファイル」と「作るZIP名」を並べます。

backup-list:
- path: "world"
format: "Backup-world-%FORMAT.zip"
create: true
# 次の2つは旧Paper/Spigot向け。Paper26.1以降はworldに含まれるので不要
- path: "world_nether"
format: "Backup-world_nether-%FORMAT.zip"
create: true
- path: "world_the_end"
format: "Backup-world_the_end-%FORMAT.zip"
create: true
- path: "plugins"
format: "Backup-plugins-%FORMAT.zip"
create: true
- path: "server.properties"
format: "Backup-server-properties-%FORMAT.zip"
create: true

%FORMAT には日時が入り、古いバックアップと新しいバックアップを見分けられます。

plugins フォルダにはプラグイン本体のjarも入ります。

jarまでバックアップすると容量が大きくなりやすいので、設定ファイルだけで十分な場合は blacklist*.jar を外します。

- path: "plugins"
format: "Backup-plugins-%FORMAT.zip"
create: true
blacklist:
- "**/*.jar"

設定を書き換えたら、サーバーを再起動するか、次のコマンドで設定を読み込み直します。

/drivebackup reloadconfig

初心者が最初に見るべき設定項目は、次の4つで十分です。

見る項目何を決めるか
backup-list何をバックアップするか
local-keep-countサーバー内に何世代残すか
keep-countクラウド側に何世代残すか
local-save-directoryサーバー内の保存先

プラグイン方式でも確認すること

プラグインを入れても、最初の1回は中身まで開きます。

  • ネザーとエンドも入っているか(旧構造ならworld_netherworld_the_end、Paper26.1以降はworldの中)
  • plugins フォルダ内の設定も含まれているか
  • 古いバックアップが自動削除されるか
  • クラウド保存に失敗していないか
  • 手動で復元できるか

バックアッププラグインは便利ですが、設定ミスを見逃すと毎日同じミスを繰り返します。

作られたZIPを開いて、ワールド、ネザー、エンド、プラグイン設定が入っていれば、毎日の自動バックアップに任せやすくなります。

レンタルサーバーは管理画面の自動バックアップを確認する

ConoHaやXServer GAMEsなどのマイクラ向けレンタルサーバーでは、管理画面からバックアップを設定できる場合があります。

初心者なら、この方法が一番楽です。

ただし、管理画面バックアップだけに頼り切るのは少し不安です。

バックアップ機能の有無、保存期間、世代数は、サービスや契約プランによって変わります。

使う前に、契約中プランの公式ヘルプや管理画面で現在の条件を確認します。

管理画面で見るべき項目は次の通りです。

  • 自動バックアップの有無
  • 保存頻度
  • 保存期間
  • 保存世代数
  • 復元時に上書きされる範囲
  • 手動ダウンロードできるか

大きなアップデート前、MODやプラグイン追加前、大型建築イベント前は、自分でも手動バックアップを取ります。

管理画面のバックアップ機能を重視してサーバーを選ぶなら、レンタルサーバー比較も見ておくと候補を絞りやすいです。

マイクラ向けレンタルサーバーの選び方を表すサーバーアイコン。目的別に選ぶ3社比較ガイド

【初心者向け】マイクラ用レンタルサーバーおすすめ3社比較|人数・MOD・無料お試しで選ぶ

統合版サーバーの自動バックアップ方法

統合版のBedrock Dedicated Serverでは、Java版とは保存コマンドが違います。

統合版では、バックアップ準備に save holdsave querysave resume を使います。

コマンド役割
save holdワールドファイルへの書き込みを一時停止する
save queryバックアップ対象ファイルの情報を確認する
save resumeワールドファイルへの書き込みを再開する

ただし、統合版でも初心者は停止コピーから始める方がわかりやすいです。

サーバーを止めて、worldsserver.propertiesallowlist.jsonpermissions.json をコピーします。

稼働中バックアップをする場合は、次の流れです。

  1. save hold を実行する
  2. save query でバックアップ対象を確認する
  3. 対象ファイルをコピーする
  4. save resume を必ず実行する

save resume を忘れると危険なので、最初はテスト環境で試します。

統合版のバックアップは、Java版の記事やプラグイン情報をそのまま当てはめない方が安全です。

自動バックアップの保存頻度と世代数の目安

バックアップは、頻度と保存世代を決めておかないと容量を圧迫します。

迷ったら、次の目安で始めます。

サーバーの状態頻度保存世代
たまに遊ぶ少人数サーバー1日1回7世代
毎日遊ぶサーバー1日1回7から14世代
建築イベント中作業前後に追加イベント終了まで残す
MOD・プラグイン変更前作業前に1回成功確認まで残す
バージョンアップ前作業前に1回しばらく残す

最新1世代だけは危険です。

荒らしや設定ミスに気づくのが遅れると、壊れた状態で上書きされます。

最初は7世代で十分で、容量に余裕が出てきたら14世代まで増やす順番が扱いやすいです。

復元テストで自動バックアップが戻せるか確認する

バックアップは、復元できて初めて意味が出ます。

spa

ここ、面倒に見えるんですが一度だけでも試しておくと本番でかなり落ち着けます!

自動化したら、月1回はテスト用フォルダへ戻して確認します。

本番サーバーへいきなり上書きする必要はなく、別フォルダで起動して最低限次を見ます。

  • サーバーが起動するか
  • ワールドに入れるか
  • ネザーとエンドも戻っているか
  • OP権限やホワイトリストが戻っているか
  • プラグイン設定が反映されているか
  • コンソールに大きなエラーが出ていないか

復元テストをしていないバックアップは、まだ半分の状態です。

壊れてから初めて試すと、ファイル名・置き場所・権限・起動コマンドのどこで詰まっているのかわかりにくくなります。

自動バックアップでよくある失敗と対策

ここからは、自動化したあとに見落としやすいところを確認します。

サーバー内にしか保存していない

同じVPSや同じPCの中だけに保存していると、ディスク故障や誤削除に弱いです。

昨日の状態に戻すだけなら便利ですが、VPSごと消えたときには一緒に失います。

大事なワールドなら、別サーバー、外付けSSD、クラウドストレージにも逃がします。

ネザーとエンドが抜けている

旧PaperやSpigotでは、world_netherworld_the_end が別フォルダにわかれます。

この構造でworldだけを圧縮すると、通常世界だけ戻って、ネザーやエンドの建築が抜けます。

Paper26.1以降はこの2つがworldの中に入るため、worldをまるごと保存すれば抜けません。

最初のバックアップ後に、ZIPやtarの中身を開いて確認します。

pluginsフォルダを保存していない

プラグインサーバーでは、plugins フォルダに設定やデータが入ります。

権限、保護、経済、チャット連携などは、ワールドとは別に保存される場合があります。

ワールドだけ戻すと、建物は戻ったのに権限や保護設定が空っぽ、という戻し方になりやすいです。

「cron」は動いているのに中身が失敗している

cronに登録できても、スクリプトが成功しているとは限りません。

止まりがちなのは、パスの違い、権限不足、容量不足、サービス名のズレです。

ログを残し、最初の数日はバックアップファイルが増えているか確認します。

古いバックアップを消しすぎている

容量を節約しようとして、最新1個だけにするのは危険です。

荒らしに気づくのが翌日なら、最新バックアップも荒らされた後です。

最低7世代は残す前提で、容量が足りないなら保存先や圧縮方法を見直します。

よくある質問

Q

マイクラサーバーの自動バックアップは毎日必要?

A

少人数サーバーなら毎日1回を目安にするとわかりやすいです。建築やイベントが多い日は、作業前後に手動バックアップを追加すると安心です。

Q

cronのバックアップはサーバーを止めた方がいい?

A

初心者は停止してからコピーする方法がおすすめです。稼働中のまま取る方法もありますが、save-offやsave-onの扱いを間違えると保存が止まったままになります。

Q

バックアップは何世代残せばいい?

A

迷ったら最低7世代です。最新1世代だけだと、荒らしや設定ミスに気づいた時点で壊れた状態に上書きされていることがあります。

Q

DriveBackupV2を入れれば十分?

A

便利ですが、設定確認と復元テストは必要です。ネザーとエンド(旧Paper/Spigotはworld_netherとworld_the_end、Paper26.1以降はworldの中)やpluginsフォルダまで含まれているか、クラウド保存に失敗していないかを確認します。

Q

Windowsでも自動バックアップできる?

A

PowerShellで圧縮スクリプトを作り、タスクスケジューラまたはschtasksで毎日実行する形がわかりやすいです。

Q

統合版サーバーでも同じ方法でいい?

A

基本の考え方は同じですが、保存対象とコマンドが違います。統合版はworldsフォルダを中心に保存し、稼働中バックアップではsave hold、save query、save resumeを使います。

まとめ:自動バックアップは「毎日作る」「別に逃がす」「復元する」までやる

マイクラサーバーの自動バックアップは、難しい仕組みを作ることが目的ではありません。

いざ壊れたときに戻せる状態を残すのが目的です。

  • Linux VPSは cron、Windowsはタスクスケジューラで自動化する
  • Paper・Spigotはバックアッププラグインも候補にする
  • 統合版は worldssave hold 系の違いに注意する
  • 最低7世代を残し、サーバー外にも保存する
  • 月1回は復元テストをする

最初の1本は、サーバーを止めてZIPを作るだけでOKです。

確認するのは難しい仕組みではなく、「昨日のワールドに戻せるファイルがあるか」だけです。

そこまで確認できたら、Google Driveや別サーバーへの保存、世代数の調整、復元テストを追加します。

管理人spaのアイコン
spa この記事を書いた人

サーバーの構築と運用を繰り返して4年。その経験をもとに記事60本以上を執筆。

プロフィール詳細 →
管理人spa

マイクラサーバーの設定でつまずきたくないなら…

ConoHa for GAMEなら管理画面の案内に沿って進むだけ。月数百円〜で始められます

今すぐ始める