2026.05.08

サーバーの設定

【マイクラ】サーバーバックアップを自動化する方法!cron・プラグイン・Windows対応

マイクラサーバーのバックアップを自動化する方法を示すサムネイル

マイクラサーバーのバックアップは、手動で取るだけでもかなり安心です。

ただ、毎日続けるとなると話が変わります。

  • 昨日バックアップしたか覚えていない
  • 荒らしに気づいた時点で、壊れた状態しか残っていない
  • VPSの中に置いたバックアップごと消えた
  • 自動バックアップはあるけど、復元したことがない

このあたりで詰まる人は多いです。

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

必要なデータが入っていて、古い世代も残っていて、いざという時に戻せる形まで作っておきたいところです。

この記事では、マイクラサーバーのバックアップを自動化する具体的な方法をまとめます。

Linuxなら cron、Windowsならタスクスケジューラ、PaperやSpigotならバックアッププラグイン、統合版ならBedrock Dedicated Serverの注意点まで扱います。

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
補足

初心者なら、まずは「サーバーを一度止めてからバックアップする方法」を選んでください。 稼働中バックアップは便利ですが、保存停止と再開の扱いを間違えると復元時に困ります。

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

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

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

Java版で保存するもの

Java版は、サーバーソフトによってワールドフォルダの分かれ方が変わります。

サーバー保存対象
バニラworldserver.properties
Paper・Spigotworldworld_netherworld_the_endserver.propertiesplugins
プラグイン運用上記に加えて ops.jsonwhitelist.jsonbanned-players.json

PaperやSpigotでは、ネザーとエンドが world_netherworld_the_end として分かれる場合があります。

world だけ保存していると、通常世界だけ戻ってネザーやエンドが抜けます。

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

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

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

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

マイクラサーバーのserver.propertiesガイド!設定21個を解説

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

マイクラサーバーソフトの比較ガイド。Vanilla・Paper・Fabricの特徴をまとめたイメージ

【初心者向け】マイクラサーバーソフトの選び方!Vanilla・Paper・Fabricを徹底比較

統合版で保存するもの

統合版サーバーでは、基本的に 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_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

この場合は、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
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_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
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_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ワールドファイルへの書き込みを再開する

流れだけ書くと、次の通りです。

  1. save-all flush を実行する
  2. save-off を実行する
  3. ワールドと設定ファイルをコピーする
  4. 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を作ります。

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

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

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の基本手順

大まかな流れは次の通りです。

  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 に含まれているかを見ます。

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

  • world
  • world_nether
  • world_the_end
  • plugins
  • server.properties
  • ops.json
  • whitelist.json
  • banned-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_netherworld_the_end も入っているか
  • plugins フォルダ内の設定も含まれているか
  • 古いバックアップが自動削除されるか
  • クラウド保存に失敗していないか
  • 手動で復元できるか

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

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

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

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

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

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

サービスによって、保存期間や世代数に制限が付いています。

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

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

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

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

マイクラ向けレンタルサーバーの選び方を表すサーバーアイコン。ConoHaとXServer GAMEsの比較ガイド

【初心者向け】マイクラにおすすめのレンタルサーバー2社を徹底比較

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

統合版の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の中だけに保存していると、ディスク故障や誤削除に弱いです。

短期復元には便利ですが、バックアップとしてはもう一段足りません。

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

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

PaperやSpigotでは、world_netherworld_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はバックアッププラグインも候補にする
  • 統合版は worldssave hold 系の違いに注意する
  • 最低7世代を残し、サーバー外にも保存する
  • 月1回は復元テストをする

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

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

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

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

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

プロフィール詳細 →