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に文字列"いろは"が格納されるっぽい
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