(57)【特許請求の範囲】
【請求項１】
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定する判定手段と、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択する選択手段と、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するデータ提供手段と、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するデータ取得手段と、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するマージ手段とを具備し、
前記判定手段は、前記仮想計算機と前記ソフトウェア更新サービスで用いられる仮想計算機のファイルのリストを参照し、前記仮想計算機と前記ソフトウェア更新サービスで用いられる仮想計算機とで非共通なファイルを、前記ユーザにより作成されたデータと判定する
メンテナンスシステム。
【請求項２】
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定する判定手段と、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択する選択手段と、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するデータ提供手段と、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するデータ取得手段と、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するマージ手段とを具備し、
前記判定手段は、アプリケーションの起動とファイル読み込みを監視し、前記アプリケーションの起動から完了までの間に、前記アプリケーションに読み込まれなかったファイルを、前記ユーザにより作成されたデータと判定する
メンテナンスシステム。
【請求項３】
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定する判定手段と、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択する選択手段と、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するデータ提供手段と、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するデータ取得手段と、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するマージ手段とを具備し、
前記判定手段は、アプリケーションの起動と、前記アプリケーションが読み込むファイルのディレクトリを監視し、前記ディレクトリが変更された際、前記ディレクトリの変更後に前記アプリケーションに読み込まれたファイルを、前記ユーザにより作成されたデータと判定する
メンテナンスシステム。
【請求項４】
請求項１乃至３のいずれか一項に記載のメンテナンスシステムであって、
前記判定手段は、ファイル名及び拡張子のうち少なくとも１つを示す識別情報が記載されたリストを参照し、前記仮想計算機で利用するソフトウェアのファイルのうち、前記リストに記載されている識別情報に該当するファイルを、前記ユーザにより作成されたデータと判定する
メンテナンスシステム。
【請求項５】
請求項１乃至４のいずれか一項に記載のメンテナンスシステムであって、
前記判定手段は、前記仮想計算機で利用するソフトウェアのファイルが個人情報を含むか否かを検索し、前記個人情報が含まれているファイルを、前記ユーザにより作成されたデータと判定する
メンテナンスシステム。
【請求項６】
ユーザが使用する計算機により実施されるメンテナンス方法であって、
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定するステップと、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択するステップと、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するステップと、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するステップと、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するステップと、
前記仮想計算機と前記ソフトウェア更新サービスで用いられる仮想計算機のファイルのリストを参照し、前記仮想計算機と前記ソフトウェア更新サービスで用いられる仮想計算機とで非共通なファイルを、前記ユーザにより作成されたデータと判定するステップとを含む
メンテナンス方法。
【請求項７】
ユーザが使用する計算機により実施されるメンテナンス方法であって、
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定するステップと、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択するステップと、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するステップと、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するステップと、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するステップと、
アプリケーションの起動とファイル読み込みを監視し、前記アプリケーションの起動から完了までの間に、前記アプリケーションに読み込まれなかったファイルを、前記ユーザにより作成されたデータと判定するステップとを含む
メンテナンス方法。
【請求項８】
ユーザが使用する計算機により実施されるメンテナンス方法であって、
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定するステップと、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択するステップと、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するステップと、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するステップと、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するステップと、
アプリケーションの起動と、前記アプリケーションが読み込むファイルのディレクトリを監視し、前記ディレクトリが変更された際、前記ディレクトリの変更後に前記アプリケーションに読み込まれたファイルを、前記ユーザにより作成されたデータと判定するステップとを含む
メンテナンス方法。
【請求項９】
請求項６又は７に記載のメンテナンス方法であって、
ファイル名及び拡張子のうち少なくとも１つを示す識別情報が記載されたリストを参照し、前記仮想計算機で利用するソフトウェアのファイルのうち、前記リストに記載されている識別情報に該当するファイルを、前記ユーザにより作成されたデータと判定するステップ
を更に含む
メンテナンス方法。
【請求項１０】
請求項６乃至８のいずれか一項に記載のメンテナンス方法であって、
前記仮想計算機で利用するソフトウェアのファイルが個人情報を含むか否かを検索し、前記個人情報が含まれているファイルを、前記ユーザにより作成されたデータと判定するステップを更に含む
メンテナンス方法。
【請求項１１】
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定するステップと、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択するステップと、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するステップと、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するステップと、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するステップと、
前記仮想計算機と前記ソフトウェア更新サービスで用いられる仮想計算機のファイルのリストを参照し、前記仮想計算機と前記ソフトウェア更新サービスで用いられる仮想計算機とで非共通なファイルを、前記ユーザにより作成されたデータと判定するステップと
を計算機に実行させるためのメンテナンス用プログラムを格納する
記憶媒体。
【請求項１２】
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定するステップと、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択するステップと、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するステップと、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するステップと、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するステップと、
アプリケーションの起動とファイル読み込みを監視し、前記アプリケーションの起動から完了までの間に、前記アプリケーションに読み込まれなかったファイルを、前記ユーザにより作成されたデータと判定するステップと
を計算機に実行させるためのメンテナンス用プログラムを格納する
記憶媒体。
【請求項１３】
仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定するステップと、
前記ユーザにより作成されたデータではないと判定されたファイルを、前記仮想計算機で利用するソフトウェアのファイルを前記ユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択するステップと、
前記ソフトウェア更新サービスへ、前記選択されたファイルを提供するステップと、
前記ソフトウェア更新サービスから、前記選択されたファイルに応じて更新されたソフトウェアのファイルを取得するステップと、
前記更新されたソフトウェアのファイルに基づいて、前記仮想計算機で利用するソフトウェアに対し、更新内容を反映するステップと、
アプリケーションの起動と、前記アプリケーションが読み込むファイルのディレクトリを監視し、前記ディレクトリが変更された際、前記ディレクトリの変更後に前記アプリケーションに読み込まれたファイルを、前記ユーザにより作成されたデータと判定するステップと
を計算機に実行させるためのメンテナンス用プログラムを格納する
記憶媒体。
【請求項１４】
請求項１１乃至１３のいずれか一項に記載の記憶媒体であって、
ファイル名及び拡張子のうち少なくとも１つを示す識別情報が記載されたリストを参照し、前記仮想計算機で利用するソフトウェアのファイルのうち、前記リストに記載されている識別情報に該当するファイルを、前記ユーザにより作成されたデータと判定するステップ
を更に計算機に実行させるためのメンテナンス用プログラムを格納する
記憶媒体。
【請求項１５】
請求項１１乃至１３のいずれか一項に記載の記憶媒体であって、
前記仮想計算機で利用するソフトウェアのファイルが個人情報を含むか否かを検索し、前記個人情報が含まれているファイルを、前記ユーザにより作成されたデータと判定するステップ
を更に計算機に実行させるためのメンテナンス用プログラムを格納する
記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メンテナンスシステム、メンテナンス方法、及びメンテナンス用プログラムに関し、特にメンテナンスする人（メンテナ）の計算機から、遠隔操作により、ユーザの計算機のメンテナンス作業を行うメンテナンスシステム、メンテナンス方法、及びメンテナンス用プログラムに関する。
【背景技術】
【０００２】
近年、計算機が普及し、計算機に詳しくない人（計算機初心者）でも、計算機を使う機会が多い。そのような計算機初心者は、計算機のトラブルが発生したときの問題解消や、不必要なファイルの削除等の定期的なメンテナンスを、一人で行えないことが多い。そこで、計算機に詳しい人にメンテナンスしてもらう必要がある。このような場面では、メンテナンスする人（メンテナ）がトラブルの発生した計算機のある場所に出張し、計算機をメンテナンスすることは、移動コストがかかるため、遠隔からのメンテナンスが求められる。【０００３】
一方、計算機内部には、写真や住所録、連絡先、パスワード、業務関連データ、非公開データ、その他の個人情報等、様々なユーザデータが保存されており、そのようなデータが第三者に見られたり、流出したりしてはならないという要件がある。【０００４】
計算機のメンテナンスに関連する技術として、特開２００４−１７１４１２号公報（特許文献１）に仮想ＰＣ（パソコン）レンタル装置、コンピュータが実行するためのプログラム、及び仮想ＰＣレンタルシステムが開示されている。この関連技術では、画面転送型シンクライアントにおいて、サーバ側のＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：仮想計算機）を正常な状態までロールバックすることによって、メンテナンスする。しかし、メンテナンスを行うサーバ管理者であれば、ＶＭのデータに自由にアクセス可能であるため、ユーザデータ閲覧や、ユーザデータの流出に繋がる。【０００５】
また、特開２００７−２０１９６９号公報（特許文献２）にリモートメンテナンスシステムが開示されている。この関連技術では、メンテナンスを行う計算機に通信制御部を備え、通信制御がメンテナンスを行う人に対し、パスワードを要求する。パスワードに有効期限を設けることで、メンテナンスを行う時間を指定できる。このため、保守を依頼した人は、メンテナンスが行われる時間を把握でき、不信感を軽減することができる。しかし、保守を行う人は、パスワード入力後、データに自由にアクセス可能であるため、ユーザデータ閲覧やユーザデータの流出に繋がる。【０００６】
このように、上記の関連技術では、メンテナンス作業時に、ユーザデータを含む全てのデータをメンテナに渡しているため、ユーザデータの流出の可能性がある。また、メンテナが、ユーザの計算機にアクセスし、ユーザの計算機を操作してメンテナンスを行っているため、ユーザデータを含む全てのデータにユーザ以外の者がアクセスできるように設定を変更される可能性が残されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１７１４１２号公報
【特許文献２】特開２００７−２０１９６９号公報
【発明の概要】
【０００８】
本発明の目的は、メンテナンス作業時に、ユーザの計算機が、ユーザデータをメンテナンスする人（メンテナ）に渡さず、メンテナンス作業に関係ない操作やデータを受け付けないことで、ユーザデータの流出を防止するメンテナンスシステムを提供することにある。
【０００９】
本発明のメンテナンスシステムは、判定手段と、選択手段と、データ提供手段と、データ取得手段と、マージ手段とを具備する。判定手段は、仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定する。選択手段は、ユーザにより作成されたデータではないと判定されたファイルを、仮想計算機で利用するソフトウェアのファイルをユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択する。データ提供手段は、ソフトウェア更新サービスへ、選択されたファイルを提供する。データ取得手段は、ソフトウェア更新サービスから、選択されたファイルに応じて更新されたソフトウェアのファイルを取得する。マージ手段は、更新されたソフトウェアのファイルに基づいて、仮想計算機で利用するソフトウェアに対し、更新内容を反映する。なお、データ提供手段及びデータ取得手段は、通信を行うためのＮＩＣでも良いし、記憶媒体（メディア）に対してデータを読み書きするための端子や装置でも良い。
【００１０】
本発明のメンテナンス方法は、ユーザが使用する計算機により実施されるメンテナンス方法である。このメンテナンス方法では、仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定する。また、ユーザにより作成されたデータではないと判定されたファイルを、仮想計算機で利用するソフトウェアのファイルをユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択する。また、ソフトウェア更新サービスへ、選択されたファイルを提供する。また、ソフトウェア更新サービスから、選択されたファイルに応じて更新されたソフトウェアのファイルを取得する。また、更新されたソフトウェアのファイルに基づいて、仮想計算機で利用するソフトウェアに対し、更新内容を反映する。
【００１１】
本発明のメンテナンス用プログラムは、以下の各ステップを計算機に実行させるためのプログラムである。最初のステップでは、仮想計算機で利用するソフトウェアのファイルがユーザにより作成されたデータかどうか判定する。次のステップでは、ユーザにより作成されたデータではないと判定されたファイルを、仮想計算機で利用するソフトウェアのファイルをユーザの代わりに更新するソフトウェア更新サービスに送るファイルとして選択する。次のステップでは、ソフトウェア更新サービスへ、選択されたファイルを提供する。次のステップでは、ソフトウェア更新サービスから、選択されたファイルに応じて更新されたソフトウェアのファイルを取得する。次のステップでは、更新されたソフトウェアのファイルに基づいて、仮想計算機で利用するソフトウェアに対し、更新内容を反映する。なお、本発明のメンテナンス用プログラムは、記憶装置や記憶媒体に格納することも可能である。なお、本発明のメンテナンス用プログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１２】
以上により、メンテナンス作業時に、ユーザデータの流出の可能性の無いメンテナンスシステムを提供できる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明のメンテナンスシステムの構成例を示すブロック図である。
【図２】図２は、メンテナンスシステムの動作を示すシーケンス図である。
【図３】図３は、ユーザデータの判定に用いるリストの例を示す図である。
【図４】図４は、ユーザデータ判定の動作を示す流れ図である。
【図５】図５は、ユーザデータ判定の動作を示す流れ図である。
【図６】図６は、ユーザデータ判定の動作を示す流れ図である。
【図７】図７は、ユーザＶＭとメンテナンス済みのコピーＶＭのマージの動作を示す流れ図である。
【図８】図８は、設定ファイルを定義するリストの例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本発明の実施形態について添付図面を参照して説明する。
【００１５】
図１に示すように、本発明のメンテナンスシステムは、メンテナ計算機１０００Ｍと、ユーザ計算機１０００Ｕを含む。
【００１６】
以下、メンテナ計算機１０００Ｍの構成要素の番号には末尾に「Ｍ」を付けて表し、ユーザ計算機１０００Ｕの構成要素の番号には末尾に「Ｕ」を付けて表す。
【００１７】
メンテナ計算機１０００Ｍは、メンテナンスする人（メンテナ）が操作する計算機である。
【００１８】
ユーザ計算機１０００Ｕは、メンテナンスしてもらう人（ユーザ）が操作する計算機である。ここでは、ユーザ計算機１０００Ｕは、プログラム制御により動作する。
【００１９】
メンテナ計算機１０００Ｍ、及びユーザ計算機１０００Ｕの例として、ＰＣ（パソコン）、モバイルノートＰＣ、シンクライアント端末／サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータや、携帯電話機、カーナビ（カーナビゲーションシステム）、家庭用ゲーム機、携帯ゲーム機、デジタルチューナー、デジタルレコーダー、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＰＯＳ（Ｐｏｉｎｔ  ｏｆ  Ｓａｌｅ）端末、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器、又は同様の通信機能を有する電子機器等が考えられる。なお、メンテナ計算機１０００Ｍ、及びユーザ計算機１０００Ｕは、端末やサーバに限らず、中継機器や周辺機器でも良い。また、メンテナ計算機１０００Ｍ、及びユーザ計算機１０００Ｕは、コンピュータに搭載される拡張ボードやソフトウェアでも良い。更に、ユーザ計算機１０００Ｕは、車両や船舶、航空機等の移動体に搭載されていても良い。但し、実際には、これらの例に限定されない。
【００２０】
本発明では、ユーザ計算機１０００ＵのＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：仮想計算機）を複製し、複製したＶＭをメンテナ計算機１０００Ｍに送信し、メンテナンスを行った後、ユーザ計算機１０００Ｕへ送信する。
【００２１】
ここでは、ユーザ計算機１０００ＵのＶＭをユーザＶＭと定義する。ユーザＶＭの複製をコピーＶＭとする。メンテナ計算機１０００Ｍに最初から存在するＶＭをメンテナＶＭとする。
【００２２】
また、本発明において、コピーするとは、コピー先に同名のファイルが存在しない場合には、ファイルの複製を作製し、コピー先に同名のファイルが存在する場合には、複製したファイルで同名のファイルを上書きする操作を意味する。
【００２３】
メンテナ計算機１０００Ｍは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）１００１Ｍと、メモリ１００２Ｍと、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ：ハードディスクドライブ）１００３Ｍと、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ：ネットワークインターフェースカード）１００４Ｍと、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ：仮想計算機モニタ）１００５Ｍと、メタデータ取得部１００６Ｍと、差分送受信部１００７Ｍを備える。
【００２４】
ユーザ計算機１０００Ｕは、ＣＰＵ１００１Ｕと、メモリ１００２Ｕと、ＨＤＤ１００３Ｕと、ＮＩＣ１００４Ｕと、ＶＭＭ１００５Ｕと、メタデータ取得部１００６Ｕと、差分送受信部１００７Ｕと、ＶＭコピー生成部１００８Ｕと、ユーザデータ判定部１００９Ｕと、ＶＭマージ部１０１０Ｕを備える。
【００２５】
ＣＰＵ１００１Ｍ、及びＣＰＵ１００１Ｕは、コンピュータ内外の各装置の制御やデータの計算・加工を行い、メモリに記憶されたプログラムを実行したり、入力装置や記憶装置からデータを受け取り、演算・加工した上で、出力装置や記憶装置に出力したりする。ＣＰＵ１００１Ｍ、及びＣＰＵ１００１Ｕの例として、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、同様の機能を有するＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：半導体集積回路）等が考えられる。但し、実際には、これらの例に限定されない。
【００２６】
メモリ１００２Ｍ、及びメモリ１００２Ｕは、ＣＰＵが直接データを読み取ることができる半導体記憶装置である。ここでは、メモリ１００２Ｍ、及びメモリ１００２Ｕは、主記憶装置（メインメモリ）を示す。メモリ１００２Ｍ、及びメモリ１００２Ｕの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、又はこれらの組み合わせ等が考えられる。但し、実際には、これらの例に限定されない。
【００２７】
ＨＤＤ１００３Ｍ、及びＨＤＤ１００３Ｕは、コンピュータ内外でデータやプログラムを格納する補助記憶装置である。ここでは、ＨＤＤ１００３Ｍ、及びＨＤＤ１００３Ｕは、外部記憶装置（ストレージ）を示す。なお、ＨＤＤ１００３Ｍ、及びＨＤＤ１００３Ｕは、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のフラッシュメモリドライブでも良い。或いは、ＨＤＤ１００３Ｍ、及びＨＤＤ１００３Ｕは、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）やメモリカード等の記憶媒体（メディア）等でも良い。また、ＨＤＤ１００３Ｍ、及びＨＤＤ１００３Ｕは、メンテナ計算機１０００Ｍ、及びユーザ計算機１０００Ｕに内蔵された記憶装置に限らず、周辺機器（外付けＨＤＤ等）や外部のサーバ（ストレージサーバ等）に設置された記憶装置でも良い。但し、実際には、これらの例に限定されない。
【００２８】
ＮＩＣ１００４Ｍ、及びＮＩＣ１００４Ｕは、通信回線（ネットワーク）を介して、外部とデータの送受信を行うための通信装置である。ここでは、ＮＩＣ１００４ＭとＮＩＣ１００４Ｕは、ＮＩＣ１００４ＭとＮＩＣ１００４Ｕを介して接続される。ＮＩＣ１００４Ｍ、及びＮＩＣ１００４Ｕの例として、ネットワークアダプタや、アンテナ、接続口（コネクタ）等の通信ポート等が考えられる。また、ＮＩＣ１００４Ｍ、及びＮＩＣ１００４Ｕが利用するネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。但し、実際には、これらの例に限定されない。
【００２９】
ＶＭＭ１００５Ｍ、及びＶＭＭ１００５Ｕは、仮想マシン（ＶＭ）を生成する。
【００３０】
メタデータ取得部１００６Ｍ、及びメタデータ取得部１００６Ｕは、ＶＭに含まれるファイルのメタデータを取得する。また、メタデータ取得部１００６Ｍ、及びメタデータ取得部１００６Ｕは、ＨＤＤに保存されているＶＭのファイルシステムを解析し、ファイルの名前（ファイル名）とファイルのハッシュ値を取得し、リストを作成する。
【００３１】
差分送受信部１００７Ｍ、及び差分送受信部１００７Ｕは、ファイルの転送を行う。
【００３２】
差分送受信部１００７Ｍは、メンテナＶＭのメタデータのリストと、コピーＶＭのメタデータのリストを取得し、比較を行うことで差分を求め、差分の転送要求を、差分送受信部１００７Ｕへ送信する。また、差分送受信部１００７Ｍは、差分送受信部１００７Ｕから差分を受信し、コピーＶＭを構築する。また、差分送受信部１００７Ｍは、メンテナンス作業によって更新されたコピーＶＭのファイルを、差分送受信部１００７Ｕへ送信する。
【００３３】
差分送受信部１００７Ｕは、差分送受信部１００７Ｍから要求された差分を送信する。また、差分送受信部１００７Ｍから、メンテナンスによって更新されたファイルを受信する。
【００３４】
ＶＭコピー生成部１００８Ｕは、ＶＭのコピーを行う。ここでは、ＶＭコピー生成部１００８Ｕは、ＨＤＤに保存されているＶＭに含まれるファイルをコピーし、新たなＶＭを生成する。このとき、ＶＭコピー生成部１００８Ｕは、ユーザデータ判定部１００９Ｕを呼び出し、ユーザデータが含まれるファイルのコピーは行わない。
【００３５】
ユーザデータ判定部１００９Ｕは、ＶＭに含まれるファイルがユーザデータか否かを判定する。ここでは、ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８ＵとＶＭマージ部１０１０Ｕから呼び出され、ＶＭに含まれるファイルが、ユーザデータであるか否かを判定し、判定結果を返す。
【００３６】
ＶＭマージ部１０１０Ｕは、メンテナンス作業によって、更新されたコピーＶＭと、メンテナンス作業の間にユーザが作業を行い、更新されているユーザＶＭとを、競合を解決し、マージ（ｍｅｒｇｅ：統合）する。すなわち、ＶＭマージ部１０１０Ｕは、メンテナンス済みのコピーＶＭを、ユーザＶＭへマージする。このとき、ユーザデータ判定部１００９Ｕを呼び出すことによって、ユーザデータのマージは行わない。また、ＶＭマージ部１０１０Ｕは、設定ファイルに対しては、必ずマージを行い、アプリケーション本体やライブラリに対しては、メンテナンス済みコピーＶＭに含まれるファイルのバージョンが新しいときだけ、マージを行う。
【００３７】
なお、ＶＭＭ１００５Ｍ、ＶＭＭ１００５Ｕ、メタデータ取得部１００６Ｍ、メタデータ取得部１００６Ｕ、差分送受信部１００７Ｍ、差分送受信部１００７Ｕ、ＶＭコピー生成部１００８Ｕ、ユーザデータ判定部１００９Ｕ、及びＶＭマージ部１０１０Ｕは、コンピュータに搭載される拡張ボードでも良い。或いは、各々の機能をコンピュータやＣＰＵに実行させるためのプログラムでも良い。この場合、当該プログラムは、記憶装置や記憶媒体に格納することも可能である。但し、実際には、これらの例に限定されない。
【００３８】
ここで、メンテナ計算機１０００Ｍは、ユーザ計算機１０００Ｕと同じ構成でも良い。すなわち、メンテナ計算機１０００Ｍは、ユーザ計算機１０００Ｕの１つでも良い。メンテナ計算機１０００Ｍとしての構成要素は、ユーザ計算機１０００Ｕにも含まれているためである。この場合、複数のユーザ計算機１０００Ｕの各々は、自機以外の他のユーザ計算機１０００Ｕに対し、メンテナ計算機１０００Ｍとなることができる。
【００３９】
次に、図２のシーケンス図を参照して、本発明のメンテナンスシステムの全体の動作について説明する。なお、メンテナンス作業の間、ユーザＶＭを停止させるか否かで、ＶＭマージ方法が異なる。詳しくは後述する。
【００４０】
（１）ステップＳ１
まず、ユーザ計算機１０００ＵのＶＭコピー生成部１００８Ｕは、ＨＤＤ１００３ＵからユーザＶＭのディスクイメージを読み込む。次に、ＶＭコピー生成部１００８Ｕは、ユーザデータ判定部１００９Ｕを呼び出し、ユーザＶＭ中のユーザデータの特定を行う。そして、ＶＭコピー生成部１００８Ｕは、特定されたユーザデータを避けて、ユーザデータ以外をコピーし、新たなＶＭとしてコピーＶＭを生成する。すなわち、ユーザ計算機１０００ＵのＶＭコピー生成部１００８Ｕは、ユーザデータを含まないコピーＶＭを生成する。ＶＭコピー生成部１００８Ｕとユーザデータ判定部１００９Ｕの詳しい動作については後述する。
【００４１】
（２）ステップＳ２
ユーザ計算機１０００Ｕのメタデータ取得部１００６Ｕは、生成されたコピーＶＭのディスクイメージのファイルシステムを解析することで、全てのファイルのメタデータを取得し、取得されたメタデータのリストとしてコピーＶＭのメタデータのリストを作成し、ＮＩＣ１００４ＵとＮＩＣ１００４Ｍの間のネットワークを介して、メンテナ計算機１０００Ｍの差分送受信部１００７Ｍへ送信する。メタデータには、ファイル名とファイルの内容を一意に識別するファイルのハッシュ値が含まれる。ファイルのハッシュ値とは、ファイルの内容を、ＳＨＡ１やＭＤ５等のハッシュ関数に入力したときの、関数の出力である。
【００４２】
（３）ステップＳ３
メンテナ計算機１０００Ｍのメタデータ収集部１００６Ｍは、メンテナＶＭのディスクイメージを読み込み、ファイルシステムを解析することでメタデータを取得し、取得されたメタデータのリストとしてメンテナＶＭのメタデータのリストを作成する。
【００４３】
（４）ステップＳ４
メンテナ計算機１０００Ｍの差分送受信部１００７Ｍは、取得された２つのメタデータのリスト、すなわちコピーＶＭのメタデータのリストとメンテナＶＭのメタデータのリストを比較し、差分を求める。ここでは、メンテナ計算機１０００Ｍの差分送受信部１００７Ｍは、コピーＶＭにのみに存在するファイルと、コピーＶＭとメンテナＶＭで内容が異なるファイルとを記録した差分リストを求め、求められた差分リストを、ユーザ計算機１０００Ｕの差分送受信部１００７Ｕへ送信する。
【００４４】
ここで、コピーＶＭにのみに存在するファイルは、コピーＶＭのメタデータのリストから、メンテナＶＭのメタデータのリストに存在するファイルを引くことによって求められる。コピーＶＭとメンテナＶＭで内容が異なるファイルは、コピーＶＭのメタデータのリストと、メンテナＶＭのメタデータのリストで共通するファイルのうち、ファイルのハッシュ値がコピーＶＭとメンテナＶＭで異なるファイルである。コピーＶＭにのみ存在するファイルと、コピーＶＭとメンテナＶＭで内容が異なるファイルとの和集合を、差分と呼ぶ。
【００４５】
（５）ステップＳ５
ユーザ計算機１０００Ｕの差分送信部１００７Ｕは、コピーＶＭとメンテナＶＭの差分を示す差分リストを受信する。そして、差分送信部１００７Ｕは、コピーＶＭイメージから、差分リストに記載されているファイルを読み込み、読み込まれたファイルをメンテナ計算機１０００Ｍの差分送受信部１００７Ｍへ送信する。
【００４６】
（６）ステップＳ６
メンテナ計算機１０００Ｍの差分送受信部１００７Ｍは、差分のファイルを受信する。次に、差分送受信部１００７Ｍは、受信された差分のファイルを持たない新たなＶＭであるメンテナンス用のコピーＶＭを生成する。そして、差分送受信部１００７Ｍは、先に取得された２つのメタデータのリスト、ずなわち現在のコピーＶＭのメタデータのリストとメンテナＶＭのメタデータのリストを比較し、コピーＶＭとメンテナＶＭに共通なファイルを、メンテナＶＭから新たなＶＭであるメンテナンス用のコピーＶＭへコピーする。次に、差分送受信部１００７Ｍは、差分のファイルをメンテナンス用のコピーＶＭにコピーし、現在のコピーＶＭの受信処理を完了する。すなわち、メンテナ計算機１０００Ｍの差分送受信部１００７Ｍは、メンテナンス用のコピーＶＭを作成し、差分をマージする。
【００４７】
（７）ステップＳ７
メンテナ計算機１０００ＭのＣＰＵ１００１Ｍは、メンテナからの指示や操作に応じて、メンテナンス用のコピーＶＭを起動し、メンテナンスを行う。ＣＰＵ１００１Ｍは、設定ファイルの書き換えや、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションやライブラリのアップデートすることによってメンテナンスを行う。
【００４８】
（８）ステップＳ８
メンテナ計算機１０００Ｍのメタデータ取得部１００６Ｍは、メンテナンス済みのメンテナンス用のコピーＶＭのメタデータを取得する。
【００４９】
（９）ステップＳ９
メンテナ計算機１０００Ｍの差分受信部１００７Ｍは、先に取得された現在のコピーＶＭのメタデータのリストと、新たに取得されたメンテナンス用のコピーＶＭのメタデータのリストを比較し、メンテナンス作業によって生成されたファイルと更新されたファイルを特定し、特定されたファイルをユーザ計算機１０００Ｕの差分送受信部１００７Ｕへ送信する。
【００５０】
このとき、更新されたファイルの特定方法の例として、差分受信部１００７Ｍは、ハッシュ値を比較することによって、更新されたファイルを特定する。また、メタデータのリストにファイルの最終更新日時を記録しておき、最終更新日時が異なっていることを検知して、更新されたファイルを特定しても良い。
【００５１】
（１０）ステップＳ１０
ユーザ計算機１０００Ｕの差分送受信部１００７Ｕは、特定されたファイルを受信すると、受信されたファイルをＶＭマージ部１０１０Ｕへ渡す。ＶＭマージ部１０１０Ｕは、受信されたファイルに基づいて、メンテナンス作業による更新を反映する。なお、メンテナンス作業による更新の反映方法（ＶＭマージ方法）は、ユーザＶＭを停止させているか否かで異なる。これは、ユーザＶＭを停止させていない場合、ユーザＶＭの更新と、メンテナンスが行われたコピーＶＭの更新が競合する可能性があるためである。
【００５２】
ユーザＶＭを停止させている場合、ユーザ計算機１０００Ｕの差分送受信部１００７Ｕは、特定されたファイルを受信し、受信されたファイルをＶＭマージ部１０１０Ｕへ渡す。ＶＭマージ部１０１０Ｕは、差分送受信部１００７Ｕから受け取ったファイルを、ＨＤＤ１００３Ｕに保存されているユーザＶＭにコピーすることによって、メンテナンス作業によって行われた変更を反映する。
【００５３】
ユーザＶＭを停止させていない場合、ユーザ計算機１０００Ｕの差分送受信部１００７Ｕは、特定されたファイルを受信し、受信されたファイルをＶＭマージ部１０１０Ｕへ渡す。ＶＭマージ部１０１０Ｕは、差分送受信部１００７Ｕから受け取ったファイルを、稼働中のユーザＶＭにコピーし、メンテナンスによって行われた更新内容を反映する。このとき、ＶＭマージ部１０１０Ｕは、ユーザデータ判定部１００９Ｕを呼び出し、ユーザデータと判定されたファイルのコピーは行わない。設定ファイルについては、コピーＶＭのファイルを優先し、必ずコピーする。アプリケーションやライブラリについては、新しいバージョンの方を優先する。ＶＭマージ部１０１０Ｕの詳しい動作については後述する。
【００５４】
上記の動作では、最初にユーザデータが含まれないコピーＶＭを生成し、次にコピーＶＭにのみ存在するファイルと、コピーＶＭとメンテナＶＭで内容が異なるファイルとが記載された差分リストを求めたが、先に、ユーザＶＭにのみ存在するファイルと、ユーザＶＭとメンテナＶＭで内容が異なるファイルとが記載されたリストを求め、更にそのリストからユーザデータが含まれるファイルを除き、差分リストとしても良い。
【００５５】
また、上記の動作では、ユーザ計算機１０００ＵのＶＭコピー生成部１００８Ｕは、ファイルをコピーすることによって、コピーＶＭを生成したが、ファイルをコピーするオーバヘッドを減らすために、実際にファイルをコピーせずに、コピーＶＭのファイル構成を記録したリストを作成しても良い。リストには、ファイル名を記録しておけば良い。この場合、メタデータ取得部１００６Ｕが、メタデータを取得する際、このリストを参照し、ユーザＶＭファイルからメタデータを取得する。また、差分送受信部１００７Ｕは、コピーＶＭではなく、ユーザＶＭからファイルを読み込み、読み込まれたファイルを送信する。
【００５６】
次に、上記のステップＳ１における、ＶＭコピー生成部１００８Ｕの動作について詳しく説明する。
【００５７】
ＶＭコピー生成部１００８Ｕは、ＶＭのディスクイメージに記録されているファイルシステムを解析し、全てのファイルが記録されたコピーファイルリストを作る。次に、ＶＭコピー生成部１００８Ｕは、リストのファイルの内容とファイル名を１つずつユーザデータ判定部１００９Ｕへ渡し、ユーザデータと判定されたファイルを、コピーファイルリストから削除する。最後に、ＶＭコピー生成部１００８Ｕは、コピーファイルリストに載っているファイルをコピーし、新しいＶＭとしてコピーＶＭを生成する。
【００５８】
次に、ユーザデータ判定部１００９Ｕの動作について詳しく説明する。
【００５９】
ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕ、又はＶＭマージ部１０１０Ｕから呼び出されると、以下の動作のいずれか、又は、以下の動作の組み合わせによって、ファイルがユーザデータであるか否かを判定し、判定結果を返す。
【００６０】
＜動作１＞：「ファイル名やファイルの拡張子で判定する」
ユーザデータが含まれるファイルを指定するリストとしてユーザデータファイルリストを用意する。指定方法は、図３に示すように、ファイル名や拡張子でも良いし、ディレクトリ名でも良い。ユーザデータ判定部１００９Ｕは、ファイル名や拡張子がユーザデータファイルリストに記載されているか否かを確認する。記載されている場合は、ユーザデータの判定結果を返し、記載されていない場合は、非ユーザデータの判定結果を返す。
【００６１】
＜動作２＞：「ファイルの中身を見て判定する」
ユーザデータ判定部１００９Ｕは、ファイルの内容に対し、パターンマッチングで氏名、住所、電話番号等を検索し、それらが含まれている場合、ユーザデータと判定する。また、特定のアプリケーションが出力するファイルには、ファイルの先頭にそのアプリケーション独自のヘッダが埋め込まれている場合がある。そのようなアプリケーションの場合、ヘッダによって、判定を行っても良い。
【００６２】
＜動作３＞：「ユーザＶＭにしか存在しないファイルをユーザデータと見なす」
ＯＳやアプリケーションのファイルは、ユーザＶＭとメンテナＶＭで共通であると仮定する。よって、ユーザデータ判定部１００９Ｕは、ユーザＶＭにしか存在しないファイルをユーザデータと判定する。
【００６３】
図４を参照して、＜動作３＞の詳細な動作について説明する。
【００６４】
（１）ステップＶ１
ユーザデータ判定部１００９Ｕは、ユーザ計算機１０００Ｕのメタデータ取得部１００６Ｕと、メンテナ計算機１０００Ｍのメタデータ取得部１００６Ｍからメタデータのリストを取得する。すなわち、ユーザデータ判定部１００９Ｕは、ユーザＶＭのメタデータのリストとメンテナＶＭのメタデータのリストを取得する。
【００６５】
（２）ステップＶ２
ユーザデータ判定部１００９Ｕは、ユーザＶＭのメタデータのリストから、メンテナＶＭのメタデータのリストに載っているファイルを削除し、ユーザ計算機１０００Ｕにのみ存在するファイルのファイル名のリストとしてユーザデータファイルリストを作成する。
【００６６】
（３）ステップＶ３
ユーザデータ判定部１００９Ｕは、判定の問い合わせを待つ。ここでは、ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕからファイル名の通知を受け取るまで待つ。
【００６７】
（４）ステップＶ４
ユーザデータ判定部１００９Ｕは、判定の問い合わせがあった場合、すなわち、ＶＭコピー生成部１００８Ｕからファイル名の通知を受け取った場合、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストにあるか否かを確認する。
【００６８】
（５）ステップＶ５
ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストにある場合は、ユーザデータであるとの判定結果をＶＭコピー生成部１００８Ｕに通知する。
【００６９】
（６）ステップＶ６
ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストに無い場合は、非ユーザデータであるとの判定結果を通知する。
【００７０】
＜動作４＞：「アプリケーションが読み込むファイルを監視する」
ＣＰＵ１００１Ｕがアプリケーションを起動するとき、アプリケーション本体や、その設定ファイルは、毎回読み込まれる性質がある。この性質を利用し、ＯＳ上のエージェントが、メンテナンスが必要となる前から、アプリケーションの起動と、アプリケーションのＨＤＤへのアクセスを監視し、ＣＰＵ１００１Ｕがアプリケーションを起動したときに、読み込まれなかったファイルをユーザデータファイルリストに記録する。或いは、ユーザＶＭに含まれる全てのファイルのファイル名を記載したユーザデータファイルリストを作成しておき、ＯＳ上のエージェントが、ＣＰＵ１００１Ｕがアプリケーションを起動したときに、読み込まれたファイルをユーザデータファイルリストから削除する。
【００７１】
図５を参照して、＜動作４＞の詳細な動作を説明する。
【００７２】
（１）ステップＷ１
最初に、ユーザデータ判定部１００９Ｕは、ユーザＶＭに含まれる全てのファイルのファイル名を記載したリストとしてユーザデータファイルリストを作成する。
【００７３】
（２）ステップＷ２
次に、ＯＳ上のエージェントが、プロセス起動のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を監視することによって、アプリケーション起動の監視を行う。ここでは、ＣＰＵ１００１Ｕは、ＯＳ上のエージェントを稼動状態にしておき、プロセス起動のＡＰＩを監視することによって、アプリケーション起動の監視を行う。なお、ＯＳ上のエージェントの代わりに、デーモン（Ｄａｅｍｏｎ）や、常駐プロセス、その他のバックグラウンドプログラムを使用しても良い。
【００７４】
（３）ステップＷ３
ＯＳ上のエージェントは、アプリケーションの起動時に、アプリケーションによりユーザＶＭのディスクイメージから読み出されたファイルを、ＡＰＩフックやＩＯ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）フックドライバ等によって監視する。このとき、ＯＳ上のエージェントではなく、ＶＭＭ１００５Ｕが、アプリケーションによるファイルの読み込みを監視し、ファイルシステムの解析を行うことによって、エージェントを導入せずに、ユーザＶＭのディスクイメージから読み出されるファイルの監視を行っても良い。ここでは、ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）は、アプリケーションが読み込んだファイルを、ユーザデータ判定部１００９Ｕに通知する。
【００７５】
（４）ステップＷ４
次に、ユーザデータ判定部１００９Ｕは、アプリケーションが読み込んだファイルを、ユーザデータファイルリストから削除する。
【００７６】
（５）ステップＷ５
ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）は、アプリケーションの起動が完了したか否かを確認する。ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）は、アプリケーションの起動が完了していなければ、継続して、アプリケーションによるファイルの読み込みを監視する。アプリケーションの起動完了は、ユーザのインタラクションの開始によって検知することができる。例えば、入力のＡＰＩを監視し、マウスやキーボード入力が行われたら、アプリケーションの起動完了とする。
【００７７】
以降の動作（ステップＷ６からステップＷ９）は、基本的に、＜動作３＞のステップＶ３からステップＶ６と同じである。
【００７８】
（６）ステップＷ６
ユーザデータ判定部１００９Ｕは、アプリケーションの起動が完了したら、ユーザデータであるか否かの問い合わせがあるまで、待機する。ここでは、ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕからファイル名の通知を受け取るまで、待機する。
【００７９】
（７）ステップＷ７
ユーザデータ判定部１００９Ｕは、ユーザデータであるか否かの問い合わせがあった場合、すなわち、ＶＭコピー生成部１００８Ｕからファイル名の通知を受け取った場合、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストにあるか否かを確認する。
【００８０】
（８）ステップＷ８
ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストにある場合は、ユーザデータであるとの判定結果をＶＭコピー生成部１００８Ｕに通知する。
【００８１】
（９）ステップＷ９
ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストに無い場合は、非ユーザデータであるとの判定結果を通知する。
【００８２】
なお、アプリケーションが自動的にユーザデータを読み込む場合、例えば、前回起動時のファイルを自動表示する場合には、ユーザデータファイルリストからユーザデータが削除される場合がある。この場合は、アプリケーションを何度か起動し、全ての起動において読み込まれたファイルのみを、ユーザデータファイルリストから削除しても良い。この動作によって、ユーザデータファイルリストの精度を高めることが出来る。
【００８３】
＜動作５＞：「アプリケーションが読み込むファイルのパスを監視する」
アプリケーションの設定ファイルは、特定のディレクトリに置かれていることが多い。よって、アプリケーションが読み込むファイルのフォルダ（又はディレクトリ）の変更を検知し、フォルダ変更前に読み込まれたファイルをアプリケーションの設定ファイル、変更後に読み込まれたファイルをアプリケーションで作成したユーザデータと判定する。
【００８４】
図６を参照して、＜動作５＞の詳細な動作について説明する。
【００８５】
（１）ステップＸ１
動作４と同様に、ＯＳ上のエージェントが、プロセス起動のＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を監視することによって、アプリケーション起動の監視を行う。ここでは、ＣＰＵ１００１Ｕは、ＯＳ上のエージェントを稼動状態にしておき、プロセス起動のＡＰＩを監視することによって、アプリケーション起動の監視を行う。なお、ＯＳ上のエージェントの代わりに、デーモン（Ｄａｅｍｏｎ）や、常駐プロセス、その他のバックグラウンドプログラムを使用しても良い。
【００８６】
（２）ステップＸ２
ＯＳ上のエージェントは、アプリケーションが起動したら、アプリケーションのファイル読み込みを監視する。例えば、ＯＳ上のエージェントは、アプリケーションの起動時に、ユーザＶＭのディスクイメージから読み出されたファイル（アプリケーションが読み込んだファイル）を、ＡＰＩフックやＩＯフックドライバ等によって監視する。このとき、ＯＳ上のエージェントではなく、ＶＭＭ１００５Ｕが、アプリケーションによるファイルの読み込みを監視し、ファイルシステムの解析を行うことによって、エージェントを導入せずに、ユーザＶＭのディスクイメージから読み出されるファイルの監視を行っても良い。
【００８７】
（３）ステップＸ３
ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）は、アプリケーションが最初に読み込んだファイルのディレクトリを記録する。例えば、ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）は、アプリケーションが初めてファイルを読み込んだ際に、初期ディレクトリリストを作成し、初期ディレクトリリストに、アプリケーションが最初に読み込んだファイルのディレクトリのパスを記録する。なお、パスは、「絶対パス」、「相対パス」を問わない。パスの例として、ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）やアドレス等がある。このとき、ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）は、アプリケーションが最初に読み込んだファイルがユーザデータであれば、ディレクトリのパスを記録するようにしても良い。この場合、ユーザデータ判定部１００９Ｕは、ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）から、アプリケーションが最初に読み込んだファイルの通知を受け取り、ファイルがユーザデータであるか否かを判定し、判定結果を、ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）に返す。ファイルがユーザデータであるか否かの判定方法については、＜動作１＞〜＜動作３＞に示す方法が考えられる。
【００８８】
なお、ファイルのパスは、「／第１ディレクトリ／第２ディレクトリ／〜／第ｎディレクトリ／ファイル名」のような階層構造で示されることが多い。ディレクトリのパスを記録する際は、ファイル名の直前のディレクトリまでのパス（上記の例では、「／第１ディレクトリ／第２ディレクトリ／〜／第ｎディレクトリ」）を記録するのが好適であるが、上位のディレクトリのパス（上記の例では、「／第１ディレクトリ」や「／第１ディレクトリ／第２ディレクトリ」）で、ファイルの存在するディレクトリを特定できる場合（例えば、その上位のディレクトリの配下にしか当該ファイルが存在しない場合）は、上位のディレクトリのパスを記録するようにしても良い。
【００８９】
（４）ステップＸ４
ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）は、アプリケーションのファイル読み込みを引き続き監視する。このときの動作（アプリケーションのファイル読み込みの監視）については、ステップＸ２と同じである。
【００９０】
（５）ステップＸ５
ユーザデータ判定部１００９Ｕは、アプリケーションにファイルが読み込まれたら、読み込まれたファイルの存在するディレクトリが、記録しておいたディレクトリと同じか否かを判定する。例えば、ユーザデータ判定部１００９Ｕは、ＯＳ上のエージェント（又はＶＭＭ１００５Ｕ）から、アプリケーションに読み込まれたファイルに関する通知を受け、読み込まれたファイルのパスに基づいて、読み込まれたファイルの存在するディレクトリが、初期ディレクトリリストに記録しておいたディレクトリと同じか否かを判定する。ユーザデータ判定部１００９Ｕは、読み込まれたファイルの存在するディレクトリが、記録しておいたディレクトリと同じ場合、ディレクトリが変化していないと判定し、記録しておいたディレクトリと同じでない（異なる）場合、ディレクトリが変化していると判定する。ユーザデータ判定部１００９Ｕは、ディレクトリが変化していない場合は、ステップＸ４へ戻る。
【００９１】
（６）ステップＸ６
ユーザデータ判定部１００９Ｕは、ディレクトリが変化している場合は、ファイルの読み込みを監視し、アプリケーションが終了するまでに読み込んだファイルを、確認用のリストであるユーザデータファイルリストに追加する。なお、ユーザデータ判定部１００９Ｕは、ユーザデータであるか否かの問い合わせがあるまで、この動作を継続する。ここでは、ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕからファイル名の通知を受け取るまで、ファイルの読み込みを監視し、アプリケーションが終了するまでに読み込んだファイルのファイル名を記載するための確認用のリストとしてユーザデータファイルリストを作成し、アプリケーションが終了するまでに読み込んだファイルのファイル名を、ユーザデータファイルリストに追加する。
【００９２】
以降の動作（ステップＸ７からステップＸ９）は、基本的に、＜動作３＞のステップＶ４からステップＶ６と同じである。
【００９３】
（７）ステップＸ７
ユーザデータ判定部１００９Ｕは、ユーザデータであるか否かの問い合わせがあった場合、すなわち、ＶＭコピー生成部１００８Ｕからファイル名の通知を受け取った場合、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストにあるか否かを確認する。
【００９４】
（８）ステップＸ８
ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストにある場合は、ユーザデータであるとの判定結果をＶＭコピー生成部１００８Ｕに通知する。
【００９５】
（９）ステップＸ９
ユーザデータ判定部１００９Ｕは、ＶＭコピー生成部１００８Ｕから受け取ったファイル名が、ユーザデータファイルリストに無い場合は、非ユーザデータであるとの判定結果を通知する。
【００９６】
次に、上記の動作（＜動作１＞〜＜動作５＞）の組み合わせについて説明する。
【００９７】
複数の動作を組み合わせるときの判定結果は、複数の動作の判定結果の論理和や論理積を用いてルール（組み合わせルール）を記述し、組み合わせルールに基づいて判定結果を返す。
【００９８】
例えば、＜動作１＞と＜動作２＞の両方でユーザデータであると判定されたときに、最終的な判定をユーザデータとする場合は、「＜動作１＞  ａｎｄ  ＜動作２＞」を組み合わせルールとして記述する。また、例えば、＜動作１＞又は＜動作２＞のいずれかでユーザデータであると判定された場合に、ユーザデータであると判定する場合は、「＜動作１＞  ｏｒ  ＜動作２＞」を組み合わせルールとして記述する。３つ以上のルールを組み合わせる場合は、例えば、「（＜動作１＞  ｏｒ  ＜動作２＞）  ａｎｄ  ＜動作３＞」のように括弧によって評価の優先順位を指定しても良い。
【００９９】
ユーザデータ判定部１００９Ｕは、組み合わせルールに記述されている動作を全て実行する。次に、ユーザデータ判定部１００９Ｕは、各動作の判定結果を、論理式に従って評価する。論理式評価は、ユーザデータの判定結果を真、非ユーザデータの判定結果を偽と見なして行う。最終的な判定については、論理式の値が真であるならば、ユーザデータであり、論理式の値が偽であれば、非ユーザデータである。
【０１００】
例えば、「（＜動作１＞  ｏｒ  ＜動作２＞）  ａｎｄ  ＜動作３＞」という組み合わせルールが設定されているとき、＜動作１＞がユーザデータ、＜動作２＞が非ユーザデータ、＜動作３＞がユーザデータという判定結果であったとき、論理式は、「（真  ｏｒ  偽）  ａｎｄ  真」となり真である。よって、ユーザデータ判定部１００９Ｕは、ユーザデータの判定結果を返す。
【０１０１】
次に、図７を参照して、ＶＭマージ部１０１０Ｕの動作について詳細に説明する。
【０１０２】
（１）ステップＵ１
ＶＭマージ部１０１０Ｕは、差分送受信部１００７Ｕから受け取った差分のファイルのリストとしてメンテナンス更新ファイルリストを作成する。ここでは、ＶＭマージ部１０１０Ｕは、ステップＳ５において差分送信部１００７Ｕが受信した差分リストに基づいて、メンテナンス更新ファイルリストを作成する。例えば、ＶＭマージ部１０１０Ｕは、差分リストに記載されたファイルとユーザデータのファイルを含むメンテナンス更新ファイルリストを作成する。
【０１０３】
（２）ステップＵ２
ＶＭマージ部１０１０Ｕは、メンテナンス更新ファイルリストの最初のファイル情報を読み込む。
【０１０４】
（３）ステップＵ３
ＶＭマージ部１０１０Ｕは、読み込まれたファイル情報に対応するファイルがユーザＶＭに既に存在するか否かを、ユーザＶＭのファイルシステムを解析することによって調べる。ＶＭマージ部１０１０Ｕは、ファイルが存在しない場合は、ステップＵ７に移る。ＶＭマージ部１０１０Ｕは、ファイルが存在する場合は、ステップＵ４へ移る。
【０１０５】
（４）ステップＵ４
ＶＭマージ部１０１０Ｕは、ユーザデータ判定部１００９Ｕを呼び出し、ユーザＶＭのファイルがユーザデータであるか否かを判定する。このとき、ユーザデータ判定部１００９Ｕは、ユーザＶＭのファイルがユーザデータであるか否かを判定し、判定結果をＶＭマージ部１０１０Ｕに返す。ＶＭマージ部１０１０Ｕは、ファイルがユーザデータである場合、ステップＵ８へ移る。ＶＭマージ部１０１０Ｕは、ファイルがユーザデータではない場合、ステップＵ５へ移る。
【０１０６】
（５）ステップＵ５
ＶＭマージ部１０１０Ｕは、ファイルが設定ファイルであるか否かを判定する。ファイルが設定ファイルである場合は、ステップＵ７へ移る。設定ファイルではない場合は、ステップＵ６へ移る。設定ファイルであるか否かは、ファイルの名前や拡張子、ファイルの置かれているディレクトリで判断できる。例えば、図８のように、指定方法と指定内容を記述した設定定義リストを与え、ファイルが設定定義リストに記載されていたら、設定ファイルと判断する。
【０１０７】
（６）ステップＵ６
ＶＭマージ部１０１０Ｕは、ファイルがライブラリやアプリケーションの実行ファイル（アプリ本体）であり、当該ファイルよりもメンテナンス済みコピーＶＭのファイルの方が新しいバージョンであるか否かを判定する。ファイルがライブラリやアプリケーションの実行ファイルであり、当該ファイルよりもメンテナンス済みコピーＶＭのファイルの方が新しいバージョンの場合、ステップＵ７へ移る。当該ファイルよりもユーザＶＭのファイルの方が新しいバーションの場合、ステップＵ８へ移る。ファイルがアプリケーション本体やライブラリであるか否かは、ステップＵ５と同様の設定定義リストを持ち、拡張子や名前やディレクトリ名によって判定することができる。
【０１０８】
また、アプリケーションの実行ファイルやライブラリには、固有のヘッダが付加されているため、ヘッダの有り無しを基に設定ファイルか否かを判定しても良い。例えば、「Ｗｉｎｄｏｗｓ（登録商標）」のアプリケーションの実行ファイルであれば、先頭に「ｉｍａｇｅ＿ｄｏｓ＿ｈｅａｄｅｒ」や「ＰＥヘッダ」が含まれている。また、「Ｌｉｎｕｘ（登録商標）」等で用いられている「ＥＬＦフォーマット」（Ｅｘｅｃｕｔａｂｌｅ  ａｎｄ  Ｌｉｎｋａｂｌｅ  Ｆｏｒｍａｔ：ＥＬＦ）では、先頭に「ＥＬＦヘッダ」があり、「０ｘ７Ｆ  ０ｘ４５  ０ｘ４Ｃ  ０ｘ４６」というシグネチャが記録されている。
【０１０９】
また、ファイルのバーション情報の取得は、例えば、「Ｗｉｎｄｏｗｓ（登録商標）」のアプリケーションやライブラリであれば、ファイル内部にバージョン情報が埋め込まれているため、「Ｗｉｎｄｏｗｓ（登録商標）」のＡＰＩを用いて、バージョン情報を取得し、どちらのバージョンが新しいかを比較すれば良い。
【０１１０】
（７）ステップＵ７
ＶＭマージ部１０１０Ｕは、メンテナンス済みのコピーＶＭからユーザＶＭへ、ファイルをコピーする。
【０１１１】
（８）ステップＵ８
ＶＭマージ部１０１０Ｕは、メンテナンス更新ファイルリストから次のファイルを読み込み、ステップＵ３からステップＵ７を繰り返す。ＶＭマージ部１０１０Ｕは、メンテナンス更新ファイルリストのファイルを全て処理したら、マージ処理を終了する。
【０１１２】
本発明では、「ユーザデータが含まれないＶＭ」をメンテナ計算機に送信し、メンテナンスを行うように構成されているため、ユーザデータの漏洩を防止することができる。
【０１１３】
＜実施例＞
次に、具体的な実施例を用いて、本発明を実施するための最良の形態の動作を説明する。
【０１１４】
図１のユーザ計算機１０００Ｕは、ＣＰＵ１００１Ｕ、メモリ１００２Ｕ、ＨＤＤ１００３Ｕ、ＮＩＣ１００４Ｕ、マウス、キーボード、ディスプレイのようなインターフェースを備える一般的な計算機である。メンテナ計算機１０００Ｍも同様である。
【０１１５】
ユーザ計算機１０００Ｕとメンテナ計算機１０００Ｍは、ネットワークによって接続される。ネットワークの回線は、電話回線、ＬＡＮ，無線ＬＡＮ，インターネット等が上げられるが、特に限定されるものではない。
【０１１６】
ユーザ計算機１０００ＵのＶＭコピー生成部１００８Ｕは、仮想マシンのディスクイメージのファイルシステムを解析する。例えば、ＶＭＭ１００５Ｕに「Ｌｉｎｕｘ（登録商標）」の「Ｘｅｎ」を用いていれば、「ｍｏｕｎｔコマンド」を用いて「Ｌｉｎｕｘ（登録商標）」の機能を用いてファイルシステムを解析することができる。
【０１１７】
次に、ＶＭコピー生成部１００８Ｕは、例えば、ＶＭＭ１００５Ｕに「Ｌｉｎｕｘ（登録商標）」の「Ｘｅｎ」を用いていれば、解析したファイルシステムに対して「ｆｉｎｄコマンド」を実行することで、コピーファイルリストを作成することができる。そして、ＶＭコピー生成部１００８Ｕは、ユーザデータ判定部１００９Ｕを呼び出し、コピーファイルリストからユーザデータを削除する。ユーザデータ判定部１００９Ｕの詳しい動作については後述する。
【０１１８】
次に、ＶＭコピー生成部１００８Ｕは、例えば、ＶＭＭ１００５Ｕに「Ｌｉｎｕｘ（登録商標）」の「Ｘｅｎ」を用いていれば、「ｄｄコマンド」を用いてコピーＶＭのＶＭディスクイメージを作成し、「ｍｋｄｏｓｆｓコマンド」や「ｍｋｅｘｔコマンド」を用いてファイルシステムのフォーマットを行った後、「ｍｏｕｎｔコマンド」を用いてマウントを行う。そして、ＶＭコピー生成部１００８Ｕは、コピーファイルリストに記載されているファイルを、ユーザＶＭから、コピーＶＭへする。ファイルのコピーであるので、例えば「Ｌｉｎｕｘ（登録商標）」であれば、「ｃｐコマンド」を用いれば良い。
【０１１９】
ここで、「ｄｄコマンド」や「ｃｐコマンド」によって、ファイルをコピーせずに、コピーファイルリストを、コピーＶＭのファイル構成リストとして保持しておき、コピーＶＭのファイルを参照するときには、このリストを基に、ユーザＶＭからファイルを読み込んでも良い。
【０１２０】
ユーザ計算機１０００Ｕのメタデータ取得部１００６Ｕは、コピーＶＭのディスクイメージからメタデータを取得する。「Ｌｉｎｕｘ（登録商標）」では、「ｌｓコマンド」によってファイルの名前を取得し、「ｓｈａ１ｓｕｍコマンド」や「ｍｄ５ｓｕｍコマンド」によってファイルのハッシュ値を取得することができる。
【０１２１】
メンテナ計算機１０００Ｍのメタデータ収集部１００６Ｍは、ユーザ計算機１０００Ｕのメタデータ取得部１００６Ｕと同様に、メンテナＶＭのメタデータを取得する。
【０１２２】
続いて、メタデータ収集部１００６Ｍは、コピーＶＭのメタデータのリストと、メンテナＶＭのメタデータのリストから、差分のリストを作成し、ユーザ計算機１０００Ｕの差分送信部１００７Ｕへ送信する。
【０１２３】
例えば、コピーＶＭのメタデータのリストが、
「ｎａｍｅ＝ａ．ｔｘｔ，ｈａｓｈ＝１１１１１１１１；    ｎａｍｅ＝ｂ．ｔｘｔ，ｈａｓｈ＝２２２２２２２２；  ｎａｍｅ＝ｃ．ｔｘｔ，ｈａｓｈ＝ａｂｃｄｅｆ０９」
であり、メンテナＶＭのメタデータのリストが、
「ｎａｍｅ＝ｂ．ｔｘｔ，ｈａｓｈ＝８７６５４３２１；ｎａｍｅ＝ｃ．ｔｘｔ，ｈａｓｈ＝ａｂｃｄｅｆ０９」
である場合、コピーＶＭにしか存在しない「ａ．ｔｘｔ」と、コピーＶＭとメンテナＶＭで内容が異なる「ｂ．ｔｘｔ」が差分となるため、差分のリストは「ａ．ｔｘｔ；ｂ．ｔｘｔ」となる。
【０１２４】
ユーザ計算機１０００Ｕの差分送信部１００７Ｕは、差分リストを受信する。そして、差分送信部１００７Ｕは、差分リストに記載されているファイルをコピーＶＭから読み込み、メンテナ計算機１０００Ｍの差分送受信部１００７Ｍへ送信する。このとき、差分送信部１００７Ｕは、コピーＶＭを生成せず、コピーＶＭのファイル構成リストを作成している場合には、リストに記載されているファイルをユーザＶＭから読み込み送信する。送信は、例えば、「ＦＴＰコマンド」や、「ＳＣＰコマンド」をファイル送信に用いることが出来る。このとき、ファイルを圧縮することによって、転送効率を高めても良い。
【０１２５】
メンテナ計算機１０００Ｍの差分送受信部１００７Ｍは、差分を受信する。そして、差分送受信部１００７Ｍは、例えば、ＶＭＭ１００５Ｍに「Ｌｉｎｕｘ（登録商標）」の「Ｘｅｎ」を用いていれば、コピーＶＭ生成の動作と同じように、ディスクイメージのファイルを生成し、フォーマットした後、マウントする。差分送受信部１００７Ｍは、マウントしたディレクトリに、受信した差分と、メンテナ計算機１０００ＭのＶＭから取得したファイルをコピーする。
【０１２６】
メンテナ計算機１０００Ｍにおいて、生成したＶＭを起動する。起動したＶＭに対して、メンテナはメンテナンス作業を行う。メンテナンスは、設定ファイルをエディタによって書き換えたり、アプリケーションやＯＳに対するパッチを当てたりすることによって行う。このとき、自動診断プログラムを用いて、メンテナンス作業の効率化を図っても良い。
【０１２７】
メンテナ計算機１０００Ｍの差分送受信部１００７Ｍは、メンテナンス前のコピーＶＭのメタデータのリストとメンテナンス後のコピーＶＭのメタデータのリストを比較し、更新されたファイルを特定する。
【０１２８】
例えば、メンテナンス前の「ｃｏｎｆｉｇ．ｉｎｉ」のハッシュ値が「１２３４５６７」であった場合、メタデータのリストは、「ｎａｍｅ＝ｃｏｎｆｉｇ．ｉｎｉ，ｈａｓｈ＝１２３４５６７」となる。
【０１２９】
メンテナンスによって、「ｃｏｎｆｉｇ．ｉｎｉ」が書き換わり、ハッシュ値がｆｅｄｃｂａ９８になり、さらに「ｃｏｎｆｉｇ＿ｎｅｗ．ｉｎｉ」が新しく作成されたとき、メタデータのリストは、
「ｎａｍｅ＝ｃｏｎｆｉｇ．ｉｎｉ，ｈａｓｈ＝  ｆｅｄｃｂａ９８；  ｎａｍｅ＝ｃｏｎｆｉｇ＿ｎｅｗ．ｉｎｉ，ｈａｓｈ＝００９９８８７７」
となる。
【０１３０】
メタデータのハッシュ値が異なるため、「ｃｏｎｆｉｇ．ｉｎｉ」が更新されたと判断できる。また、メンテナンス前のメタデータのリストには、「ｃｏｎｆｉｇ＿ｎｅｗ．ｉｎｉ」が無いことから、「ｃｏｎｆｉｇ＿ｎｅｗ．ｉｎｉ」が作成されたと判断できる。
【０１３１】
差分送受信部１００７Ｍは、「ｃｏｎｆｉｇ．ｉｎｉ」と、「ｃｏｎｆｉｇ＿ｎｅｗ．ｉｎｉ」をメンテナンス作業によって更新・作成されたファイルとし、ユーザ計算機１０００Ｕの差分送受信部１００７Ｕへ送信する。
【０１３２】
ユーザ計算機１０００Ｕの差分送受信部１００７Ｕは、ＶＭマージ部１０１０Ｕを呼び出して、ＶＭのマージを行う。ＶＭマージ部１０１０Ｕの具体的な動作の例は、後述する。
【０１３３】
次に、ユーザデータ判定部１００９Ｕの具体的な動作を説明する。
【０１３４】
＜動作１＞：「ファイル名やファイルの拡張子で判定する」
ユーザデータ判定部１００９Ｕは、判定対象のメタデータからファイル名を取得し、ユーザデータファイルリストにあるか否かを検索する。
例えば、「Ｗｉｎｄｏｗｓ（登録商標）」では、「Ｍｙ  ｄｏｃｕｍｅｎｔｓ」フォルダに多くのユーザデータが記録されるため、「Ｍｙ  ｄｏｃｕｍｅｎｔｓ」をユーザデータファイルリストに記録すれば、大半のアプリケーションが記録するユーザデータを判別することが出来る。また、「ＭＳ  Ｏｆｆｉｃｅ」が記録するユーザデータは、「＊．ｐｐｔ」や「＊．ｘｌｓ」、「＊．ｄｏｃ」（＊は、ワイルドカード（ｗｉｌｄ  ｃａｒｄ））であると決まっているため、それらをユーザデータファイルリストに記録することで、「ＭＳ  Ｏｆｆｉｃｅ」が記録したユーザデータを判定できる。
【０１３５】
＜動作２＞：「ファイルの中身を見て判定する」
例えば、「０？０−？？？？−？？？？」（？は任意の数字１文字）のパターンを検索することによって、携帯電話番号を判定できる。このパターンが含まれるファイルは電話帳であり、ユーザデータであると判定できる。また、東京、神奈川等の地名が多く組まれたファイルは、住所録であり、ユーザデータであると判定できる。
【０１３６】
＜動作３＞：「ユーザＶＭにしか存在しないファイルをユーザデータと見なす」
例えば、メンテナＶＭとユーザ計算機１０００Ｕに「ＭＳ  Ｗｏｒｄ」というアプリケーションがインストールされていれば、「ｗｏｒｄ．ｅｘｅ」は両方のＶＭに存在する。しかし、ユーザデータ、例えば、ｗｏｒｄで作成した「ｐａｔｅｎｔ．ｄｏｃ」は、ユーザＶＭにしか存在しない。
【０１３７】
上記の場合、ユーザＶＭのメタデータのリストは、例えば、
「ｎａｍｅ＝ｗｏｒｄ．ｅｘｅ，  ｈａｓｈ＝１１１１１１１１；  ｎａｍｅ＝ｐａｔｅｎｔ．ｄｏｃ，  ｈａｓｈ＝２２２２２２」
である。
【０１３８】
メンテナＶＭのメタデータのリストは、例えば、
「ｎａｍｅ＝ｗｏｒｄ．ｅｘｅ，  ｈａｓｈ＝１１１１１１１１；」
である。
【０１３９】
２つのリストの差をとると、ユーザＶＭにのみ存在する「ｐａｔｅｎｔ．ｄｏｃ」が抽出されるため、「ｐａｔｅｎｔ．ｄｏｃ」をユーザデータであると見なすことが出来る。
【０１４０】
＜動作４＞：「アプリケーションが読み込むファイルを監視する」
例えば、あるアプリケーションは、「ｃｏｎｆｉｇ．ｉｎｉ」という設定ファイルを持つとする。アプリケーションを起動し、ユーザが操作するまでのアプリケーションのファイル読み込みを監視すると、ｃｏｎｆｉｇ．ｉｎｉの読み込みが観測できる。よって、「ｃｏｎｆｉｇ．ｉｎｉ」を設定ファイルと判定し、ユーザデータファイルリストから削除する。
【０１４１】
しかし、アプリケーションが前回使用していたファイルを自動的に読み込む場合、例えば、「ｕｓｅｒ．ｄａｔ」を自動的に読み込んだとき、「ｕｓｅｒ．ｄａｔ」はユーザデータであるにも関わらず、ユーザデータファイルリストから削除されてしまう。一般的にユーザは、毎回「ｕｓｅｒ．ｄａｔ」を使用するとは限らないため、何度かアプリケーションの起動を監視し、一度でも「ｕｓｅｒ．ｄａｔ」が読み込まれないときは、「ｕｓｅｒ．ｄａｔ」はリストから削除しない。
【０１４２】
アプリケーションの監視は、ＯＳにアプリケーションを監視するエージェントを導入しても良いし、ＶＭＭでアプリケーションを起動するシステムコールの割り込みを検知することによって行っても良い。読み込まれたファイルの監視は、ＯＳ上のエージェントか、仮想ハードディスクを監視することによって行うことができる。
【０１４３】
例えば、「Ｗｉｎｄｏｗｓ（登録商標）」では、「ＳｅｔＷｉｎｄｏｗｓＨｏｏｋＥｘ関数」を用いることで、アプリケーションを起動する「ＣｒｅａｔｅＰｒｏｃｅｓｓ関数」や、ファイルをオープンする「ＣｒｅａｔｅＦｉｌｅ関数」を監視できる。
【０１４４】
例えば、「Ｌｉｎｕｘ（登録商標）」では、プロセスを起動する「ｓｙｓ＿ｅｘｅｃｖｅシステムコール」や、ファイルを開く「ｓｙｓ＿ｏｐｅｎシステムコール」が呼び出されるときに、「ｉｎｔ０ｘ８０」のソフトウェア割り込みが発生するため、ＶＭＭによってソフトウェア割り込みを監視することによって、アプリケーション起動やファイルへのアクセスを監視できる。
【０１４５】
＜動作５＞：「アプリケーションが読み込むファイルのパスを監視する」
例えば、あるアプリケーションは、「ｃ：￥ｃｏｎｆｉｇ」ディレクトリに設定ファイルを複数保存するとする。このアプリの起動時のファイル読み込みを監視すると、「ｃ：￥ｃｏｎｆｉｇ」から数個の設定ファイルを読み込み、自動的もしくはユーザの操作によって、例えば「Ｍｙ  ｄｏｃｕｍｅｎｔｓ」からユーザデータを読み込む。このとき、「ｃ：￥ｃｏｎｆｉｇ」から「Ｍｙ  ｄｏｃｕｍｅｎｔｓ」へディレクトリが変更されたことを検知して、ディレクトリ変更後をユーザデータと判定する。そして、ユーザデータと判定したファイルを、ユーザデータファイルリストに追加する。アプリケーション起動やファイル読み込みの監視は、＜動作４＞と同様の動作で行うことができる。
【０１４６】
次に、ＶＭマージ部１０１０Ｕの具体的な動作を説明する。
【０１４７】
まず、ユーザデータが、メンテナンス作業中に、ユーザ計算機１０００Ｕとメンテナ計算機１０００Ｍで更新された場合を考える。例えば、メンテナンス中に、ユーザが「新規テキストドキュメント．ｔｘｔ」をユーザＶＭに作成したとする。また、メンテナンス中にメンテナがテストのために、「新規テキストドキュメント．ｔｘｔ」を作成したとする。
【０１４８】
ＶＭマージにおいて、「新規テキストドキュメント．ｔｘｔ」はユーザデータ判定部１００９Ｕによって、ユーザデータであると判定されるため、ファイルのコピーは行わない。
【０１４９】
次に、設定ファイルが、メンテナンス作業中にユーザ計算機１０００Ｕとメンテナ計算機１０００Ｍで更新された場合を考える。例えば、メンテナンスを頼んだにもかかわらず、ユーザが設定ファイルを操作した場合等が考えられる。
【０１５０】
予め、ＶＭマージ部１０１０Ｕには、設定ファイルのリストが与えられる。例えば、「＊．ｉｎｉ」、「＊ｃｏｎｆｉｇ」が設定ファイルのリストであったとする。メンテナンス中に、ユーザ計算機１０００Ｕとメンテナ計算機１０００Ｍのファイル「ｃ：￥ｃｏｎｆｉｇ．ｉｎｉ」が更新された場合、ＶＭマージは、設定ファイルのリストを参照し、「ｃ：￥ｃｏｎｆｉｇ．ｉｎｉ」が設定データであると判定し、「ｃ：￥ｃｏｎｆｉｇ．ｉｎｉ」は必ず、ユーザ計算機１０００ＵのＶＭへコピーされる。
【０１５１】
次に、ライブラリが、メンテナンス作業中に、ユーザ計算機１０００Ｕとメンテナ計算機１０００Ｍで更新された場合を考える。例えば、メンテナンス作業中にユーザがあるアプリケーションをインストールし、そのアプリケーションが既存のライブラリを更新する場合等が考えられる。
【０１５２】
ＶＭメンテナンス中に、ユーザがライブラリＡを更新し、「Ａ’」（バージョン１．１）を導入し、メンテナが「Ａ”」（バージョン１．２）を導入した状況を考える。ＶＭマージ部１０１０Ｕは、「Ａ’」と「Ａ”」のバージョンを比較し、「Ａ”」をユーザ計算機１０００ＵのＶＭへコピーする。バージョン情報は、例えば「Ｗｉｎｄｏｗｓ（登録商標）」では、「ＧｅｔＦｉｌｅＶｅｒｓｉｏｎＩｎｆｏ関数」を用いて取得することができる。
【０１５３】
最後に、本発明の特徴について、以下に列挙する。
【０１５４】
ユーザ計算機が、ファイル選択装置である場合、このファイル選択装置は、仮想計算機で利用するソフトウェアのファイルをユーザの代わりに更新するソフトウェア更新サービスへ、送るファイルを選択する装置であって、仮想計算機で利用するソフトウェアのファイルがユーザが作成したものかどうか判定する判定手段と、作成したものではないと判定されたファイルをソフトウェア更新サービスに送るファイルとして選択する選択手段とを備えることを特徴とする。ここでは、「ソフトウェア更新サービス」とは、本発明におけるメンテナ計算機のような、仮想計算機で利用するソフトウェアのファイルをユーザの代わりに更新する装置を示す。
【０１５５】
また、ユーザ計算機が、ファイル選択装置である場合、このファイル選択装置は、ソフトウェア更新サービスに仮想計算機の第１のファイルを提出するためのファイル選択装置であって、第１のファイルがユーザが作成したデータであるか判定し、ソフトウェア更新サービスで用いられる仮想計算機に含まれる第２のファイルと内容が同一かどうか判定する判定手段と、ユーザが作成したデータではなく第２のファイルでもないと判定されたファイルを選択して出力する選択手段とを備えることを特徴とする。
【０１５６】
なお、判定手段は、ファイル名や拡張子のリストを持ち、リストに記載されているファイルを、ユーザが作成したデータと判定することを特徴とする。
【０１５７】
また、判定手段は、ファイルが電話番号や住所等の個人情報を含むか否かを検索し、個人情報が含まれているファイルを、ユーザが作成したデータと判定することを特徴とする。
【０１５８】
また、判定手段は、仮想計算機とソフトウェア更新サービスで用いられる仮想計算機のファイルのリストを用いて、非共通なファイルを、ユーザが作成したデータと判定することを特徴とする。
【０１５９】
また、判定手段は、アプリケーションの起動とファイル読み込みを監視し、アプリケーションの起動から完了までにアプリケーションに読み込まれなかったファイルを、ユーザが作成したデータと判定することを特徴とする。
【０１６０】
また、判定手段は、アプリケーションの起動と、アプリケーションが読み込むファイルのディレクトリを監視し、ディレクトリ変更後に読み込まれたファイルを、ユーザが作成したデータと判定することを特徴とする。
【０１６１】
更に、判定手段は、上記の各動作のうち、少なくとも２つ以上を実行し、各動作の判定結果を組み合わせ、ユーザが作成したデータであるか否かを判定することを特徴とする。
【０１６２】
以上のように、本発明のメンテナンスシステムは、ユーザの使用する計算機（ユーザ計算機１０００Ｕ）とメンテナの使用する計算機（メンテナ計算機１０００Ｍ）の２台の計算機から構成される。
【０１６３】
ユーザ計算機１０００Ｕは、ＶＭコピー生成部１００８Ｕと、ユーザデータ判定部１００９Ｕと、メタデータ取得部１００６Ｕと、差分送受信部１００７Ｕとを備える。メンテナ計算機１０００Ｍは、メタデータ取得部１００６Ｕと、差分送受信部１００７Ｕとを備える。
【０１６４】
ＶＭコピー生成部１００８Ｕは、ユーザデータ判定部１００９Ｕを呼び出し、ユーザデータをフィルタリングすることによって、ユーザデータが含まれないコピーＶＭを生成する。次に、差分送信部１００７Ｕは、コピーＶＭのメタデータのリストをメタデータ取得部１００６Ｕによって取得し、メンテナ計算機１０００ＭのＶＭ（メンテナＶＭ）のメタデータのリストをメタデータ取得部１００６Ｍによって取得する。そして、差分送信部１００７Ｕは、コピーＶＭとメンテナＶＭの差分をメンテナ計算機１０００Ｍに送信する。差分送信部１００７Ｍは、受信した差分とメンテナＶＭのファイルから、コピーＶＭを構築する。メンテナ計算機１０００Ｍにおいて、コピーＶＭを起動し、メンテナンス作業が行われた後、差分送受信部１００７Ｍはメンテナンス作業によって更新されたファイルを、ユーザの計算機へ送信する。
【０１６５】
メンテナ計算機１０００Ｍに送信されるコピーＶＭには、ユーザデータが含まれていないため、本発明の目的を達成することができる。
【０１６６】
ここでは、ＮＩＣを用いて通信を行うことによって、メタデータや差分をやり取りする事例について説明しているが、実際には、ＵＳＢメモリやＤＶＤ等の記憶媒体にメタデータや差分を記憶し、当該記憶媒体を介して、メタデータや差分をやり取りすることも可能である。この場合、ＮＩＣの代わりに、ＵＳＢポート等の接続口（コネクタ）やＤＶＤドライブ等の読取装置が使用される。
【０１６７】
本発明によれば、メンテナンス作業時に、ユーザデータの流出の可能性の無いメンテナンスシステムを提供できる。その理由は、ユーザＶＭのファイルが、ユーザデータか否かを判定して、ユーザデータ以外をコピーすることでユーザデータが含まれないＶＭ生成し、メンテナ計算機に渡すためである。
【０１６８】
本発明のメンテナンスシステムは、遠隔からの計算機メンテナンスに適用できる。
【０１６９】
以上、本発明の実施形態を詳述してきたが、実際には上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１７０】
この出願は、２００８年１１月６日に出願された特許出願番号２００８−２８５４４３号の日本特許出願に基づいており、その出願による優先権の利益を主張し、その出願の開示は、引用することにより、そっくりそのままここに組み込まれている。
【図１】
0005483116.tif 000002
【図２】
0005483116.tif 000003
【図３】
0005483116.tif 000004
【図４】
0005483116.tif 000005
【図５】
0005483116.tif 000006
【図６】
0005483116.tif 000007
【図７】
0005483116.tif 000008
【図８】
0005483116.tif 000009