【マイクラ】サーバーのバックアップ方法!復元・自動化・保存先まで初心者向けに解説
2026.05.08
サーバーの設定
【マイクラ】サーバーバックアップを自動化する方法!cron・プラグイン・Windows対応
マイクラサーバーのバックアップは、手動で取るだけでもかなり安心です。
ただ、毎日続けるとなると話が変わります。
- 昨日バックアップしたか覚えていない
- 荒らしに気づいた時点で、壊れた状態しか残っていない
- VPSの中に置いたバックアップごと消えた
- 自動バックアップはあるけど、復元したことがない
このあたりで詰まる人は多いです。
バックアップは「ファイルが作られている」だけでは足りません。
必要なデータが入っていて、古い世代も残っていて、いざという時に戻せる形まで作っておきたいところです。
この記事では、マイクラサーバーのバックアップを自動化する具体的な方法をまとめます。
Linuxなら cron、Windowsならタスクスケジューラ、PaperやSpigotならバックアッププラグイン、統合版ならBedrock Dedicated Serverの注意点まで扱います。
自動化って聞くと難しそうですが、最初は「止める、圧縮する、起動する」の3つだけで大丈夫です!
手動バックアップと復元の基本がまだ不安な場合は、先にこちらを読んでおくと理解しやすいです。
結論:初心者はサーバーを止める自動バックアップから始める

最初におすすめしたいのは、サーバーを一度止めてからコピーする自動バックアップです。
稼働中バックアップもできますが、save-off や save-on の扱いを間違えると逆に危ないです。
少人数サーバーなら、深夜に数分止めてバックアップする方が現実的です。
| 環境 | おすすめ方法 |
|---|---|
| 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 補足
初心者なら、まずは「サーバーを一度止めてからバックアップする方法」を選んでください。 稼働中バックアップは便利ですが、保存停止と再開の扱いを間違えると復元時に困ります。
自動バックアップで保存すべきファイル
自動化する前に、保存対象を決めます。
ここを間違えると、毎日バックアップしていても復元時に困ります。
Java版で保存するもの
Java版は、サーバーソフトによってワールドフォルダの分かれ方が変わります。
| サーバー | 保存対象 |
|---|---|
| バニラ | world、server.properties |
| 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 として分かれる場合があります。
world だけ保存していると、通常世界だけ戻ってネザーやエンドが抜けます。
プラグインサーバーなら、plugins フォルダも見ます。
LuckPerms、経済、保護系プラグインを使っている場合、ワールドだけ戻しても権限や保護設定が戻らないためです。
level-name や server-port など、設定ファイルの中身まで見ておきたい場合は先にこちらを読んでおくと迷いにくいです。
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├── world_the_end├── plugins└── server.properties
/opt/minecraft-backups実際のフォルダ名は、自分のサーバーに合わせて変えてください。
/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 minecraft では止められません。
screenセッションへ 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 world_the_end 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_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版は、マイクラサーバーを起動しているユーザーで実行するのが基本です。
たとえば minecraft ユーザーでscreenを起動しているなら、バックアップスクリプトも minecraft ユーザーのcronから動かします。
rootのcronから実行すると、既存のscreenセッションが見えずに失敗する場合があります。
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 world_the_end 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に入れる前に直します。
手動実行で失敗するものは、自動化しても失敗します。
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 で止める流れが不安なら、先に停止と再起動の基本を押さえておくと作業しやすいです。
Java版の保存系コマンド
Java版の専用サーバーでは、保存に関係するコマンドを使います。
| コマンド | 役割 |
|---|---|
save-all | サーバーデータを保存する |
save-all flush | チャンクをすぐ保存するが、短時間止まることがある |
save-off | ワールドファイルへの書き込みを止める |
save-on | ワールドファイルへの書き込みを再開する |
流れだけ書くと、次の通りです。
save-all flushを実行するsave-offを実行する- ワールドと設定ファイルをコピーする
save-onを必ず実行する
この方法では、RCONやscreen経由でサーバーコマンドを送ります。
よく分からないうちは、停止バックアップの方が安全です。
screenでsave-all・save-offを送る方法
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 が実行されないのが一番怖いです。
使うなら、エラー時にも save-on を実行するようにスクリプトを組みます。
save-off を使うバックアップは、手順を理解してから試す方が安全です。
バックアップをサーバー外の別ストレージへ転送する
同じVPS内に保存するだけだと、ディスク障害や誤削除に弱いです。
大事なワールドなら、外部ストレージにも逃がします。
別サーバーへscpで転送する
別VPSや自宅NASへSSH接続できる環境なら、scp で転送します。
これをバックアップスクリプトの tar 後に入れます。
SSH鍵を設定して、パスワードなしで転送できる状態にしておくとcronでも動かしやすいです。
rsyncで同期する
差分同期したいなら rsync も使えます。
--ignore-existing を付けると、すでにあるファイルは上書きしません。
バックアップ先を壊したくない場合に扱いやすいです。
クラウドストレージを使う場合
Google DriveやS3互換ストレージへ送る場合は、rclone のような同期ツールを使います。
ただし、認証設定や保存容量の管理が必要です。
初心者なら、まずはサーバー内バックアップを作って、次に外部転送を足す順番が楽です。
一気に全部やろうとすると、失敗したときに原因を切り分けにくくなります。
Windowsでタスクスケジューラ自動バックアップを作る
Windowsの自宅サーバーなら、PowerShellスクリプトとタスクスケジューラを使います。
ここでは、サーバーを停止してからZIPを作る方法を例にします。
前提のフォルダ構成
この記事では、次の構成を例にします。
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
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を作ります。
同じPCで別のJavaアプリを動かしている場合は、それも止まる可能性があります。
その場合は、サーバー起動用のバッチファイルや管理ツールに合わせて、停止方法を変えてください。
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系サーバーで使えるのが特徴です。
プラグイン方式が向いている人
プラグイン方式は、次の人に向いています。
- PaperやSpigotで運用している
- コマンドライン操作に慣れていない
- Google Driveなどへ直接保存したい
- バックアップの世代管理をプラグイン側でやりたい
一方で、バニラサーバーや統合版サーバーでは使えません。
プラグインを入れられるサーバーかどうかを先に確認します。
Paperの導入前なら、こちらの手順記事を先に見ておくとプラグイン方式を選びやすいです。
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: 20DriveBackupV2は、初期状態だと world と plugins をバックアップ対象にします。
PaperやSpigotで world_nether、world_the_end が分かれている場合は、backup-list に含まれているかを見ます。
ワールドだけでなく設定も戻したいなら、少なくとも次のものをバックアップ対象に入れておくと扱いやすいです。
worldworld_netherworld_the_endpluginsserver.propertiesops.jsonwhitelist.jsonbanned-players.json
backup-list は、次のように「バックアップするフォルダやファイル」と「作るZIP名」を並べます。
backup-list:- path: "world" format: "Backup-world-%FORMAT.zip" create: true- 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とworld_the_endも入っているかpluginsフォルダ内の設定も含まれているか- 古いバックアップが自動削除されるか
- クラウド保存に失敗していないか
- 手動で復元できるか
バックアッププラグインは便利ですが、設定ミスを見逃すと毎日同じミスを繰り返します。
作られたZIPを開いて、ワールド、ネザー、エンド、プラグイン設定が入っていれば、毎日の自動バックアップに任せやすくなります。
レンタルサーバーは管理画面の自動バックアップを確認する
ConoHaやXserverなどのマイクラ向けレンタルサーバーでは、管理画面からバックアップを設定できる場合があります。
初心者なら、この方法が一番楽です。
ただし、管理画面バックアップだけに頼り切るのは少し不安です。
サービスによって、保存期間や世代数に制限が付いています。
管理画面で見るべき項目は次の通りです。
- 自動バックアップの有無
- 保存頻度
- 保存期間
- 保存世代数
- 復元時に上書きされる範囲
- 手動ダウンロードできるか
大きなアップデート前、MODやプラグイン追加前、大型建築イベント前は、自分でも手動バックアップを取っておくと安心です。
管理画面のバックアップ機能を重視してサーバーを選ぶなら、レンタルサーバー比較も見ておくと候補を絞りやすいです。
統合版サーバーの自動バックアップ方法
統合版の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世代。
容量に余裕があるなら14世代まで増やす、という順番が扱いやすいです。
復元テストで自動バックアップが戻せるか確認する
バックアップは、復元できて初めて意味が出ます。
ここ、面倒に見えるんですが一度だけでも試しておくと本番でかなり落ち着けます!
自動化したら、月1回くらいはテスト用フォルダへ戻してみてください。
本番サーバーへいきなり上書きする必要はありません。
別フォルダで起動して、最低限ここを見ます。
- サーバーが起動するか
- ワールドに入れるか
- ネザーとエンドも戻っているか
- OP権限やホワイトリストが戻っているか
- プラグイン設定が反映されているか
- コンソールに大きなエラーが出ていないか
復元テストをしていないバックアップは、まだ半分です。
いざ壊れてから初めて試すと、ファイル名、置き場所、権限、起動コマンドのどこで詰まっているのか分かりにくくなります。
自動バックアップでよくある失敗と対策
最後に、実際につまずきやすいところをまとめます。
サーバー内にしか保存していない
同じVPSや同じPCの中だけに保存していると、ディスク故障や誤削除に弱いです。
短期復元には便利ですが、バックアップとしてはもう一段足りません。
大事なワールドなら、別サーバー、外付けSSD、クラウドストレージにも逃がします。
ネザーとエンドが抜けている
PaperやSpigotでは、world_nether と world_the_end が別フォルダになる場合があります。
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
便利ですが、設定確認と復元テストは必要です。world_nether、world_the_end、pluginsフォルダまで含まれているか、クラウド保存に失敗していないかを確認してください。
Q
Windowsでも自動バックアップできる?
A
できます。PowerShellで圧縮スクリプトを作り、タスクスケジューラまたはschtasksで毎日実行する形が分かりやすいです。
Q
統合版サーバーでも同じ方法でいい?
A
基本の考え方は同じですが、保存対象とコマンドが違います。統合版はworldsフォルダを中心に保存し、稼働中バックアップではsave hold、save query、save resumeを使います。
まとめ:自動バックアップは「毎日作る」「別に逃がす」「復元する」までやる
マイクラサーバーの自動バックアップは、難しい仕組みを作ることが目的ではありません。
いざ壊れたときに戻せる状態を残すのが目的です。
- Linux VPSは
cron、Windowsはタスクスケジューラで自動化する - Paper・Spigotはバックアッププラグインも候補にする
- 統合版は
worldsとsave hold系の違いに注意する - 最低7世代を残し、サーバー外にも保存する
- 月1回は復元テストをする
最初の1本は、サーバーを止めてZIPを作るだけでOKです。
この時点で見るのは、難しい仕組みではなく「昨日のワールドに戻せるファイルがあるか」です。
そこまで確認できたら、次にGoogle Driveや別サーバーへの保存、世代数の調整、復元テストを追加していきましょう。







