ROBOCOPYでバックアップ

レッツノート・CF-R4に搭載したSSDの寿命とパフォーマンスに対する対策の一環として、RAMディスクを確保している話は以前紹介しています。ここにWebのキャッシュファイルを保存し、これをシャットダウンのときにバックアップしようと考えていたわけですが、一時的に保留にしてありました。
OSをWindows 7公開β版からWindows XPに戻したところで、バックアップの検討を再開しました。最初は、VBScriptで記述するWindows Scripting Host、あるいはMicrosoft社が新たに開発した「オブジェクトベースのスクリプト環境」・PowerShellを使ってみるつもりで、いろいろ手を付けてはいましたが、どうもうまくいきませんでした。最大の問題はパフォーマンス。実行時に逐次解釈していくスクリプト言語では、どうしても実行速度で不利です。


いろいろと調べていく中で、ROBOCOPYというコマンドラインツールがあることを知りました。従来からコマンドプロンプトに用意されていたXCOPYを大幅に強化したコマンドで、フォルダツリー単位でのファイルコピーを、サイズや更新日時、属性などいろいろな条件で制御しながら行うことができます。単なるコピーだけでなく、移動元と移動先のファイル内容を同期するミラーリングも簡単なオプションだけでこなします。スクリプトではなく最初からバイナリになったプログラムですから、実行速度でも有利です。これを使ってみることにしました。
ちなみに、ROBOCOPYの名前は「Robust(堅牢な)なファイルコピー」という意味らしいです。いろんな動作が自動化できるから「Robotコピー」の意味かと思っていたんですが…。
このROBOCOPYコマンドは、Windows Vistaには標準で含まれていますが、CF-R4にインストールされているWindows XPには含まれていません。しかし、Windows XP環境でもちゃんとROBOCOPYが使えるようになる方法は用意されています。
Microsoft社では、Windowsのマニアックなユーザーやシステム管理者などに向けて、「Windowsリソースキット」と呼ばれるドキュメントやツール群を提供しています。ROBOCOPYはこの中に含まれていて、英語版ではありますがMicrosoft社のWebサイト経由で無償ダウンロードできます。「Windows XP用」と書かれたものは見つかりませんが、心配ご無用。「Windows Server 2003用」の対応OSに、ちゃんとWindows XPがリストアップされています。ダウンロードしたWindows Server 2003 Resource Kit Toolsをインストールすれば、ROBOCOPYツールもコマンドラインから利用できるようになります。


ROBOCOPY /?」でオプション等のヘルプドキュメントが表示できますが、残念ながらこれは英語版。Vistaのコマンドラインから実行できるROBOCOPYでは日本語化されているので、これを見ながら設定をしていきました。
シャットダウンするときには、RAMディスクの中身をSSDにバックアップします。このときに、単にコピーするだけではSSD側のファイルが増えるばかりで困ってしまいます。私の場合は、キャッシュの管理はそれぞれのブラウザに任せて、RAMディスクの内容をミラーリングすることにしました。これなら、
ROBOCOPY Z:\Cache C:\ramdisk\Cache /MIR
(Z:はRAMディスクのドライブ、/MIRは「ミラーリング」のオプション;新しく作られたファイルや日付の新しいファイルをコピーし、コピー元で削除されたファイルをコピー先で削除する)
↑たったこれだけでできてしまいます。
一方、スタートアップのときにはもう一ひねり必要でした。スタートアップ処理の中ではRAMディスクの組み込みとROBOCOPYの実行順序が確定できないので、RAMディスクのドライブが確保できていない段階でROBOCOPYが実行されてしまうと、SSDからRAMディスクへのファイルのコピーに失敗してしまいます。そこで、次のようにオプションを追加してみたらコピーに失敗しなくなりました。
ROBOCOPY C:\ramdisk\Cache Z:\Cache /E /TBD
(/Eは「空のディレクトリも含めてサブディレクトリをコピーする」、/TBDは「共有名が定義されるのを待つ」)


グループポリシーエディタ
実際にシャットダウンやスタートアップの時に実行されるコマンドを設定するときには、グループポリシーエディタを使います。通常ではスタートメニューには登録されていないので、スタートメニューの「ファイル名を指定して実行…」から「gpedit.msc」と打ち込んで起動しましょう。
グループポリシーエディタでは、通常のコントロールパネルなどではできない様々な環境設定が可能になりますが、その中に、スタートアップおよびシャットダウンのときに自動実行するスクリプトを設定する項目があります。

シャットダウン時の「スクリプト」の設定
本来は、Windows Scripting HostやPowerShellのスクリプトファイル、あるいはコマンドラインのバッチファイルなどを指定することになるのでしょうけど、今回は実行するのが単一のコマンドのみなので、実行ファイルのROBOCOPYを直接スクリプト名に入れてしまい、パラメータを指定してみました。これでもちゃんと動作してくれます。
ROBOCOPYでも、さすがにバックアップおよび復元の処理にはずいぶん待たされます。それでも、再起動の操作自体はそれほど頻繁に行われるものではありませんし、実質的にはたいした影響はないでしょう。普段のWebサイトの閲覧はずいぶん快適になりました。まあまあ合格点の解決策ではないかと思っています。


投稿日

カテゴリー:

投稿者:



コメント

コメントを残す

1回のみ
毎月

記事を気に入っていただけましたか?よろしければ、今後のSSK Worldの活動に向けてご支援をお願いいたします。

SSK Worldを「面白い!」と思っていただける方がありましたら、今後の当サイトの活動継続に向けて、ご支援をお願いいたします。

金額を選択

¥100
¥500
¥1,000
¥500
¥1,000
¥2,000

またはカスタム金額を入力

¥

ご協力いただき、ありがとうございます。

ご協力いただき、ありがとうございます。

送金送金

タグクラウド

2年縛り Amazon Android BESS Bluetooth CF-B5 CF-R2 CF-R4 CF-RZ4 CF-SV8 DIY iPhone LTE Movable Type Nintendo Switch NuAns NEO Reloaded SNS SSD USB PD Webサイト Webブラウザー Windows 10 Windows XP カメラ カーナビ クルマ ショップ ステップワゴンスパーダ スマートフォン バージョンアップ ブログ マラソン レッツノート ログハウス 中日ドラゴンズ 伊豆 倉庫 健康 写真 合唱 塗装 家族 携帯電話 旅行 日本プロ野球 映画 暮らし 東京 槇原敬之 浜松 無線LAN 自作PC 芝生 花壇 薪ストーブ 薪割り 記念日 野球 音楽 食べる