MotionBoardのバックアップを自動化する

#最初に
私はMotionBoardのオンプレを使用しています。
クラウドと違い「バックアップ」のことを考えなければなりません。
マニュアルを見たときに、サービスを止めずにバックアップを取る方法というのがなかったので、長年手を打たずに過ごしてきました。
しかし、MotionBoardの社内ニーズが高まるにつれて「消えたらどうする」というアクシデントに対応できるようにしなければと思い行動に移しました。

#この記事を読んでほしい人
・MotionBoardオンプレ版を使用している人
・バックアップ自動化に着手していない人
・MotionBoardの管理者だけどバッチファイルがよくわからない人

#サイレントバックアップというらしい
MotionBoardのサービスを停止させずにバックアップをとることを「サイレントバックアップ」と言います。今回の内容はこのサイレントバックアップになります。
サイレントバックアップで保存されるファイルは以下の通りです。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/fc6edd28-fb4d-65fe-3ce6-ae2e9d98bda3.jpeg "MotionBoard保存フォルダ")

私の環境はMotionBoardサーバーCドライブ直下にMotionBoard6.1がインストールされています。
その中にある「custom」「data」フォルダがサイレントバックアップで保存されます。
それぞれのファイルは

**custom**:**初期状態では存在しないので新規作成して作ります**
　　　 MotionBoardに登録したサーバープログラムなどが保存されている
**data**:MotionBoardで使用される全てのデータが保存されている**最重要フォルダ**
**geocoding**:GEOコーディングに関するデータが保存されている
**map**:GEOアイテムで利用する地図データが保存されている
**runtime**:ログファイルなどが保存されている
**system**:MotionBoardのサービスを起動するために必要なものが保存されている

#サイレントバックアップを作成する
###全体の処理の流れ
全体のフロー図は以下の通りです。
![バックアップフロー図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/65b065f5-f193-a2b6-4fd5-2b347758cd14.jpeg "バックアップフロー図")
それぞれのファイルは

**mbbk_input.txt**:バックアップ先のフォルダー、ファイル名を指定する
**mb_silentbackup.cmd**:サイレントバックアップを指示するコマンドファイル
**mb_silentout.txt**:バックアップの処理状況を記すファイル

それではサイレントバックアップを作成していきます。

###①バックアップファイルを保存するフォルダを作成する
元々手動でバックアップを行っていましたので、その保存先となるフォルダの中にサイレントバックアップフォルダを作成しました。

C:\Users\Administrator\Desktop\backup\silentbackup

デスクトップにしていたのですが、この**バックアップフォルダは任意の場所で大丈夫です。**

###②customフォルダを作る
私の場合、MotionBoardがCドライブの直下に保存されています。
![customフォルダ以下構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/129b0a05-1e0a-0ec0-7f6d-1e5c983700aa.jpeg "カスタムフォルダ以下構成")
もともとcustomフォルダが存在しない状態でしたので、フォルダの新規作成で**「custom」フォルダを作ります。また、customフォルダ内に「bin」フォルダも新規作成**して下さい。
このbinフォルダ内にmbbk_input.txtとmb.silentbackup.cmdフォルダを保存する形になります。

###③mbbk_input.txtを作る
メモ帳やワードパットを使用して作ります。

```mbbk_input.txt
backup exportpath=C:\Users\Administrator\Desktop\backup\silentbackup\mb_silentbackup.zip
logout
exit
```

backup exportpath=バックアップを保存するフォルダパス\バックアップファイル名.zip
にてバックアップファイルの保存先とファイル名を指定します。
バックアップフォルダが
C:\Users\Administrator\Desktop\backup\silentbackup
そのフォルダの中にバックアップファイルmb_silentbackup.zipという名前で保存してねという指示を記述するのがmbbk_input.txtとなります。
バックアップファイル名は任意ですが、**必ず○○.zipで指定してください。**
完成したmbbk_input.txtは②でお伝えした「custom」－「bin」フォルダ内に保存して下さい。

###④mb_silentbackup.cmdを作る
メモ帳やワードパットを使用して作ります。

```mb_silentbackup.cmd
@echo off
@rem モーションボードサイレントバックアップ
@rem mb_silentbackup.cmd

@rem 変数「JAVAEXE」に、Javaが格納されている場所のパスを設定
@set JAVAEXE="C:\MotionBoard61\system\jre\bin\java.exe"

@rem 変数「MBCMDJAR」に、コマンドラインツールが格納されている場所のパスを設定
@set MBCMDJAR="C:\MotionBoard61\system\tools\mbcmd.jar"

@rem 変数「HOST」と「PORT」にホスト名とポート番号をそれぞれ設定
@set HOST=モーションボードサーバーのIPもしくはサーバー名
@set PORT=9797

@rem 変数「USERID」と「PASSWD」にログインするユーザーとパスワードをそれぞれ設定
@set USERID=administratorのID
@set PASSWD=administratorのパスワード

@rem 変数「OUTFILE」にmb_out.txt(処理状況の出力ファイル)の格納先を設定
@set OUTFILE=C:\Users\Administrator\Desktop\backup\silentbackup\mb_silentout.txt

@rem 変数「INPUTFILE」にmbbk_input.txt(読み込みファイル)の格納先を設定
@set INPUTFILE=C:\MotionBoard61\custom\bin\mbbk_input.txt

@echo バックアップ中です。

%JAVAEXE% -jar %MBCMDJAR% -host %HOST% -port %PORT% -user %USERID% -pass %PASSWD% -output %OUTFILE% -input %INPUTFILE%

@echo 終了しました。

@echo on
```
ちなみにバッチファイルの各種コマンドの意味ですが
@echoは実行されたコマンドがプロンプトなどに表示されるというものですが、@echo offにすることで表示されないようにします。
@rem はコメントですよ～　という宣言です。
@set は変数に値をセットします。

@setの中でJAVAEXEという変数に"C:\MotionBoard61\system\jre\bin\java.exe"をセットしています。これは、モーションボードのインストールフォルダの[system]-[jre]-[bin]フォルダ内のjava.exeという実行ファイルをセットするという意味になります。java.exeの保存先はなにもいじっていなければ上記の通りなはずです。
MBCMDJARの部分も同様の考え方です。それぞれ、java.exeとmbcmd.jarの場所を確認した上で記述していただければと思います。

@set PORT=9797は基本このままでよいかと思います。

@set USERIDはアドミンIDを使うのがベターな気がします。
初期状態から変更していなければadmin@localでPASSWDも変更していなければ初期のものになっているはずです。

@set OUTFILEで処理状況の出力ファイルの格納先を設定します。バックアップフォルダはC:\Users\Administrator\Desktop\backup\silentbackupとしていますので、silentbackupフォルダ内にmb_silentout.txtという出力ファイルを作りますという記述です。

@set INPUTFILEは③で作成したmbbk_input.txtの場所とファイル名を指定します。

%JAVAEXE% -jar %MBCMDJAR% -host %HOST% -port %PORT% -user %USERID% -pass %PASSWD% -output %OUTFILE% -input %INPUTFILE%

の記述もしっかりとcmdファイルに記述します。

完成したmb_silentbackup.cmdは②でお伝えした「custom」－「bin」フォルダ内に保存して下さい。

###⑤MotionBoard側サーバープログラムを設定する
MotionBoardにログインして、メニューバーの[管理]-[システム設定]-[全般]-[プログラム]を選択します。
![サーバープログラム.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/8c9a86b6-0f5c-6af0-c7a8-fd59ab7c50f8.jpeg "サーバープログラム")

サーバープログラムの[新規作成]ボタンをクリックします。
![サーバープログラム新規作成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/7ffd491e-90ba-f57e-ceb4-e2f15979dfd9.jpeg "サーバープログラム新規作成")

するとサーバープログラム設定画面が表示されます。
![サーバープログラム設定.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/2817a7f0-b964-8ceb-ef79-7a2bdc6adf56.jpeg "サーバープログラム設定")

・サーバープログラム名:任意です
・コメント:任意です。
・実行ファイル
　①で作った「custom」-「bin」フォルダ内に保存されているファイルが表示されますので、③で作成したmb_silentbackup.cmdを選択してOKボタンをクリックします。
※「custom」-「bin」フォルダを作成していないもしくは見当たらない場合は、選択のところに/cosutom/binと表示されています。
・排他制御:バックアップ処理が同時に実行されないように[排他制御]欄のチェックをオンにします。

任意のスケジュールを設定したのち[追加]ボタンをクリックすればOKです。
![スケジュールと追加.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/8f46713b-bdaf-e0cd-c568-5ceef74b724c.jpeg "スケジュールと追加")

###⑥動作確認
追加が無事に終わりましたら動作確認を行います。
上図の[実行確認]ボタンをクリックすると確認ダイアログが表示されますので[OK]を選択します。するとサイレントバックアッププログラムが動作します。

サイレントバックアップがされているかどうかの確認は、サーバーで指定したバックアップフォルダを見ます。私の場合はC:\Users\Administrator\Desktop\backup\silentbackupでした。
この中のmb_silentout.txtの中身を確認します。
![実行確認結果を見る.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635610/f824986e-2cdc-9653-23f7-7335a9064283.jpeg "実行確認結果を見る")

**Successfully back up**

という結果が出力されていれば成功ですし、サイレントバックアップファイルmb_silentbackup.zipが作成されていれば間違いありません。

#最後に
MotionBoardオンプレ版のバックアップ自動化の方法をお伝えしました。
私自身、SQLは記述できるけどバッチファイルは出来ない…という方ももしかしたらいるかもしれません。また、ボード作成者であるが管理者はベンダーさんなんてこともあるかもしれません。
そんな方のちょっとしたお手伝いができれば幸いです。