EclipseをRAMディスク上で動かして開発する
5Gbyteという無駄に巨大なRAMディスクを作成してしまったので、その上でEclipseによる開発もしてみようと考えた。Eclipseそのもののイメージはもちろん、ワークスペースもRAMディスク上(ここではRドライブとする)に置く。
まずEclipseをダウンロード。展開したフォルダを丸っとRAMディスク上(ここではR:\eclipseとする)に置く。
次に上記Eclipseフォルダ中のeclipse.exeを起動。
ワークスペースを聞かれるのでRAMディスク上(ここではR:\workspace)に作成する。
お〜。かなり起動が速くなったo(^o^)o
このままだとOS終了時にRAMディスク内容も失われてしまうので、ハードディスクと定期的に同期を取る様にしよう。Windows7には標準でrobocopyというコマンドがあるのでそれを使用する。
簡易な使用法 :: ROBOCOPY コピー元 コピー先 /MIR コピー元 :: コピー元ディレクトリ (ドライブ:\パスまたは \\サーバー \共有\パス)。 コピー先 :: コピー先ディレクトリ (ドライブ:\パスまたは \\サーバー \\共有\パス)。 /MIR :: 完全なディレクトリ ツリーをミラー化します。
robocopyを使うことで、コピー元とコピー先の差異のみをコピーすることができる。
また、/MON、/MOTオプションを利用することで定期実行することも。
/MON:n :: コピー元を監視し、n 回を超える変更があった場合に再度実行します。 /MOT:m :: コピー元を監視し、変更があった場合 m 分間再度実行します。
以下、eclipseフォルダ退避バッチファイル書いてみた
@echo off rem === 変数の設定 === set name=eclipse set ramdir=R:\%name% set backupdir=C:\xxx\rd-backup set latestmemo=%backupdir%\%name%.latest.txt rem === 既にレストア済の場合、またはバックアップが存在しない場合はレストアしない === if exist %ramdir% goto do_backup if not exist %latestmemo% goto do_backup :do_restore echo === レストア === for /F "delims=" %%f in (%latestmemo%) do @set latest=%%f echo restoring from backup ... %latest% robocopy "%backupdir%\%latest%" %ramdir% /MIR /NS /NC /NFL /NDL /NP /Z /TBD :do_backup echo === 1分間隔でバックアップ === rem バックアップフォルダ名(日時文字列含む)を作成 set time2=%time: =0% set datetime=%date:~-10,4%%date:~-5,2%%date:~-2,2%%time2:~0,2%%time2:~3,2%%time2:~6,2% set backup=%name%%datetime% echo backing up...%backup% echo %backup%>%latestmemo% robocopy %ramdir% "%backupdir%\%backup%" /MIR /NS /NC /NFL /NDL /NP /Z /TBD /MOT:1 /TEE /LOG+:"%backupdir%\%backup%.log"
日時(yyyyMMddHHmmss)を付加したファイル名でEclipseフォルダをハードディスクに退避する。/MOT:1オプションで、1分間隔でコピー元の変更を感知してミラーリングを繰り返す。
また、Windows起動時はRAMディスクが空になっているので、最後に取ったバックアップからデータを復元している。
ワークスペースのバクアップ&レストアも「変数の設定」を書き換えればそのまま使える。
結論:
たしかにEclipseの動作はかなり速くなった。でも、どうしても作業が消失するリスクがあるし、ミラーリング開始時は結構時間がかかって面倒*1なので、そこまでして導入するかというとビミョ〜かな。
むしろテスト用サーバーをRAMディスク上で動かした方が嬉しい気がするが・・・それはまた次回。
参考資料:
Windowsの「robocopy」コマンドでフォルダをバックアップ/同期させる:Tech TIPS - @IT
Robocopyでフォルダをコピー | Sunvisor Lab.
*1:まあバックアップだと思えばアリかも