あったこといろいろ

ほぼ自分用備忘録です。

batファイルを利用してMinecraftのログやバックアップを取る

目的

Minecraftのマルチプレイで、「ワールドデータを巻き戻したい!」と思うことが時々起こる
巻き戻すためのバックアップをとるには「world」のディレクトリをコピペすればよい。
が、手作業でやるのはめんどくさい

なので鯖を立てる度に自動でコピペ、ログ生成されるようにする


アプローチ

C言語から「system()」関数とか使ってコマンドラインいじれば良いかな?と思ったものの

  • わざわざそのためだけにコード書くのはアレ
  • ググったらbatファイルで簡単に出来そう

とのことでbatファイルをちょろっとお勉強することに


バックアップの方法

  • 「backup.bat」という名前のファイルを作成し、以下のように記述する。
  • 事前に「back」という名前のフォルダを、上記の「backup.bat」と同じ場所に作成しておく。
  • そうすれば「backup.bat」からサーバーを起動した場合、「年-月-日--時-分-秒」の形*1でワールドデータを「back」フォルダの中に保存し、かつ「list.log」というファイルにバックアップをとった日付&時刻を記すことができる
set name=%date:/=-%--%time::=-%
:変数nameに日付と時刻のデータを入れる

cp -rp world back/%name%
:backフォルダにワールドデータをコピーする

echo %date%--%time% backed up.>>back/list.log
:logファイルにバックアップをとった日付と時刻を書き込む

minecraft_server.1.7.5.jar
:サーバーを起動する

※「minecraft_server.1.7.5.jar」の1.7.5部分は、バージョンによって書き換える


覚えたこと

setコマンド

「set str=いろは」とすると、変数strに文字列"いろは"が格納されるっぽい

cpコマンド

「cp -rp A B]とすると、Aの階層以下のファイルが全てBにコピーされる

※rが以下のディレクトリを再帰的にコピー
 pが書き込み読み込み実行などの権限ごとコピー

echoコマンド

「echo Hello >> sample.txt」とすると、sample.txtに"Hello"と追加書き込みされる
「>>」を「>」に変えると上書きになる


おまけ

こんな風に記述したbatファイルをスタートアップにおいておけば、パソコンを起動した日付のログがとれて楽しそう

set name=%date%--%time% booted.

echo %name% >> ../date-time.log

さいごに

鯖立てる度にバックアップとるので、ワールドのデータサイズによってはかなり容量を使います。ちょくちょく消しましょう。

*1:2014年4月2日の12時34分56秒の場合 : 2014-04-02--12-34-56.00