自動化バックアップシステム
第72回でも紹介したように,完全自動化バックアップ&シンクロシステムの開発を進めています。
同様のシステムに,MacOSXのタイムマシンがあると思われます。タイムマシンのバックアップしたデータは,通常のファイルとは異なると思われます。この点のデメリットは,OSおよびハードディスクがクラッシュした場合や,他のマシンでデータを扱いたい場合に,その外部のハードディスクを設定するまで,動作しないということです。タイムマシンシステムに完全に依存してしまいます。
いっぽう,筆者の開発するシステムでは,外部ディスクは通常の(現在のところNTFSフォーマットの)ディスクなので,基本的には異なるOSであっても,接続すれば動作します。
ライフログ時代のシンクロシステムの運用
第72回のときにまとめたものを簡単にくり返すと,筆者の考えるシンクロシステムの要求は次のようになります。
- ハードディスク間のシンクロシステムである
- ユーザーのミスに寛容。システムじたいのミスにも寛容
- 複数台の多重バックアップを容易に設定できる
- シンクロにかかる時間は極小化する
これを満たすために,次のような設計方針を立て開発を進めました。
- ログシステムに,使用したファイルを常時記録する
- シンクロはその使用したファイルのみを行う
このうち,ログシステムでファイルの入出力を常時監視しています。
システム全体の構成は,大きくわけると次の2つになります。
ここで気になるのが,全体の作業時間です。
シンクロにかかる時間は10分前後と短時間ですが,入出力を監視する部分はシステムに常駐するため,OSの作業環境(メモリ)を圧迫したり,他の作業に遅延を発生する可能性が出てきます。たとえばじっさいに,Corei7 M740 2.80GHzのマシンで運用したところ,ログシステムが常駐している状態でDVDビデオを再生すると,映像に遅延が発生することがわかりました。
これでは常時運用することができません。
現在は,暫定的にDVDを再生する場合に,ログシステムを停止しています。筆者の場合,DVDの再生は映画を見るためで,ほぼ専用機として使用していますので,その間にファイル操作などは基本的には行いません。したがって目的は達成できているとはいえ,ログのオン/オフの切り替えの手間はあり,不快感が募ってきました。
「最近表示した場所」
ふと考えていると,別の視点から発見がありました。
WindowsはOSじたいにファイル使用のログがあり,それは次のショートカットとして次の場所に記録しているのです。
C:\Users\username\AppData\Roaming\Microsoft\Windows\Recent
いわゆる,「最近使ったファイル」です。
そこでシンクロシステムのうちログシステムは,基本的にこの「最近使ったファイル」を参照すれば,常時ログを監視する必要はないのではないか,と気づいたのです。
OSのしていることは利用すればよいのであって,わざわざおなじ機能を実装する必要はないかもしれません。
筆者は,これまで「最近表示した場所」を使ったことはありませんでした。というのも「最近表示した場所」には,標準で30個程度のファイルを記録する機能があるのですが,この数が微妙な数で,筆者自身のニーズを満たさないためです。
たとえば,フォルダの階層が深い場合,新規にフォルダを開いたり保存するときに,「最近表示した場所」を使用すると,階層の深いフォルダへのアクセスを容易にできると期待できますが,じっさいにはそのようには動作しません。「最近表示した場所」の蒐集のタイミングがリアルタイムでないだけでなく,選択した場合には,ショートカットを解析して順次表示するため,クリックしたときには別のフォルダをクリックしている可能性があって,結局30ファイルすべての解析を待つ必要があるからです。
手動で使う場合には不向きですが,これをシンクロのためのログの情報収集に使うのであれば,30個あれば充分に足りる可能性があります。
さらに,そのショートカットファイル群のうち,現在は使用しないと考えれるファイルを自動的に削除すれば,「最近表示した場所」の表示を高速化できるメリットも期待できます。
そこでさっそく,シンクロのためのログファイルの収集は,ファイルの入出力の常時監視ではなく,「最近表示した場所」を使うように,システムを改良しました。これにより,より負荷の少ないログシンクロバックアップシステムになると考えられます。
じっさいに,「最近表示した場所」の表示を高速化できており,さらに「最近表示した場所」の30ファイルをログの対象としたことで,今後どのフォルダを使用するのかを分析することも可能になりつつあります。
引き続き,このシステムを運用してみようと考えているところです。