minecraft_serverのサーバを変更する場合の手順です。
minecraft_serverを稼働させたけど、メモリ等が足りなくて動作が重いので新しいサーバに変更する際に「ワールドデータ等を引き継ぎたい」といった場合の参考になればと思います。
作業の流れ
作業の流れをざっくり説明すると下記のとおりで、ワールドデータの移行作業はとっても簡単です。
- 新サーバ側の環境構築
- 旧サーバのminecraft_server停止
- 旧サーバのデータをコピー
- 新サーバ側でminecraft_server起動
コピー対象データ
新サーバ上で「minecraft_server」がすでにインストールされている状態ならば、旧サーバからコピーするデータは以下のものとなります。
ワールドデータのみを移行したい場合
ワールドデータは設定変更を行っていなければ、「minecraft_server」がインストールされているディレクトリ内の「world」フォルダに保存されているので、そのディレクトリを新サーバにコピーすることでワールドデータを引き継ぐことが出来ます。
- worldディレクトリ
※「server.properties」でワールドデータの保存場所を変更している場合は、そのディレクトリをコピーする必要があります。
各種設定も移行したい場合
各種設定を行っている場合は、設定変更を行ったファイルを新サーバにコピーすることで設定を引き継ぐことができます。
- server.properties
- ops.json
- whitelist.json
- banned-ips.json
- banned-players.json
※設定変更を行っていないファイルについては移行する必要はありません。
データコピーの手順について
旧サーバからのデータコピーをする際の注意点としては、以下の点を注意するぐらいで問題ないと思います。
- minecraft_serverを停止してからデータをコピーする
- コピーしたデータの所有者・パーミッションを確認する
データコピーの方法等は色々と好みがあると思いますので、お好きな方法で行ってください。
私の作業手順
ここまでの説明だけではちょっと分かりずらいという方のために、普段私が行っている作業手順を説明させていただきますので、サーバを移行する際の参考になれば幸いです。
今回は、下記の2通りの手順について説明していきます。
- minecraft_serverインストールディレクトリを丸ごとコピーする方法
- データの一部「設定ファイル」「ワールドデータ」等のみをコピーする方法
作業環境
今回の作業手順は「CentOS7」で作成しています。
ディレクトリをまるごとコピー
こちらの方法は、新サーバに旧サーバの「minecraft_server」がインストールされたディレクトリを丸ごとコピーするといった内容となります。
これから新しくサーバを用意して、サーバの移行を行う際に良くやる方法です。
新サーバ側の環境構築
このサイトのインストール手順だと以下の項目を実施します。
※これは「minecraft_server.jar」がダウンロードされていない状態までということです。
- OSインストール
- OS設定
- javaインストール
- screenインストール
- wgetインストール
- minecraft用ユーザ作成
構築手順
このサイトで説明している具体的な手順は下記のページを参照願います。
※OSのインストールはさくらVPSを使った場合の手順となっていますので、それ以外の環境については適宜読み替えてください。
※ご自分のやり方で構築されている方は、この項目は読み飛ばしてください。
- OSインストール
- OS設定
- minecraft_serverインストール(minecraft_server実行ユーザの作成まで実施)
旧サーバ側での作業
作業は「minecraft_server」を実行するユーザで行っていきます。
minecraft_server停止
データのコピーを行う前に「minecraft_server」を停止させます。
これは、データコピー中にワールドデータの変更があると、データが壊れてしまいチャンクエラーが発生したりして、そのワールドデータが壊れてしまう恐れがあるからです。
停止方法は、「minecraft_server」が動作しているコンソール上から「stop」コマンドを実行するか、オペレータ権限をもったユーザで「minecraft」クライアントからログインして、「stop」コマンドを実行してください。
私のサイトの手順で構築されている方は、停止用のスクリプトを作成しているはずですので、それを実行することで停止させることが出来ます。
データのバックアップ
データコピー前に念のため、データのバックを取っておきます。
私の環境では「minecraft」というユーザで「minecraft_server」を動作させていますので、バックアップは、そのホームディレクトリ内に格納することにしました。
$ cp -Rp /opt/minecraft/ /home/minecraft/minecraft_yyyymmdd
バックアップ場所は任意の場所でかまいませんので、都合のよい場所に行ってください。
新サーバ側作業
ここからは、新サーバ側での作業となります。
作業は「root」ユーザで行っています。
新サーバへデータコピー
旧サーバ側では「/opt/minecraft」に「minecraft_server」をインストールしていましたので、新サーバ側でも同じ場所にデータをコピーします。(ディレクトリの場所は適宜環境に合わせて読み替えてください。)
今回はデータのコピーに「scp」を使用しています。
scp書式
scp -P [SSHポート番号] -p -r [ユーザ名]@[旧サーバアドレス]:[minecraft_serverインストールディレクトリ] [新サーバ側コピー先ディレクトリ]
※「scp」コマンドの詳しい説明はこちらのページで確認できます。
実際の作業例
新サーバ側から、旧サーバ側に「minecraft」ユーザで接続し、「minecraft_server」がインストールされているディレクトリである「/opt/minecraft」を、新サーバの「/opt」ディレクトリにコピーしています。
# scp -P 10022 -p -r minecraft@xxx.xxx.xxx.xxx:/opt/minecraft /opt minecraft@xxx.xxx.xxx.xxx's password:
※「xxx.xxx.xxx.xxx」部分は旧サーバのIPアドレスです。
所有者変更
rootユーザでデータをコピーしてきたので、データの所有者とグループが「root」になっていますので、「minecraft_server」を実行するユーザに変更します。
所有者情報の確認
# ls -l /opt 合計 4 drwxr-xr-x 6 root root 4096 2月 18 23:48 minecraft
ユーザ・グループの変更
私の環境では「minecraft」ユーザで動作させるために、データの所有者とグループを「minecraft」に変更しています。
別ユーザで「minecraft_server」を動作させている場合は、適宜読み替えてください。
# chown -R minecraft:minecraft /opt/minecraft/
minecraft_server起動
ここからは「minecraft」(minecraft_server動作用ユーザ)ユーザで作業を行っていきます。
minecraftユーザに変更
# su - minecraft
minecraft_server起動
旧サーバから「minecraft_server」の実行ファイルを含むフォルダを丸ごとコピーしているので、旧サーバ側で行っていた方法で「minecraft_server」の起動を行ってください。
動作確認
新サーバ側で「minecraft_server」の起動が完了しましたら、「minecraftクライアント」から新サーバにアクセスしワールドデータ等が引き継がれているか確認してみてください。
minecraft_server自動起動設定
無事にワールドデータ等が引き継がれている事が確認できましたら、次に自動起動の設定を行っていきます。
自動起動の設定は、旧サーバで行っていると思うので同様に設定してください。
CentOS7での設定例
ここでは、このサイトで説明している手順で「minecraft_server」をインストールした方のために「CentOS7」での「minecraft_server」自動起動設定の手順を簡単にさせていただきます。
自動起動設定を行うにあたり、「minecraf_server」の起動スクリプト(mc_start.sh)と停止スクリプト(mc_stop.sh)が「minecraft_server」インストールディレクトリにあることを確認してください。
※旧サーバで、起動・停止スクリプトをインスト―ルディレクトリ以外に置いていた方は、そのスクリプトも新サーバにコピーしてきてください。
rootユーザへ変更
自動起動設定の作業は「root」ユーザで行っていきます。
$ su -
自動起動用設定ファイル作成
「CentOS7」用の自動起動設定用のファイルを作成していきます。
# vi /etc/systemd/system/minecraft.service
ファイル内容
下記項目の「User」は「minecraft_server」を実行させるユーザとなりますので、「minecraft」ユーザ以外で実行させのでしたら適宜書き換えてください。
また、「ExecStart」は起動「ExecStop」は停止スクリプトとなりますので、これらのスクリプトの設置場所が異なる場合は、適宜書き換えてください。
[shell]
[Unit]
Description=Minecraft Server
After=network.target local-fs.target
[Service]
Type=forking
User=minecraft
ExecStart=/opt/minecraft/mc_start.sh
ExecStop=/opt/minecraft/mc_stop.sh
[Install]
WantedBy=multi-user.target
[/shell]
自動起動設定
「systemctl」コマンドを使用して、自動起動設定を行います。
# systemctl enable minecraft
サーバ再起動
最後にサーバの再起動を行って、正常に自動起動されるのかも確認してください。
# reboot
サーバ再起動後も「minecraft_server」が自動的に起動してくることが確認できましたら、作業の方は完了となります。
一部データのみをコピーする方法
こちらの方法は、新サーバ側ですでに「minecraft_server」が実行できる環境(自動起動設定含む)が整っている場合に行う方法となります。
作業内容としましては、設定ファイルとワールドデータが保存されている「world」ディレクトリを新サーバにコピーするという形になります。
作業手順
ざっくりと説明すると、作業手順は以下の通りとなります。
- 旧サーバのminecraft_server停止
- 新サーバのminecraft_server停止
- 旧サーバのデータをコピー
- 新サーバ側でminecraft_server起動
旧サーバ側作業
minecraft_server停止
データのコピーを行う前に「minecraft_server」を停止させます。
データバックアップ
念のため、データのバックアップを取っておきます。
$ cp -Rp /opt/minecraft/ /home/minecraft/minecraft_yyyymmdd
新サーバ側作業
minecraft_server停止
新サーバ側の「minecraft_server」が起動しているのならば停止させます。
停止が完了しましたら、念のためバックアップをとっておきましょう。
バックアップ
$ cp -Rp /opt/minecraft/ /home/minecraft/minecraft_yyyymmdd
データコピー
新サーバ側から、旧サーバのデータをコピーしてきます。
今回はデータのコピーに「scp」を使用しています。
scp書式
「world」ディレクトリをコピーする際には、「-r」オプションの指定が必要になります。
scp -P [SSHポート番号] -p [-r] [ユーザ名]@[旧サーバアドレス]:[コピー対象データ] [新サーバ側コピー先ディレクトリ]
※「scp」コマンドの詳しい説明はこちらのページで確認できます。
コピー対象データ
ワールドデータ
- 「world」ディレクトリ
ワールドデータは「server.properties」の「level-name」で変更していない限り、「minecraft_server」がインストールされているディレクトリ内の「world」ディレクトリに保存されています。
ですので、このディレクトリを新サーバにコピーするだけで、ワールドデータの移行ができます。
設定ファイル
旧サーバで設定変更を行っている場合は、必要なファイルも適宜コピーしてください。
server.properties | サーバ環境設定ファイル |
ops.json | オペレーション権限ユーザ情報 |
whitelist.json | ホワイトリスト |
banned-ips.json | ログイン禁止IP設定 |
banned-players.json | ログイン禁止ユーザ設定 |
usercache.json | ユーザのログイン情報 |
※「usercache.json」については、お好みで
起動・停止スクリプトと自動起動設定ファイル
ファイルを一部だけコピーする方法の前提が、「minecraft_server」が起動できる環境が構築されていることなので、すでに設定は終わっているかもしれませんが、このサイトの手順で「minecraft_server」をインストールしている方は起動・停止スクリプトと自動起動設定用のファイルもコピーしてください。
- 起動スクリプト mc_start.sh
- 停止スクリプト mc_stop.sh
- 自動起動設定ファイル /etc/systemd/system/minecraft.service
コピーが終わったら、自動起動の設定を忘れずに行ってください。
所有者変更
rootユーザでコピーしたので、データの所有者とグループが「root」になっています。
ですので、コピーしてきたデータの所有者とグループを「minecraft_server」を実行するユーザに変更する必要があります。
「world」ディレクトリを変更する場合は、「-R」オプションを指定してしてください。
# chown -R minecraft:minecraft /opt/minecraft/world # chown minecraft:minecraft /opt/minecraft/設定ファイル名
※別ユーザで動作させている場合は、適宜読み替えてください。
設定ファイルを一個づつ指定するのが面倒ならば、下記のように「-R」オプションをつけて、インストールディレクトリを指定する方法もあります。
# chown -R minecraft:minecraft /opt/minecraft
minecraft_server起動
データのコピーが完了しましたら、「minecraft_server」を起動し動作確認を行っていきます。
minecraftユーザに変更
ここからの作業は、「minecraft_server」を動作させるユーザ作業を行います。
# su - minecraft
「minecraft」ユーザ以外で動作させている場合は適宜読み替えてください。
minecraf_server起動
旧サーバで行っていた方法で、「minecraft_server」を起動してください。
動作確認
「minecraft_server」の起動が完了しましたら、「minecraftクライアント」から新サーバにアクセスし、ワールドデータ等が引き継がれているか確認してみてください。
サーバ再起動
最後にサーバの再起動を行って、「minecraft_server」が起動されるかの確認を行ってください。
無事「minecraft_server」の起動が確認できれば、作業は完了となります。
コメント
この方法で移行した場合、今までの各プレイヤーの所持品、経験値などは引き継がれますか?それともワールド内に建築した建物だけ引き継がれるのですか?
Misky さん
コメントありがとうございます。
今すぐに検証できる環境がないので、実際に確認はできていませんが、
ディレクトリを丸ごとコピーする方法であれば、持ち物や経験値も引き継がれたはずですよ。