【初心者向け】マイクラサーバーを再起動する方法!手動・自動の両方を解説
2026.09.15広告・PRを含む記事です
マイクラサーバーの自動バックアップ方法!cron・プラグイン・Windows対応

- 手動バックアップを取り忘れて、数日前のデータしか残っていない
- 荒らしや不具合に気づいたときには、壊れた状態のセーブデータしかなかった
- 自動バックアップの仕組みを作りたいけれど、設定が難しそうで手を出せていない
マイクラサーバーのバックアップと復元を手動で行っていると、どうしても更新忘れや、ワールド破損後のデータで上書きしてしまう事故が起こります。
大切なワールドを失わないためには、「サーバー停止・圧縮・世代保存」を毎日決まった時間に自動実行する仕組みを作っておくのが最も確実です。
この記事では、Linux(cron)やWindowsでの定期自動化から、プラグインを使った手軽な設定、復元テストの手順までを分かりやすく整理しました。
読み終えるころには、自分の環境に合った自動バックアップが稼働し、データの取り忘れに怯えることなく安心してマルチプレイを楽しめます。
結論:初心者はサーバーを止める自動バックアップから始める

最初におすすめしたいのは、サーバーを一度止めてからコピーする自動バックアップです。
稼働中のままバックアップを取る方法は、save-offやsave-onの扱いを誤るとデータ破損の原因になります。初心者はサーバーを一度停止してからバックアップするのが最も安全です。
僕のサーバーでも深夜に停止してバックアップしていますが、3分程度で完了します。
アーカイブのサイズはワールドが育つほど増えていき、1週間で1.1GBから1.3GB程度まで伸びました。

| 環境 | おすすめ方法 |
|---|---|
| Linux VPS | systemctlまたはscreenとcronで停止、圧縮、起動 |
| Windows自宅サーバー | PowerShellとタスクスケジューラ |
| Paper・Spigot | DriveBackupV2などのバックアッププラグイン |
| レンタルサーバー | 管理画面の自動バックアップと手動保存を併用 |
| 統合版サーバー | 停止コピー、慣れたらsave hold系を検討 |
迷ったら、毎日1回、7世代保存、サーバー外にも保存、月1回の復元テストから始めます。
凝った仕組みを作ることより、戻せるバックアップを残すことを優先します。
補足
この記事のコマンドは、基本的にコピペして使える形にしています。
ただし、/opt/minecraft、server.jar、Minecraft、minecraftなどの名前は、自分の環境に合わせて置き換えます。
自動バックアップ前に確認する3つのこと
自動バックアップを作る前に、次の3つだけ確認します。
ここを先に把握しておくと、どの手順を使えばいいか迷いにくいです。
| 確認すること | 見るコマンド |
|---|---|
| サーバーフォルダの場所 | pwd、ls |
| 起動方法 | systemctlかscreenか |
| サーバーを動かしているユーザー | whoami、screen -list |
今いる場所がサーバーフォルダか確認するなら、次のコマンドを使います。
pwdlsserver.jar、world、server.propertiesが見えれば、そこがサーバーフォルダです。
systemdで管理しているかは、次のコマンドで確認します。
systemctl list-units --type=service | grep minecraftscreenで動かしている場合は、別のコマンドを使います。
screen -listサーバーを動かしているユーザーを確認するなら、次のコマンドです。
whoami自動バックアップで保存すべきファイル

自動化する前に、保存対象を決めます。
ここを間違えると、毎日バックアップしていても復元時に困るので注意が必要です。
保存対象はエディションで変わります。
- Java版で保存するもの
- 統合版で保存するもの
自分が動かしている側だけ確認すれば十分です。
Java版で保存するもの
Java版は、サーバーソフトの種類によってネザーとエンドの保存場所が変わります。
保存対象もそれに合わせます。
| サーバー | 保存対象 |
|---|---|
| バニラ・Paper26.1以降 | world、server.properties(Paperはpluginsも) |
| 旧Paper・Spigot | world、world_nether、world_the_end、server.properties、plugins |
| プラグイン運用共通 | ワールドと設定に加えてops.json、whitelist.json、banned-players.json |
迷いやすいのはネザーとエンドの保存場所です。
旧PaperやSpigotでは、ネザーとエンドがworld_netherとworld_the_endとして別フォルダに分かれています。一方、Paper26.1以降はworld/dimensions/配下に統合されているため、worldフォルダごと保存すれば抜けません。どちらの構造かわからないときは、worldの隣にworld_netherフォルダが存在するかどうかで判別できます。
また、プラグインを導入している場合はpluginsフォルダも必ず保存対象に含めます。LuckPermsの権限や経済データはワールド内ではなくプラグイン側に保持されているため、ワールドだけ戻しても設定が元に戻りません。
level-nameやserver-portなど、設定ファイルの中身はserver.propertiesの設定ガイドで先に把握しておくと迷いが減ります。
Paper、Spigot、Vanillaの違いで迷っている場合は、先にサーバーソフトの選び方を見ておくと判断しやすいです。
統合版で保存するもの
統合版サーバーでは、基本的にworldsフォルダを保存します。
許可リストや権限も戻したいなら、次のファイルも含めます。
| ファイル | 役割 |
|---|---|
worlds | ワールドデータ |
server.properties | サーバー設定 |
allowlist.json | 許可リスト |
permissions.json | 権限設定 |
resource_packs | リソースパック |
behavior_packs | ビヘイビアーパック |
統合版のフォルダ構造はJava版とは別です。
Java版のworld_netherのような感覚で探すと迷うので、最初はworldsを中心に確認します。
ホワイトリストやallowlistの設定まで一緒に戻したい場合は、参加制限の設定も確認しておくと迷いにくいです。
環境別に自動バックアップ方法を選ぶ

保存対象が決まったら、次は自分の環境に合う自動化方法を選びます。
VPS、自宅Windows、Paper・Spigot、レンタルサーバー、統合版では、使う道具がそれぞれ別です。
Linux VPSで毎日の自動バックアップを設定する
Linux VPSでは、シェルスクリプトを作ってcronで毎日実行します。
ここでは、サーバーを停止してからバックアップする方法を例にします。
補足
cronは、Linuxなどで、毎日午前3時にこのコマンドを実行すると指定できる仕組みです。 分、時、日、月、曜日の5項目で実行タイミングを決めます。
設定は次の順番で進めます。
- 前提のフォルダ構成
- systemdでサーバーを動かしている場合
- screenでサーバーを動かしている場合
- systemd版のバックアップスクリプトを作る
- screen版のバックアップスクリプトを作る
- スクリプトに実行権限を付けて手動確認する
- 毎日3時に自動実行するよう登録する
systemdとscreenは、自分が使っているほうだけ読めば問題ありません。
前提のフォルダ構成
前提にするのは、このフォルダ構成です。
/opt/minecraft├── server.jar├── world├── world_nether # 旧Paper・Spigotのみ。Paper26.1以降はworldの中に入る├── world_the_end # 同上├── plugins└── server.properties
/opt/minecraft-backups実際のフォルダ名は、自分のサーバーに合わせて変えます。
world_netherやworld_the_endが見当たらないなら、Paper26.1以降の構造でworldの中にまとまっています。
/home/minecraft/serverで運用しているなら、スクリプト内のSERVER_DIRをそこに変更します。
補足
以降のLinux手順では、/opt/minecraftをサーバーフォルダ、/opt/minecraft-backupsをバックアップ保存先として進めます。
違う場所で運用している場合は、スクリプト内のSERVER_DIRとBACKUP_DIRだけ直せばOKです。
systemdでサーバーを動かしている場合
VPSで運用しているなら、マイクラサーバーをsystemdのサービスとして動かしている人も多いです。
サービス名がminecraft.serviceなら、次のコマンドで停止と起動をします。
sudo systemctl stop minecraftsudo systemctl start minecraftサービス名が違う場合は、自分の環境に合わせます。
確認は次のコマンドです。
systemctl list-units --type=service | grep minecraftscreenでサーバーを動かしている場合
自宅サーバーやVPSでは、screenでマイクラサーバーを動かしている人もいます。
たとえば、次のように起動しているケースです。
cd /opt/minecraftscreen -dmS Minecraft java -Xms2G -Xmx2G -jar server.jar noguiこの場合は、次のコマンドでは止められません。
systemctl stop minecraftscreenセッションへsayやstopを送って、サーバーが終了してからバックアップします。
screenセッション名の確認が必要です。
screen -listMinecraftという名前で動いていれば、次のようにコマンドを送れます。
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_DIR、BACKUP_DIR、SERVICE_NAMEは環境に合わせて変更します。
初心者は、nanoでファイルを開くのがわかりやすいです。
sudo nano /usr/local/bin/mc-backup.sh開いたら、次の内容をそのまま貼り付けます。
#!/bin/bashset -euo pipefail
SERVER_DIR="/opt/minecraft"BACKUP_DIR="/opt/minecraft-backups"SERVICE_NAME="minecraft"KEEP_DAYS=7DATE="$(date '+%Y-%m-%d_%H-%M-%S')"BACKUP_FILE="${BACKUP_DIR}/minecraft_${DATE}.tar.gz"LOG_FILE="${BACKUP_DIR}/backup.log"SERVER_STOPPED=0TARGETS=( 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の順で保存すればOKです。
補足
systemd版で最低限書き換えるのは、SERVER_DIR、BACKUP_DIR、SERVICE_NAMEの3つです。
サービス名がminecraftではない場合、systemctl list-units --type=service | grep minecraftで出た名前に合わせます。
スクリプトが動く順番はこうです。
- バックアップ保存先を作る
- マイクラサーバーを停止する
- ワールド、設定、プラグインを
tar.gzに圧縮する - サーバーを起動する
- 7日より古いバックアップを削除する
- ログを
backup.logに残す
TARGETSに書いた候補のうち、実際に存在するファイルやフォルダだけを圧縮します。
バニラサーバーでpluginsやops.jsonが無くても、そのせいで止まらないようにしています。
途中でtarが失敗しても、cleanupでサーバーを起動し直す形にしています。
バックアップ失敗でサーバーが止まりっぱなしになるのを避けるためです。
保存対象を確かめるには、自分のサーバーフォルダでlsを実行します。
ls /opt/minecraftscreen版のバックアップスクリプトを作る
screenで運用している場合、スクリプトの保存先は/usr/local/bin/mc-backup-screen.shです。
SCREEN_NAME、SERVER_DIR、BACKUP_DIR、起動時のメモリ量は自分の環境に合わせます。
screen版は、マイクラサーバーを起動しているユーザーで実行するのが基本です。
rootユーザーのcronから実行すると、一般ユーザー(minecraftなど)が起動したscreenセッションが見えず、停止コマンドが届きません。必ずサーバー起動と同じユーザーのcrontabで登録してください。
screenで起動しているのに、cronから見ると見つからないことがあるんですね!
screenを起動しているユーザーでファイルを開くのが原則です。
nano /usr/local/bin/mc-backup-screen.sh権限エラーになる場合は、先に管理者権限で空ファイルを作って所有者を変えます。
sudo touch /usr/local/bin/mc-backup-screen.shsudo chown minecraft:minecraft /usr/local/bin/mc-backup-screen.shnano /usr/local/bin/mc-backup-screen.shminecraft:minecraftは、自分がサーバーを動かしているユーザー名に置き換えます。
貼り付ける中身はこれです。
#!/bin/bashset -euo pipefail
SERVER_DIR="/opt/minecraft"BACKUP_DIR="/opt/minecraft-backups"SCREEN_NAME="Minecraft"KEEP_DAYS=7START_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=0TARGETS=( 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_DIR、BACKUP_DIR、SCREEN_NAME、START_COMMANDです。
特にSCREEN_NAME="Minecraft"は、screen -listで表示された名前と合わせます。
このスクリプトは、screen内のマイクラサーバーへsave-allとstopを送ります。
screenセッションが消えたことを確認してから圧縮するのが手順です。
圧縮が終わったら、同じscreen名でサーバーを起動し直します。
server.jarの名前やメモリ量が違う場合は、START_COMMANDのjava -Xms2G -Xmx2G -jar server.jar noguiを必ず直します。
保存対象を増やしたい場合は、systemd版と同じくTARGETSにフォルダ名やファイル名を追加するだけです。
スクリプトに実行権限を付けて手動確認する
スクリプトを実行できるようにします。
sudo chmod +x /usr/local/bin/mc-backup.shscreen版のスクリプトにも、同じように実行権限が必要です。
sudo chmod +x /usr/local/bin/mc-backup-screen.sh手動で一度動かします。
sudo /usr/local/bin/mc-backup.shscreen版の場合は実行するコマンドが別です。
sudo /usr/local/bin/mc-backup-screen.shただし、screenを一般ユーザーで起動している場合は、sudoを付けずに同じユーザーで試します。
/usr/local/bin/mc-backup-screen.shその場合、バックアップ保存先へ書き込める権限も必要です。
sudo mkdir -p /opt/minecraft-backupssudo chown minecraft:minecraft /opt/minecraft-backupsminecraft:minecraftの部分は、自分がサーバーを動かしているユーザー名に変えます。
バックアップファイルができているか確認します。
ls -lh /opt/minecraft-backupsログの確認も必要です。
tail -n 50 /opt/minecraft-backups/backup.logこの時点で失敗しているなら、cronに入れる前に原因を直します。
手動実行で失敗するものは、自動化しても同じ結果になるのが通例です。
毎日3時に自動実行するよう登録する
crontab -eを開きます。
sudo crontab -escreen版で、一般ユーザーのscreenセッションを使っている場合はsudoを付けません。
crontab -e毎日午前3時に実行するなら、次の1行を追加します。
0 3 * * * /usr/local/bin/mc-backup.shscreen版なら、登録するスクリプト名を変えます。
0 3 * * * /usr/local/bin/mc-backup-screen.shscreen版は、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に任せる流れが安全です。
設定後は、登録内容の確認が必要です。
sudo crontab -l次の日に、バックアップファイルとログが増えているか確認します。
ls -lh /opt/minecraft-backupstail -n 50 /opt/minecraft-backups/backup.logサーバーを止めずに稼働中バックアップする方法

サーバーを止めずにバックアップしたい場合は、save-all、save-off、save-onを使う方法もあります。
ただし、save-offを実行したあとにsave-onの再開コマンドを忘れると、以降のワールド保存が停止してしまうリスクがあります。
stopで止める安全な流れが不安なら、先に停止と再起動の基本を押さえておくと作業しやすいです。
扱うのは次の2点です。
- Java版の保存系コマンド
- 稼働中のサーバーへ保存コマンドを送る方法
コマンドの意味を押さえてから、送り方へ進んでください。
Java版の保存系コマンド
Java版の専用サーバーでは、保存に関係するコマンドを使います。
| コマンド | 役割 |
|---|---|
save-all | サーバーデータを保存する |
save-all flush | チャンクをすぐ保存するが、短時間止まることがある |
save-off | ワールドファイルへの書き込みを止める |
save-on | ワールドファイルへの書き込みを再開する |
各コマンドは、サーバーのコンソールやRCON、screen経由で実行します。
サーバーを止めずに取るときの流れはこうです。
- チャンクをすぐ保存する
save-all flush- ワールドファイルへの書き込みを止める
save-off- ワールドと設定ファイルをコピーする
- ワールドファイルへの書き込みを再開する
save-on各コマンドを正しい順番で自動実行させるスクリプトを用意します。
稼働中のサーバーへ保存コマンドを送る方法
screenでMinecraftというセッション名を使っているなら、次のようにコマンドを送れます。
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が実行されるよう、トラップ処理などを組み込んでおく必要があります。
バックアップをサーバー外の別ストレージへ転送する
同じVPS内に保存するだけだと、ディスク障害や誤削除に弱いです。
大事なワールドなら、外部ストレージにも逃がします。
逃がし先の選択肢は3つです。
- 別のサーバーへ転送して保管する
- 差分だけを同期して保管する
- クラウドストレージを使う場合
別のサーバーを持っていないなら、クラウドストレージが一番手軽です。
別のサーバーへ転送して保管する
別VPSや自宅NASへSSH接続できる環境なら、scpでの転送も選べます。
これをバックアップスクリプトのtar後に入れます。
SSH鍵を設定してパスワードなしで転送できる状態にしておくと、cronでも動かしやすいです。
差分だけを同期して保管する
差分同期したいならrsyncも使えます。
--ignore-existingを付けると、すでにあるファイルは上書きしません。
バックアップ先を壊したくない場合に扱いやすいです。
クラウドストレージを使う場合
Google DriveやS3互換ストレージへ送る場合は、rcloneのような同期ツールを使います。
そのかわり、認証設定や保存容量の管理が必要です。
初心者なら、まずサーバー内バックアップを作ってから外部転送を足す順番で進めます。
一気に全部やろうとすると、失敗したときに原因を切り分けにくくなるためです。
Windowsでタスクスケジューラ自動バックアップを作る
Windowsの自宅サーバーなら、PowerShellスクリプトとタスクスケジューラを使います。
ここで例にするのは、サーバーを停止してからZIPを作る方法です。
作業は次の4ステップです。
- 前提のフォルダ構成
- PowerShellスクリプトを作る
- PowerShellを手動実行する
- タスクスケジューラに登録する
手動実行で動くところまで確認してから、タスクへ登録します。
前提のフォルダ構成
この記事では、次の構成を例にします。
C:\MinecraftServerC:\MinecraftBackups実際のフォルダに合わせて変更してください。
PowerShellスクリプトを作る
作るファイルはC:\MinecraftServer\backup.ps1です。
$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
# 注意:javaの強制終了はデータ破損リスクがあるため、安全に運用するなら後述のDriveBackupV2プラグインを推奨しますGet-Process -Name "java" -ErrorAction SilentlyContinue | Stop-Process -ForceStart-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による強制終了は、書き込み途中で切断されワールドが破損する危険があります。またPC上の他のJavaアプリも終了してしまうため、事前にコンソールでstopを実行して正常終了させてからバックアップを行ってください。
PaperやSpigotを動かしているなら、プロセスを停止せずに自動バックアップできる後述のDriveBackupV2プラグインを使うのが最も安全です。
補足
PowerShellのCompress-Archiveは手軽ですが、ワールドが大きくなるほどZIP作成に時間がかかります。
数GB規模まで育ったら、7-Zipなどの圧縮ツールへ切り替えてください。
PowerShellを手動実行する
管理者権限のPowerShellで試してください。
powershell -ExecutionPolicy Bypass -File "C:\MinecraftServer\backup.ps1"C:\MinecraftBackupsにZIPファイルができているか確認します。
手動で動かないうちは、タスクスケジューラに入れない方がいいです。
タスクスケジューラに登録する
コマンドで登録するなら、schtasksを使えます。
毎日3時に実行する例です。
schtasks /Create /SC DAILY /ST 03:00 /TN "Minecraft Backup" /TR "powershell -ExecutionPolicy Bypass -File C:\MinecraftServer\backup.ps1"登録できたら、すぐ手動実行して確認します。
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系サーバーで使えるのが特徴です。
プラグイン方式で押さえるのは次の3点です。
- プラグイン方式が向いている人
- DriveBackupV2の基本手順
- プラグイン方式でも確認すること
導入自体は簡単ですが、保存先の設定だけは自分で確認してください。
プラグイン方式が向いている人
プラグイン方式は、次の人に向いています。
- PaperやSpigotで運用している
- コマンドライン操作に慣れていない
- Google Driveなどへ直接保存したい
- バックアップの世代管理をプラグイン側でやりたい
一方で、バニラサーバーや統合版サーバーでは使えません。
プラグインを入れられるサーバーかどうかを先に確認します。
Paperの導入前なら、PaperMCの導入手順を先に見ておくとプラグイン方式を選びやすいです。
DriveBackupV2の基本手順
DriveBackupV2は、次の順番で設定します。
- DriveBackupV2のjarをダウンロードする
pluginsフォルダへ入れる- サーバーを再起動する
plugins/DriveBackupV2/config.ymlを確認する- 保存先を設定する
- 1回手動バックアップを実行する
- 復元できるか確認する
配布ページは、DriveBackupV2のCurseForgeページ です。
Google Driveへ連携する場合は、サーバー内で次のようなコマンドを実行して認証します。
/drivebackup linkaccount googledriveOneDriveなら次のコマンドです。
/drivebackup linkaccount onedriveDropboxを使う場合は、指定するサービス名が変わります。
/drivebackup linkaccount dropboxローカル保存だけで始めるなら、plugins/DriveBackupV2/config.ymlのlocal-keep-countを見ます。
local-keep-countは、サーバー内に残すバックアップ数です。
初期値が0の場合、クラウドなどへアップロードするまでの一時保存として扱われます。
サーバー内にも7世代残したいなら、次のように設定します。
local-keep-count: 7Google DriveやOneDriveなど、リモート側の世代数はkeep-countが設定箇所です。
たとえば20世代まで残すなら、次のようにします。
keep-count: 20旧PaperやSpigotでworld_nether、world_the_endがわかれている場合は、backup-listへの追加が必要です。
Paper26.1以降はこの2つがworldの中に入るので、worldを入れておけば足ります。
ワールドだけでなく設定も戻したいなら、少なくとも次のものをバックアップ対象に入れておくと扱いやすいです。
worldworld_nether(旧Paper・Spigotのみ)world_the_end(旧Paper・Spigotのみ)pluginsserver.propertiesops.jsonwhitelist.jsonbanned-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_nether等) pluginsフォルダ内の設定も含まれているか- 古いバックアップが自動削除されるか
- クラウド保存に失敗していないか
- 手動で復元できるか
バックアッププラグインは便利ですが、設定ミスを見逃すと毎日同じミスが続くのが難点です。
作られたZIPを開いて、ワールド、ネザー、エンド、プラグイン設定が入っていれば、毎日の自動バックアップに任せやすくなります。
レンタルサーバーは管理画面の自動バックアップを確認する
ConoHaやXServer GAMEsなどのマイクラ向けレンタルサーバーでは、管理画面から自動バックアップを設定できます。
初心者なら、この方法が一番楽です。
とはいえ、管理画面バックアップだけに頼り切るのは少し不安です。
バックアップ機能の有無、保存期間、世代数は、サービスや契約プランによって変わります。
使う前に、契約中プランの公式ヘルプや管理画面で現在の条件を確認します。
管理画面で見るのは、バックアップまわりの設定です。
- 自動バックアップの有無
- 保存頻度
- 保存期間
- 保存世代数
- 復元時に上書きされる範囲
- 手動ダウンロードできるか
大きなアップデート前、MODやプラグイン追加前、大型建築イベント前は、自分でも手動バックアップを取ります。
管理画面のバックアップ機能を重視してサーバーを選ぶなら、レンタルサーバー比較も見ておくと候補を絞りやすいです。
cronやスクリプトを書かずに自動化したい場合は、バックアップ機能を持つ管理画面から始めるほうが早いです。
PLAYHUB! 長期割引パスの新規申込が時間課金の月額上限より最大76%OFF。10月9日17時まで
4GBは1ヶ月1,292円。Minecraft managerの自動バックアップなら、cronの設定を書かずに済みます
管理画面でバックアップできるプランを確認する統合版サーバーの自動バックアップ方法
統合版のBedrock Dedicated Serverでは、Java版とは保存コマンドが違います。
統合版では、バックアップ準備にsave hold、save query、save resumeを使います。
| コマンド | 役割 |
|---|---|
save hold | ワールドファイルへの書き込みを一時停止する |
save query | バックアップ対象ファイルの情報を確認する |
save resume | ワールドファイルへの書き込みを再開する |
ただし、統合版でも初心者は停止コピーから始める方がわかりやすいです。
サーバーを止めて、worlds、server.properties、allowlist.json、permissions.jsonをコピーします。
稼働中バックアップをする場合は、次の流れです。
save holdを実行するsave queryでバックアップ対象を確認する- 対象ファイルをコピーする
save resumeを必ず実行する
save resumeを忘れると危険なので、最初はテスト環境で試します。
統合版のバックアップは、Java版の記事やプラグイン情報をそのまま当てはめない方が安全です。
自動バックアップの保存頻度と世代数の目安
バックアップは、頻度と保存世代を決めておかないと容量を圧迫します。
迷ったら、次の目安で始めます。
| サーバーの状態 | 頻度 | 保存世代 |
|---|---|---|
| たまに遊ぶ少人数サーバー | 1日1回 | 7世代 |
| 毎日遊ぶサーバー | 1日1回 | 7から14世代 |
| 建築イベント中 | 作業前後に追加 | イベント終了まで残す |
| MOD・プラグイン変更前 | 作業前に1回 | 成功確認まで残す |
| バージョンアップ前 | 作業前に1回 | しばらく残す |
最新1世代のみの保存運用は非常に危険です。荒らし被害やワールド破損に気づくのが遅れた場合、すでに壊れた状態のデータで上書きされて元の正常なデータへ戻せなくなります。最低でも7世代は残してください。
最初は7世代を目安にし、ディスク容量に余裕があれば14世代まで増やすと安心です。
復元テストで自動バックアップが戻せるか確認する

バックアップは、復元できて初めて意味が出ます。
ここ、面倒に見えるんですが一度だけでも試しておくと本番でかなり落ち着けます!
自動化したら、月1回はテスト用フォルダへ戻しての確認が必要です。
本番サーバーへいきなり上書きする必要はなく、別フォルダで起動して最低限次を見ます。
- サーバーが起動するか
- ワールドに入れるか
- ネザーとエンドも戻っているか
- OP権限やホワイトリストが戻っているか
- プラグイン設定が反映されているか
- コンソールに大きなエラーが出ていないか
復元テストをしていないバックアップは、まだ半分の状態です。
壊れてから初めて試すと、ファイル名・置き場所・権限・起動コマンドのどこで詰まっているのかわかりにくくなります。
自動バックアップでよくある失敗と対策
ここからは、自動化したあとに見落としやすいところを確認します。
よくある失敗は5つです。
- サーバー内にしか保存していない
- ネザーとエンドが抜けている
- pluginsフォルダを保存していない
- 自動実行はされているのに中身が空になっている
- 古いバックアップを消しすぎている
どれも設定した直後は気づきにくく、復元しようとした日に発覚します。
サーバー内にしか保存していない
同じVPSや同じPCの中だけに保存していると、ディスク故障や誤削除に弱いです。
昨日の状態に戻すだけなら便利ですが、あなたのVPSごと消えたときには一緒に失います。
大事なワールドなら、別サーバー、外付けSSD、クラウドストレージにも逃がします。
サーバー本体が故障したときに巻き込まれないよう、別サーバーや外部ストレージへ退避させておくのが安全です。
ネザーとエンドが抜けている
旧PaperやSpigotでは、world_netherとworld_the_endが別フォルダに分かれます。
この構造でworldだけを圧縮すると、通常世界だけ戻って、ネザーやエンドの建築が抜けます。
Paper26.1以降はこの2つがworldの中に入るため、worldをまるごと保存すれば抜けません。
最初のバックアップ後に、ZIPやtarの中身を開いて確認します。
pluginsフォルダを保存していない
プラグインサーバーでは、設定やデータの保存先がpluginsフォルダです。
権限、保護、経済、チャット連携のデータは、ワールドではなくpluginsフォルダの中に保存されます。
ワールドだけ戻すと、建物は戻ったのに権限や保護設定が空っぽ、という戻し方になりやすいです。
自動実行はされているのに中身が空になっている
cronに登録できても、スクリプトが成功しているとは限りません。
止まりがちなのは、パスの違い、権限不足、容量不足、サービス名のズレです。
ログを残し、最初の数日はバックアップファイルが増えているか確認します。
古いバックアップを消しすぎている
容量を節約しようとして、最新1個だけにするのは危険です。
荒らしに気づくのが翌日なら、最新バックアップも荒らされた後です。
最低7世代は残す前提で、容量が足りないなら保存先や圧縮方法を見直します。
よくある質問
QMySQL・MariaDBを使うプラグインのデータも、サーバーフォルダの自動バックアップに入りますか?
A
外部データベースへ保存しているデータは入りません。プラグインの接続先を確認し、mariadb-dumpなどでデータベースも別に書き出して、サーバーファイルと同じ世代として保管します。
QサーバーのバックアップZIPを友達へそのまま渡しても大丈夫ですか?
A
おすすめしません。server.propertiesにはRCONパスワードが入る場合があり、プラグイン設定にも認証情報が含まれることがあります。必要なワールドだけを分けるか、暗号化して共有先を限定します。
まとめ:自動バックアップは毎日作る、別に逃がす、復元するまでやる
マイクラサーバーの自動バックアップは、難しい仕組みを作ることが目的ではありません。
いざ壊れたときに戻せる状態を残すのが目的です。
- Linux VPSは
cron、Windowsはタスクスケジューラで自動化する - Paper・Spigotはバックアッププラグインも候補にする
- 統合版は
worldsとsave hold系の違いに注意する - 最低7世代を残し、サーバー外にも保存する
- 月1回は復元テストをする
最初の1本は、サーバーを止めてZIPを作る方法から始めます。
確認するのは難しい仕組みではなく、昨日のワールドに戻せるファイルがあるかだけです。
そこまで確認できたら、Google Driveや別サーバーへの保存、世代数の調整、復元テストを追加します。
バックアップが回り出したら、セキュリティの確認項目で他の穴も一度見ておくと、公開してから慌てずに済みます。









