マインクラフトサーバーのバックアップ方法 -さくらのVPS編-

いしけん

で公開マイクラサーバーを作ってきました。
次にお話したいのはバックアップ方法です

公開サーバーにすると「どんな人でも」入ってきますからね…
何か起きたときの備えをしておきたい所です。

いしけん

家は火事になり、地面は爆破で穴だらけ
がんばって立てた巨大な城は溶岩のカーテンに覆われ炎上…。
懐かしい思い出です。

目次

バックアップとは

ゲームではセーブが大事ですよね。大事なシーンの前でセーブし、何かあったらロードする。

バックアップとはセーブです。マインクラフトのワールドを特定の地点で保存できます。
保存したワールドはバックアップ時点まで巻き戻す(ロードする)ことが出来ます。
ただしワールドだけでなく、自分の持っているアイテムも巻き戻るので注意が必要です。

備えあれば憂いなし


公開マイクラサーバーは色々な人が来ます。まして素のまま(バニラ)のマインクラフトサーバーを公開しているわけです。
そうなると、いわゆる「荒らし」も来るかもしれません。
ただ、2022年時点ではJavaも統合版でも永久BAN制度はあるので、
以前より「荒らし」のリスクが高まっているので減った…かもしれませんけども油断はできませんね。

「荒らし」はだいたい建物を爆破で壊すか、溶岩を流して火事にするワンパターンな人たちが多いです。
実はその為に、Spigot等のサーバーではこれらのアイテムを制御することが可能です。
ただ、今回のマイクラ公開サーバーはこういった制御ができません。

せめてバックアップは自動で動かしておいて、何か起こっても平和な世界に戻せるようにしておきましょう。

バックアップスクリプト紹介

ここからはさくらインターネットにログインしてコンソールを使って操作を進めます。
コンソールは前回お話したやり方もよいのですが、
実はこういったサーバーに入るための専用ツールが世の中にはあります。
TeraTermなどが日本では有名ですが、私はRLoginを使っています。この話はまたいずれ…

フォルダまるごと毎日1回バックアップ

今回ご紹介するのはフォルダ丸ごと毎日1回バックアップするスクリプトです。
以前、どこかで紹介されていたスクリプトを長年の運用を得て色々改造と調整をしました。
ここではサーバーの操作も併せて、バックアップスクリプト設置方法をみていきたいと思います。

ubuntu@xxx-xxx-xxxx:~$ cd /home/ubuntu/
ubuntu@xxx-xxx-xxxx:~$ mkdir /home/ubuntu/mc_backup
ubuntu@xxx-xxx-xxxx:~$ ls
mc_backup
ubuntu@xxx-xxx-xxxx:~$ vi mc_backup_full.sh

#!/bin/bash
 
SERVICE='minecraft_server.jar'
USERNAME='ubuntu'
SCNAME='minecraft'
MC_PATH='/opt/minecraft'
BK_PATH='/home/ubuntu/mc_backup'
 
BK_TIME=`date +%Y%m%d-%H%M%S`
BK_NAME="$BK_PATH/mc_backup_full_${BK_TIME}.tar.gz"
BK_GEN="5"
 
XMX="1024M"
XMS="1024M"
 
cd $MC_PATH
 
ME=`whoami`
 
#  if pgrep -u $USERNAME -f $SERVICE > /dev/null
#    then
      echo "Full backup start minecraft data..."
      screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map..."\015'
      sleep 10
      screen -p 0 -S $SCNAME -X eval 'stuff "save-all"\015'
      screen -p 0 -S $SCNAME -X eval 'stuff "stop"\015'
      echo "Stopped minecraft_server"
      echo "Full Backup start ..."
      tar cfvz $BK_NAME $MC_PATH
      sleep 10
      echo "Full Backup compleate!"
      find $BK_PATH -name "mc_backup_full*.tar.gz" -type f -mtime +$BK_GEN -exec rm {} \;
      echo "Starting $SERVICE..."
      screen -AmdS $SCNAME java -Xmx$XMX -Xms$XMS -jar $SERVICE nogui
#    else
#      echo "$SERVICE was not runnning."
#  fi

まずはバックアップフォルダを作って確認し、その後バックアップスクリプトを作っています。
このスクリプトはいったんサーバーを停止し、5日分バックアップを残すスクリプトになります。

マインクラフトのサーバーはネザーやエンドが別のファイルとして扱われるため、
フォルダ毎バックアップを行った方がよいでしょう。では試しにバックアップを実行します。

ubuntu@xxx-xxx-xxxx:~$ /bin/sh mc_backup_full.sh
Full backup start minecraft data...
<バックアップファイル名が出てきます>
Full Backup compleate!
Starting minecraft_server.jar...

ubuntu@xxx-xxx-xxxx:~$ cd mc_backup
ubuntu@xxx-xxx-xxxx:~/mc_backup$ ls
mc_backup_full_20221112-164002.tar.gz

/bin/sh バックアップスクリプト名でバックアップを実行します。
最後の行でバックアップができていますね!

復元方法

次に復元方法をご紹介します。さて、復元したことを確かめるために…

たまたまクリーパーがいた…
いしけん

せっかく立てた拠点が…豆腐にしないよう工夫したのに

では、引き続きコマンドで操作していきます。まずはサーバーをいったん止めます。

ubuntu@xxx-xxx-xxxx:~$ sudo systemctl stop minecraft.service

sudoは初回実行時に管理者パスワードを聞かれるのでお間違いなく。
では、復元の手続きを進めていきます。

ubuntu@xxx-xxx-xxxx:~$ cd /home/ubuntu/mc_backup
ubuntu@xxx-xxx-xxxx:~/mc_backup$ ls
mc_backup_full_20221112-164002.tar.gz

ubuntu@xxx-xxx-xxxx:~/mc_backup$ tar xvzf mc_backup_full_20221112-164002.tar.gz 
ubuntu@xxx-xxx-xxxx:~/mc_backup$  ls
mc_backup_full_20221112-164002.tar.gz  opt
ubuntu@xxx-xxx-xxxx:~/mc_backup$ sudo mv /opt/minecraft/ /opt/minecraft_bk/
ubuntu@xxx-xxx-xxxx:~/mc_backup$ sudo mv ./opt/minecraft/ /opt/
ubuntu@xxx-xxx-xxxx:~/mc_backup$ ls /opt/
minecraft  minecraft_bk

まずバックアップを取ったフォルダに移動します。その後ファイルを解凍し「opt」フォルダがあることを確認。
続いて元々の/opt/minecraftフォルダを別フォルダ名に移動します。
最後に、バックアップのminecraftフォルダを/optに移動して復元が完了します。
ではサーバーを起動します。

ubuntu@xxx-xxx-xxxx:~$ sudo systemctl start minecraft.service
ubuntu@xxx-xxx-xxxx:~/mc_backup$ screen -ls 
There is a screen on:
        73137.minecraft (11/12/22 16:47:16)     (Detached)
1 Socket in /run/screen/S-ubuntu.
ubuntu@xxx-xxx-xxxx: screen -r 73137.minecraft
クリーパーと共にもどってますね!
いしけん

これで何か起きても、対応できますね!

自動定期実行

先ほどは手動でバックアップコマンドを実行しました。これを自動で定期的に実行しましょう。
朝の4時30に1回バックアップを行うには以下のコマンド操作になります。

ubuntu@xxx-xxx-xxxx:~/mc_backup$ crontab -e
no crontab for ubuntu - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2

最後の行にに追加する→30 4 * * * /bin/bash /home/ubuntu/mc_backup_full.sh

ubuntu@xxx-xxx-xxxx:~/mc_backup$ crontab -l
~
# m h  dom mon dow   command
30 4 * * * /bin/bash /home/ubuntu/mc_backup_full.sh

crontab -eというのが定期実行のコマンドを編集するコマンドです。
初回起動時にエディターの種類選択画面がでたのでこれも掲載します。

いしけん

いしけんは「VI」がすきなので2番です

最後の行にバックアップスクリプトを実行するコマンドを記載します

30 4 * * * /bin/bash /home/ubuntu/mc_backup_full.sh

crontab -l で登録を確認できたら成功です。翌日バックアップフォルダを確認しましょう。

公開サーバーの基本はこれでOK!

これで公開サーバーのバックアップ手続きが完了です。お疲れ様でした。
バックアップがあればバニラサーバーでも安心して遊べますね。

課題は管理方法

とはいえ、溶岩バケツは使えますし火事の被害範囲は特に制限がありません。
何か起きたら復元できるとはいえちょっと手間ですよね…

いしけん

もうちょっと色々ルールを作れないかなぁ

そう思って、イシケンはSpigotを見つけました。Spigot環境でマイクラ公開サーバーを作ると
アイテムの制御はもちろんのこと、宝箱に鍵をつける事もできます。
Spigotはそれ以外にも様々なプラグインでマイクラをもっと楽しくしてくれます。

今後色々ご紹介しますのでお楽しみに!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

いしけんのアバター いしけん ゲーマーエンジニア

マイクラ、IT技術、ゲーム全般が好きなエンジニアです。
フリーランスエンジニアとして活動中。

コメント

コメントする

目次