MCScriptsの仕様を読み解いていた(統合版の話のみ)

はじめに

概要

マインクラフト統合版サーバーの自動バックアップ、アップデート、サービス化してsystemctlで扱えるようにするなど便利なスクリプトを集めたMCScriptsというものがあったのでこれを紹介する。

リポジトリ:https://github.com/TapeWerm/MCscripts

※なお、プログラム言語のMCScript(sなし)とは関係ない。また、MCscriptsはJava版でも動くがJava版用スクリプトの話はしない。Java版で使う場合は自力でリンク先のReadme.mdを読んでほしい。

systemd動かないDocker、WSL環境では動作しない。

とても基本的な使い方

READMEに従ってインストールが終わった後は

統合版サーバーの起動・停止・・・systemctl start / stop mcbe@MCBE

詳細な使用方法はリポジトリのREADME見るよろし

MCScriptsの構造

MCscriptsはsystemd unitファイルと、.shファイルを含んでいる。

各ユニットがどのスクリプトを呼び出すか調べた(mcbeとついているものが統合版サーバー用。mcとついているのがJava版サーバー用)。

  • mc-backup@.service→MCbackup.sh
  • mc-rmbackup@.service→(なし)
  • mc@.service→MCstop.sh
  • mcbe-autoupdate@.service→MCBEautoUpdate.sh→MCBEUpdate.sh
  • mcbe-backup@.service→MCBEbackup.sh
  • mcbe-getzip.service→MCBEgetZIP.sh
  • mcbe-log@.service→MCBElog.sh
  • mcbe-rmbackup@.service→(なし)
  • mcbe@.service→MCstop.sh

各スクリプトについて

mcbe@.service

マインクラフトサーバーをsystemctlで管理できるようにするためのサービス。サーバー起動自体はマインクラフト公式に書かれている

LD_LIBRARY_PATH=. ./bedrock_server

を実行しているだけのようだ。

なお、@以下に引数を入れることで複数のサーバー起動にも対応するが、一つのサーバーディレクトリしかないのに複数のサーバーを動かすことはもちろんできない。複数動かすには、インストール手順の中の

sudo ~mc/MCBEautoUpdate.sh ~mc/bedrock/MCBE

などを引数のディレクトリを変えて実行し、対応するディレクトリにサーバーをインストールしてから実行する必要がある(詳細は以下読んでください)。

systemdの@の意味についてはこういうサイトなどを参照

公式のインストール方法通りにMCscriptsをインストールした場合、mcbe@MCBE.serviceというように、UnitにMCBEという変数を渡すので、

  • /opt/MC/・・・mcユーザーのホームディレクトリ。MCscriptsのスクリプト群がインストールされ、サーバーのzipファイルがダウンロードされている。
  • /opt/MC/bedrock・・・ここ以下に各サーバーのディレクトリとバックアップファイルが保存される
  • /opt/MC/bedrock/MCBE/・・・mcbe@MCBE.service用のサーバーファイル
  • /opt/MC/bedrock/MCBE_Backup/・・・mcbe@MCBE.serviceのサーバーファイルのバックアップフォルダ

という配置になる。@以下に他の文字列を指定すると、/opt/MC/bedrock/以下に対応するディレクトリが増える。

なお、mcbe@.socketから呼び出されて起動・・・のような動作かと思いきや、手元で試した限りはmcbe@.serviceのみの起動・停止で問題なかった。.socketの役割がよくわからない。

mcbe-getzip.serviceとMCBEgetZIP.sh

定期的に統合版サーバーのアップデートを確認してダウンロードしてくれるサービスとスクリプト。展開などは以下のautoupdateで行われる。同名の.timerで定期実行される。

mcbe-getzip.service自体はoneshotタイプのサービスなので、処理が終わると即座に停止する。

mcbe-autoupdate@.serviceとMCBEautoUpdate.sh

定期的に統合版サーバーをアップデートするサービスとスクリプト。マインクラフトはサーバーとクライアントのバージョンがあっていないと遊ぶことができないため重要なサービス。クライアント版のアプデは頻繁にいつの間にか来ていることが多い。

mcbe-autoupdate@.serviceの設定には

WantedBy=mcbe-getzip.service

とあるので、mcbe-getzip.serviceが起動すると同時に動くらしい。

なお、MEADMEの中のインストール手順にはフォルダを引数にしてMCBEautoUpdate.shを実行する手順がある。この場合、/opt/MC/のサーバーのzipファイルを展開してMCBE以下にマインクラフトサーバーを展開する(サーバーのインストールが実行される)。既にMCBE以下に存在する場合はalready existsなるエラーが出る。

mcbe-backup@.serviceとMCBEbackup.sh

定期バックアップするサービスとスクリプト。mcbe-backup@.timerで起動する(午前4時)。

/opt/MC/bedrock/MCBE_Backup/のように@以下に対応した場所にバックアップされる。なおバックアップされるのは、

~mc/bedrock/MCBE/worlds/Bedrock\ level/

のディレクトリの中身全部である。

DisableServices.sh

MCscriptのunitをdisable, stopし、MCscriptのスクリプトとunitすべて削除する。要するにアンインストーラー。なお、

  • /opt/MC/bedrock/MCBE/
  • /opt/MC/bedrock/MCBE_Backup/

以下のファイルは削除されなかった。

コメント

タイトルとURLをコピーしました