(57)【要約】【課題】バックアップ先の装置に応じたバックアップを効率的に取得すること。【解決手段】記憶部１ａは、バックアップ対象のファイルに対する改変内容を示す改変情報Ｔ１を記憶する。演算部１ｂは、第１のファイルシステムＦＳ１により管理される複数のファイルを維持して複数のファイルに対する差分のファイルを管理する第２のファイルシステムＦＳ２を用いて、改変情報Ｔ１に応じた差分のファイルを生成する。演算部１ｂは、複数のファイルに対して差分のファイルを適用したファイル群ｆ３を、バックアップ先装置２に送信する。【選択図】図１
2018025849.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
バックアップ対象のファイルに対する改変内容を示す改変情報を取得し、
第１のファイルシステムにより管理される複数のファイルを維持して前記複数のファイルに対する差分のファイルを管理する第２のファイルシステムを用いて、前記改変情報に応じた前記差分のファイルを生成し、
前記複数のファイルに対して前記差分のファイルを適用したファイル群を、バックアップ先の装置に送信する、
処理を実行させるバックアッププログラム。
【請求項２】
前記差分のファイルの生成では、複数の前記差分のファイルを生成している間の前記第１のファイルシステムによるファイル更新の有無に応じて、生成した前記複数の前記差分のファイルの間に不整合があるか否かを判定し、前記不整合があると判定すると、前記複数の前記差分のファイルを再生成する、請求項１記載のバックアッププログラム。
【請求項３】
前記差分のファイルの生成では、前記改変情報による改変対象の前記複数のファイルを複数のグループに区分し、グループ毎に順番に前記複数の前記差分のファイルを生成し、前記不整合があるか否かをグループ単位に判定し、前記不整合があると判定すると、グループ単位に前記複数の前記差分のファイルを再生成する、請求項２記載のバックアッププログラム。
【請求項４】
前記改変情報は、前記改変内容としてファイル追加およびファイル更新の情報を含み、
前記差分のファイルの生成では、前記複数のファイルに対する前記ファイル追加および前記ファイル更新に応じた前記差分のファイルを生成する、請求項１乃至３の何れか１項に記載のバックアッププログラム。
【請求項５】
前記ファイル追加は、前記バックアップ先の装置において使用されるデバイスドライバのインストールを含む、請求項４記載のバックアッププログラム。
【請求項６】
バックアップ対象のファイルに対する改変内容を示す改変情報を記憶する記憶部と、
第１のファイルシステムにより管理される複数のファイルを維持して前記複数のファイルに対する差分のファイルを管理する第２のファイルシステムを用いて、前記改変情報に応じた前記差分のファイルを生成し、前記複数のファイルに対して前記差分のファイルを適用したファイル群を、バックアップ先の装置に送信する演算部と、
を有するバックアップ装置。
【請求項７】
コンピュータが、
バックアップ対象のファイルに対する改変内容を示す改変情報を取得し、
第１のファイルシステムにより管理される複数のファイルを維持して前記複数のファイルに対する差分のファイルを管理する第２のファイルシステムを用いて、前記改変情報に応じた前記差分のファイルを生成し、
前記複数のファイルに対して前記差分のファイルを適用したファイル群を、バックアップ先の装置に送信する、
バックアップ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はバックアッププログラム、バックアップ装置およびバックアップ方法に関する。
【背景技術】
【０００２】
情報処理の分野では、情報処理装置により保持されているオペレーティングシステム（ＯＳ：Operating System）やアプリケーションなどのソフトウェアのデータを含むバックアップを取得することがある。例えば、ある時点におけるバックアップを取得しておくことで、情報処理装置に障害が発生した場合に、バックアップ取得時の状態を復元できる。
【０００３】
例えば、クラスタシステムを用いたディザスタリカバリ（ＤＲ：Disaster Recovery、災害復旧ともいう）の方法が提案されている。この提案では、クラスタシステムは、第１のクラスタノード上で実行されるアプリケーションの構成データをストレージへコピーする。クラスタシステムは、第１のクラスタノードの障害を検出すると、第２のクラスタノードにアプリケーションの構成データを復元し、構成データに従って第２のクラスタノード上でアプリケーションを実行する。
【０００４】
また、自社が保有するデータセンタに対する被災時用のバックアップサイトを、クラウドコンピューティングによる仮想データセンタを利用して構築する提案もある。大規模災害の際には、バックアップサイトである仮想データセンタにおいて仮想サーバを起動し、平常時に同期させておいたデータに基づいてサービスの提供を再開する。
【０００５】
また、マスタサイトのディスク装置が、上位装置により更新された領域を複数の差分テーブルによって管理し、差分テーブルに書き込まれた差分情報に基づいて、マスタサイトの記憶内容を、災害対策サイトに送信する遠隔コピーシステムの提案もある。
【０００６】
なお、端末が、パッケージの元となる版および版間の差分を保存するディレクトリをマウントポイント上にマウントして目的の版のパッケージを構成する提案がある。この提案では、あるディレクトリ上に、複数のディレクトリを層構造を持ちながらマウントする機能を有するファイルシステムを用いる。当該ファイルシステムの例として、ＵｎｉｏｎＦＳ（File System）が挙げられている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１３−５２０７４６号公報
【特許文献２】特開２０１１−１５０４５９号公報
【特許文献３】特開２０１０−２４４２０９号公報
【特許文献４】特開２００８−１６５３７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記のように、災害時などに備えて、第１の装置のバックアップデータを定期的に取得し、遠隔地の第２の装置によりバックアップデータを保管することがある。第１の装置の障害時には、第２の装置は、第１の装置に対応する仮想マシンやＯＳなどのソフトウェアをバックアップデータから起動し、第１の装置の機能を代替し得る。
【０００９】
ところが、第１の装置と第２の装置とでは、ハードウェアや仮想マシンの実行環境などが必ずしも同じとは限らない。このため、バックアップデータでは、デバイスドライバなどが不足し、第２の装置で仮想マシンやソフトウェアを適切に起動できないことがある。
【００１０】
これに対し、第１の装置の障害時、第２の装置において、バックアップデータからＯＳを起動した後に、第２の装置の実行環境に合わせたドライバなどをインストールすることが考えられる。しかし、このような作業はシステム復旧の遅延要因になる。また、バックアップ取得前に、第１の装置の業務運用を中断し、第２の装置用のドライバなどを第１の装置に追加した上で、バックアップ取得することも考えられる。しかし、この場合は、第１の装置をバックアップ取得前の状態に戻す手間や、運用中断といった問題が生じる。
【００１１】
１つの側面では、本発明は、バックアップ先の装置に応じたバックアップを効率的に取得可能にすることを目的とする。
【課題を解決するための手段】
【００１２】
１つの態様では、バックアッププログラムが提供される。このバックアッププログラムは、コンピュータに、バックアップ対象のファイルに対する改変内容を示す改変情報を取得し、第１のファイルシステムにより管理される複数のファイルを維持して複数のファイルに対する差分のファイルを管理する第２のファイルシステムを用いて、改変情報に応じた差分のファイルを生成し、複数のファイルに対して差分のファイルを適用したファイル群を、バックアップ先の装置に送信する、処理を実行させる。
【発明の効果】
【００１３】
１つの側面では、バックアップ先の装置に応じたバックアップを効率的に取得できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のバックアップ装置を示す図である。
【図２】第１の実施の形態の改変情報の例を示す図である。
【図３】第２の実施の形態の情報処理システムの例を示す図である。
【図４】第２の実施の形態のサーバのハードウェア例を示す図である。
【図５】バックアップ先サーバによる仮想マシン起動の問題の例を示す図である。
【図６】第２の実施の形態のソフトウェア例を示す図である。
【図７】ＵｎｉｏｎＦＳによるファイル操作例を示す図である。
【図８】ＵｎｉｏｎＦＳによるファイル操作の具体例（その１）を示す図である。
【図９】ＵｎｉｏｎＦＳによるファイル操作の具体例（その２）を示す図である。
【図１０】第２の実施の形態のパラメタファイルの例を示す図である。
【図１１】第２の実施の形態の改変情報テーブルパターンの例を示す図である。
【図１２】第２の実施の形態の改変情報テーブルの例を示す図である。
【図１３】第２の実施の形態のバックアップ例を示すフローチャートである。
【図１４】第２の実施の形態のシステム復元の例を示す図である。
【図１５】上位レイヤ内の２つのファイルで不整合が生じる例を示す図である。
【図１６】ファイルの不整合の判断の具体例を示す図である。
【図１７】第３の実施の形態の改変情報テーブルの例を示す図である。
【図１８】第３の実施の形態のバックアップ例を示すフローチャートである。
【図１９】第３の実施の形態のファイル改変例（その１）を示す図である。
【図２０】第３の実施の形態のファイル改変例（その２）を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のバックアップ装置を示す図である。バックアップ装置１は、ネットワークを介してバックアップ先装置２と接続されている。バックアップ装置１は、バックアップ装置１が保持するファイルのバックアップを、バックアップ先装置２に送信する。バックアップ装置１の被災時などには、バックアップ先装置２においてバックアップデータ（例えば、仮想ディスクイメージ）に基づいて、バックアップ装置１に相当する仮想マシンを起動し、システムを復旧することが考えられる。しかし、この場合、バックアップ先装置２で仮想マシンを適切に起動するためには、バックアップデータに含まれるデバイスドライバ、ドライバ起動用の設定情報およびネットワーク設定情報などがバックアップ先装置２の環境に適合していることが求められる。そこで、バックアップ装置１は、バックアップ先装置２に応じたバックアップを取得する機能を提供する。バックアップ装置１は、記憶部１ａおよび演算部１ｂを有する。
【００１６】
記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｂはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。記憶部１ａは、バックアップ装置１におけるファイルの保存に用いられてもよい。あるいは、バックアップ装置１は、ファイルを保存するために、記憶部１ａとは別個の記憶装置（図１では図示を省略している）を内蔵してもよい。また、ファイル保存用の記憶装置はバックアップ装置１に外付けされてもよい。
【００１７】
バックアップ装置１は、第１のファイルシステムＦＳ１および第２のファイルシステムＦＳ２を利用することができる。第１のファイルシステムＦＳ１は、バックアップ装置１における通常のソフトウェア（バックアップ処理を行うエージェントソフトウェア以外のソフトウェア）のファイルアクセスに用いられる。第２のファイルシステムＦＳ２は、バックアップ装置１のバックアップ処理を行うエージェントソフトウェア（以下、単にエージェントと称することがある）のファイルアクセスに用いられる。演算部１ｂは、記憶部１ａに記憶された所定のプログラムを実行することで、エージェントの機能を発揮する。
【００１８】
第２のファイルシステムＦＳ２は、第１のファイルシステムＦＳ１により管理される複数のファイルを維持して複数のファイルに対する差分のファイルを管理する。このような機能を提供する第２のファイルシステムＦＳ２の一例として、ＵｎｉｏｎＦＳが考えられる。
【００１９】
第１のファイルシステムＦＳ１によりアクセスされるファイルが存在する階層を第１のレイヤＬ１とする。第２のファイルシステムＦＳ２によりアクセスされるファイルが存在する階層を第２のレイヤＬ２とする。第２のレイヤＬ２は、第１のレイヤＬ１よりも上位のレイヤである。
【００２０】
演算部１ｂは、第２のファイルシステムＦＳ２を用いることで、バックアップ装置１におけるファイルの変更を上位レイヤである第２のレイヤＬ２で行える。具体的には、演算部１ｂは、既存のファイルシステムを下位レイヤ（第１のレイヤＬ１）とし、新たなファイルシステムを上位レイヤ（第２のレイヤＬ２）とし、両ファイルシステムを重ね合わせたファイルシステムを所定のマウントポイントにマウントする。当該マウントポイントの配下は、ファイルの実体を含まず、上位レイヤおよび下位レイヤのファイルを透過的に参照可能とする統合レイヤＬ３を形成する。演算部１ｂは、当該マウントポイントに対してファイルの改変を行うことで、上位レイヤにのみ改変結果を反映させる。バックアップ用のエージェントは統合レイヤＬ３に対応するマウントポイント配下でファイル操作を行う。当該エージェント以外のソフトウェアのプロセスは既存のファイルシステム（第１のファイルシステムＦＳ１）におけるルートディレクトリ配下でファイル操作を行う。
【００２１】
第１のレイヤＬ１はデータＡ，Ｂ，Ｄを含むとする。この場合、演算部１ｂは、第２のファイルシステムＦＳ２を用いて、第２のレイヤＬ２および統合レイヤＬ３を作成する。演算部１ｂは、統合レイヤＬ３、および、第２のレイヤＬ２を介して第１のレイヤＬ１のデータＡ，Ｂ，Ｄにアクセスできる。演算部１ｂは、統合レイヤＬ３を介して、データＡをデータＡ’に修正（更新）する。修正結果は、第２のレイヤＬ２に適用され、第１のレイヤＬ１に適用されない。また、演算部１ｂは、統合レイヤＬ３を介して、データＢを追加する。追加結果は、第２のレイヤＬ２に適用され、第１のレイヤＬ１に適用されない。また、演算部１ｂは、統合レイヤＬ３を介して、データＣを削除する。削除結果は、第２のレイヤＬ２に適用され、第１のレイヤＬ１に適用されない。演算部１ｂは、統合レイヤＬ３を介して、第１のレイヤＬ１における変更のないデータＤを参照することもできる。
【００２２】
演算部１ｂは、改変情報Ｔ１を取得し、記憶部１ａに格納する。改変情報Ｔ１は、バックアップ装置１におけるバックアップ対象のファイルに対する改変内容を示す情報である。改変内容は、例えば、システム起動に用いられるドライバファイルの追加やドライバファイルの読み込みに用いられる設定ファイルの修正などである。また、改変内容は、バックアップ先装置２が属するネットワークに接続するための設定ファイルの修正（各種のアドレス情報の変更）なども含み得る。演算部１ｂは、改変情報Ｔ１のユーザによる入力を許容してもよい。演算部１ｂは、改変情報Ｔ１の元となる情報（例えば、改変用のパラメタなどを定めた情報）のユーザによる入力を受け付け、当該情報に基づいて改変情報Ｔ１を作成し、記憶部１ａに格納してもよい。
【００２３】
演算部１ｂは、バックアップ取得の際、第２のファイルシステムＦＳ２を用いて、改変情報Ｔ１に応じた差分のファイルを生成する。例えば、演算部１ｂは、バックアップ対象の元ファイル群ｆ１に対し、改変情報Ｔ１に基づいて、差分ファイル群ｆ２を生成する。差分ファイル群ｆ２は、第２のレイヤＬ２に属する。差分ファイル群ｆ２は、元ファイル群ｆ１に含まれるファイルに対する変更後のファイル、追加対象のファイル、および、削除対象のファイルの情報を含み得る。
【００２４】
演算部１ｂは、複数のファイル（元ファイル群ｆ１）に対して差分のファイルを適用したファイル群ｆ３を、バックアップ先装置２に送信する。例えば、演算部１ｂは、元ファイル群ｆ１に含まれるファイルを、差分ファイル群ｆ２に含まれる同名のファイルに置換する。また、演算部１ｂは、元ファイル群ｆ１にはないが差分ファイル群ｆ２に含まれるファイルを、元ファイル群ｆ１に追加する。あるいは、演算部１ｂは、元ファイル群ｆ１にはないが差分ファイル群ｆ２において削除対象として管理されているファイルを、元ファイル群ｆ１から削除する。こうして、演算部１ｂは、元ファイル群ｆ１に対して差分のファイルを適用したファイル群ｆ３を生成する（元ファイル群ｆ１は元のまま残る）。
【００２５】
バックアップ先装置２は、ファイル群ｆ３を、バックアップ先装置２が備える記憶装置により保存する。バックアップ先装置２は、ファイル群ｆ３を仮想マシンの起動に用いられる仮想ディスクイメージの形式で保存することもできる。
【００２６】
ここで、演算部１ｂが行うファイルの改変内容の具体例を説明する。
図２は、第１の実施の形態の改変情報の例を示す図である。改変情報Ｔ１は、改変対象のファイルのパス、改変方法および改変用パラメタの項目を含む。改変対象のファイルのパスの項目には、改変対象のファイルのパスが登録される。改変方法の項目には、改変の方法が登録される。改変用パラメタの項目には、具体的な改変内容が登録される。
【００２７】
例えば、改変情報Ｔ１には、改変対象のファイルのパスが“／ｅｔｃ／ｈｏｓｔｓ”、改変方法が“修正”、改変用パラメタが“ＲＥＰＬＡＣＥ  ｓ／１９２．０．０．１／１０．０．０．１／ｇ”という情報が登録される。これは、第２のファイルシステムＦＳ２により、パス“／ｅｔｃ／ｈｏｓｔｓ”における“１９２．０．０．１”のテキスト情報を、“１０．０．０．１”のテキスト情報に置換することで、当該“ｈｏｓｔｓ”ファイルを修正することを示す。改変情報Ｔ１には、改変方法“修正”に関するレコードとして、パス“／ｅｔｃ／ｍｏｄｐｒｏｂｅ．ｃｏｎｆ”で示されるファイルに、“ａｌｉａｓ  ｓｃｓｉ＿ｈｏｓｔａｄａｐｔｅｒ  ｍｐｔｂａｓｅ”というテキスト情報を追加する例も示されている。これらの例は、ネットワーク設定の変更や周辺機器との接続設定の変更の一例に相当する。
【００２８】
また、改変情報Ｔ１には、改変対象のファイルのパスが“／ｌｉｂ／ｍｏｄｕｌｅｓ／ｖｉｏｓｔｏｒ”、改変方法が“追加”、改変用パラメタが“ｓｏｕｒｃｅ  ｆｉｌｅ：／ｔｍｐ／ｖｉｏｓｔｏｒ”という情報が登録される。これは、第２のファイルシステムＦＳ２により、パス“／ｔｍｐ／ｖｉｏｓｔｏｒ”で示されるファイルを複製して、パス“／ｌｉｂ／ｍｏｄｕｌｅｓ／ｖｉｏｓｔｏｒ”で示されるファイルを追加することを示す。例えば、ドライバ起動用の設定ファイルを追加してもよい。
【００２９】
また、改変情報Ｔ１には、改変対象のファイルのパスが“／ｖａｒ／ｌｏｇ／ｄｍｅｓｇ”、改変方法が“削除”、改変用パラメタが設定なし（設定なしをハイフン記号“−”で表している）という情報が登録される。これは、第２のファイルシステムＦＳ２により、パス“／ｖａｒ／ｌｏｇ／ｄｍｅｓｇ”で示されるファイルを削除することを示す。
【００３０】
更に、改変情報Ｔ１には、改変対象のファイルのパスが設定なし“−”、改変方法が“インストール”、改変用パラメタが“ｉｎｓｔａｌｌｅｒ：／ｔｍｐ／ｉｎｓｔａｌｌ．ｓｈ”という情報が登録される。これは、第２のファイルシステムＦＳ２により、パス“／ｔｍｐ／ｉｎｓｔａｌｌ．ｓｈ”で示されるインストーラファイルを実行して、デバイスドライバなどの所定のパッケージのインストールを行うことを示す。
【００３１】
演算部１ｂは、改変情報Ｔ１に基づいて、元ファイル群ｆ１に含まれるファイルを改変することで、差分ファイル群ｆ２を生成する。このとき、演算部１ｂは、第２のファイルシステムＦＳ２を用いて改変を行う。これにより、バックアップ装置１は、バックアップ先装置２に応じたバックアップを効率的に取得できる。特に、バックアップ先装置２でのシステム起動用のドライバなどを予め組み込んだ状態でバックアップデータを作成できる。
【００３２】
より具体的には、演算部１ｂによって実行されるバックアップ用のエージェントは、上位レイヤ（第２のレイヤＬ２）に対してのみファイルの変更を行うため、下位レイヤ（第１のレイヤＬ１）に変更の影響を及ぼさない。すなわち、演算部１ｂは、バックアップ装置１で動作している別のアプリケーションの既存プロセスからは独立した領域で当該改変を行うため、ファイルの改変結果が既存プロセスの動作に影響を与えることはない。エージェント以外のプロセスは、上位レイヤ（第２のレイヤＬ２）におけるファイル改変の影響を受けることなく動作を継続でき、運用を中断せずに済む。また、演算部１ｂは、上位レイヤ（第２のレイヤＬ２）を削除するだけで、第１のファイルシステムＦＳ１のみを用いた運用に容易に戻せる。
【００３３】
そして、バックアップ装置１の障害発生時には、バックアップ先装置２において代替システムを稼働させるための改変作業が完了している。このため、バックアップ先装置２においてファイル群ｆ３を用いて仮想マシンなどを起動させることで、システムを復旧させることができる。したがって、復旧時にバックアップデータを人手で改変しなくてもよく、システムを迅速に復旧させることができる。
【００３４】
次に、バックアップ装置１の一例として、サーバコンピュータ（単にサーバと称することがある）を例示して、上記のバックアップ方法をより詳細に説明する。
［第２の実施の形態］
図３は、第２の実施の形態の情報処理システムの例を示す図である。第２の実施の形態の情報処理システムは、バックアップ元サーバ１００およびバックアップ先サーバ２００を含む。バックアップ元サーバ１００およびバックアップ先サーバ２００は、ネットワーク１０に接続されている。ネットワーク１０は、例えば、ＷＡＮ（Wide Area Network）やインターネットなどの広域ネットワークである。ネットワーク１０は、ＬＡＮ（Local Area Network）でもよい。
【００３５】
バックアップ元サーバ１００は、ユーザの業務処理に用いられるサーバコンピュータである。バックアップ元サーバ１００は、仮想マシンを動作させ、仮想マシン上で、業務サービスを提供するアプリケーションを実行する。バックアップ元サーバ１００は、仮想マシンのバックアップを取得し、バックアップ先サーバ２００に送信する。
【００３６】
バックアップ先サーバ２００は、バックアップ元サーバ１００により生成されたバックアップデータを受信し、保存するサーバコンピュータである。バックアップ先サーバ２００は、仮想マシンのバックアップを、仮想ディスクイメージの形式で取得する。仮想ディスクイメージは、仮想マシンが利用する補助記憶装置のイメージファイルであり、内部に複数のファイルを含む。
【００３７】
バックアップ先サーバ２００は、バックアップ元サーバ１００が存在する地域から離れた地域のデータセンタ内に設けられる。バックアップ元サーバ１００が被災した場合に、バックアップ先サーバ２００がバックアップ元サーバ１００と同じ災害の被害を受けないようにするためである。
【００３８】
バックアップ先サーバ２００も、仮想マシンを動作させることができる。バックアップ先サーバ２００は、被災などによりバックアップ元サーバ１００で障害が起きたときに、バックアップデータに基づいて、バックアップ元サーバ１００の仮想マシン実行を代替し、システム運用を継続する。すなわち、バックアップ先サーバ２００は、バックアップ元サーバ１００に対するディザスタリカバリを担うサーバである。
【００３９】
図４は、第２の実施の形態のサーバのハードウェア例を示す図である。バックアップ元サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。各ユニットはバックアップ元サーバ１００のバスに接続されている。バックアップ先サーバ２００もバックアップ元サーバ１００と同様のユニットを用いて実現できる。
【００４０】
プロセッサ１０１は、バックアップ元サーバ１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４１】
ＲＡＭ１０２は、バックアップ元サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００４２】
ＨＤＤ１０３は、バックアップ元サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。バックアップ元サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００４３】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、バックアップ元サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４４】
入力信号処理部１０５は、バックアップ元サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４５】
媒体リーダ１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４６】
通信インタフェース１０７は、ネットワーク１０を介して他の装置と通信を行う。通信インタフェース１０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４７】
ここで、バックアップ先サーバ２００において生じ得る仮想マシン起動の問題を例示する。
図５は、バックアップ先サーバによる仮想マシン起動の問題の例を示す図である。バックアップ元サーバ１００は、ハードウェアＨ１（図４で例示したハードウェア）を有する。また、バックアップ元サーバ１００は、ハイパーバイザＶ１および仮想マシンＭ１を実行する。ハイパーバイザＶ１は、ハードウェアＨ１に含まれるプロセッサ１０１やＲＡＭ１０２などの演算のリソースを仮想マシンＭ１に割り振る。
【００４８】
バックアップ先サーバ２００も、バックアップ元サーバ１００と同様に、ハードウェアＨ２を有する。また、バックアップ先サーバ２００は、ハイパーバイザＶ２を実行する。ハイパーバイザＶ２は、ハードウェアＨ２に含まれるプロセッサやメモリなどの演算のリソースを、バックアップ先サーバ２００上で動作する仮想マシンに割り振る。
【００４９】
ここで、ハイパーバイザＶ１，Ｖ２は、必ずしも同じ実行環境を提供するとは限らない。例えば、ハイパーバイザＶ１が提供する仮想デバイスを利用するためのデバイスドライバと、ハイパーバイザＶ２が提供する仮想デバイスを利用するためのデバイスドライバとは異なる。また、バックアップ先サーバ２００上の仮想マシンが利用可能なネットワークと、バックアップ元サーバ１００上の仮想マシンが利用可能なネットワークとは異なる。
【００５０】
バックアップの取得方法として、バックアップ元サーバ１００からバックアップ先サーバ２００に対して、仮想マシンＭ１におけるバックアップ対象ファイルをそのまま送信し、バックアップすることが考えられる。この場合、バックアップ先サーバ２００は、仮想マシンＭ１の仮想ディスクイメージＤ１をバックアップとして保管する。ハイパーバイザＶ２は、バックアップ元サーバ１００の障害時に、仮想ディスクイメージＤ１から仮想マシンＭ１の起動を試みる。ところが、仮想ディスクイメージＤ１に含まれるデバイスドライバやネットワーク設定情報などの各ファイルは、バックアップ先サーバ２００上での実行環境に適合していない。したがって、仮想マシンＭ１は、バックアップ先サーバ２００上では起動不可となる。
【００５１】
そこで、バックアップ元サーバ１００は、バックアップ先サーバ２００の実行環境に合わせて、バックアップ対象のファイルに含まれるデバイスドライバやネットワーク設定情報などの各ファイルを予め改変する機能を提供する。
【００５２】
図６は、第２の実施の形態のソフトウェア例を示す図である。バックアップ元サーバ１００は、記憶部１１０、ファイルシステム１２０、ユニオンファイルシステム（ＵｎｉｏｎＦＳ）１３０およびエージェント１４０を有する。
【００５３】
記憶部１１０は、ＲＡＭ１０２やＨＤＤ１０３に確保された記憶領域を用いて実現される。ファイルシステム１２０、ＵｎｉｏｎＦＳ１３０およびエージェント１４０に相当する機能は、ＲＡＭ１０２に記憶されたプログラムをプロセッサ１０１により実行することで実現される。ファイルシステム１２０、ＵｎｉｏｎＦＳ１３０およびエージェント１４０は、仮想マシンＭ１を用いて実現される。
【００５４】
記憶部１１０は、仮想マシンＭ１におけるＯＳ（例えば、Ｌｉｎｕｘ（登録商標）やＵｎｉｘ（登録商標）など）や業務アプリケーションにより用いられる各種のファイルを記憶する。ＯＳによって利用されるファイルは、デバイスドライバやネットワーク設定情報を含む。ここで、仮想マシンＭ１では、ファイルシステム１２０におけるルートディレクトリ（“／”）配下のファイルがバックアップ対象となる。バックアップ対象の元のファイル群を、「元ファイル群」と称する。一方、後述するエージェント１４０により作成された元ファイル群に対する差分のファイル群を「差分ファイル群」と称する。
【００５５】
ファイルシステム１２０は、ＯＳや業務アプリケーションなどの通常のプロセス（後述するバックアップ用のエージェント１４０以外のプロセス）によるファイルアクセスに用いられるファイルシステムである。ファイルシステム１２０としては、ｅｘｔ（extended file system）３やｅｘｔ４などが考えられる。
【００５６】
ＵｎｉｏｎＦＳ１３０は、エージェント１４０によるファイルアクセスに用いられるファイルシステムである。ＵｎｉｏｎＦＳ１３０は、ユニオンマウント（union mount）の機能を提供するファイルシステムサービスであるということもできる。ＵｎｉｏｎＦＳ１３０は、１つのマウントポイントに複数のディレクトリを重ねてマウントし、マウントポイントに相当するディレクトリ配下で、当該複数のディレクトリのファイルを透過的に利用可能とする。ＵｎｉｏｎＦＳ１３０の機能を提供するパッケージとしては、例えば、ＯｖｅｒｌａｙＦＳ、Ｂｔｒｆｓ（B-tree file system）、ｕｎｉｏｎｆｓ−ｆｕｓｅおよびＡｕＦＳ（Advanced multi layered unification File System）などが挙げられる。ＵｎｉｏｎＦＳ１３０の機能により、エージェント１４０は、他のプロセスとは独立した名前空間を利用可能となる。
【００５７】
エージェント１４０は、バックアップ先サーバ２００と連携して、仮想マシンＭ１のバックアップを取得する。エージェント１４０は、改変情報生成部１４１、差分ファイル生成部１４２および送信処理部１４３を有する。
【００５８】
改変情報生成部１４１は、ユーザによるパラメタファイルの入力を受け付ける。パラメタファイルは、ファイルに関する具体的な改変内容を記述したファイルである。改変情報生成部１４１は、記憶部１１０に記憶された改変情報テーブルパターンとパラメタファイルとに基づいて改変情報テーブルを生成し、記憶部１１０に格納する。
【００５９】
差分ファイル生成部１４２は、仮想マシンＭ１のバックアップを取得する際に、記憶部１１０に記憶された改変情報テーブルに基づいて、元ファイル群Ｄ１１に対する差分ファイル群Ｄ１２を生成する。差分ファイル生成部１４２は、差分ファイル群Ｄ１２の生成に、ＵｎｉｏｎＦＳ１３０の機能を用いる。
【００６０】
送信処理部１４３は、ＵｎｉｏｎＦＳ１３０を用いて、元ファイル群Ｄ１１に対して差分ファイル群Ｄ１２を適用したファイル群を、仮想マシンＭ１のバックアップデータとして、バックアップ先サーバ２００に送信する。
【００６１】
バックアップ先サーバ２００は、記憶部２１０、バックアップ受信部２２０および仮想マシン起動部２３０を有する。記憶部２１０は、バックアップ先サーバ２００が備えるＲＡＭやＨＤＤに確保された記憶領域を用いて実現される。バックアップ受信部２２０および仮想マシン起動部２３０は、バックアップ先サーバ２００が備えるプロセッサが、当該ＲＡＭに記憶されたプログラムを実行することで実現される。
【００６２】
記憶部２１０は、バックアップ元サーバ１００から受信したバックアップデータを記憶する。
バックアップ受信部２２０は、バックアップ元サーバ１００により送信されたファイル群を受信し、受信したファイル群により仮想ディスクイメージＤ２を作成して、記憶部２１０に格納する。
【００６３】
仮想マシン起動部２３０は、バックアップ元サーバ１００の障害時に、記憶部２１０に記憶された仮想ディスクイメージＤ２に基づいて、バックアップ先サーバ２００上で仮想マシンＭ１を起動する。仮想マシン起動部２３０は、ハイパーバイザＶ２の機能の一部でもよい。
【００６４】
次に、ＵｎｉｏｎＦＳ１３０によるファイル操作例を説明する。
図７は、ＵｎｉｏｎＦＳによるファイル操作例を示す図である。ＵｎｉｏｎＦＳ１３０では、下位（Ｌｏｗｅｒ）レイヤＬ１０および上位（Ｕｐｐｅｒ）レイヤＬ２０の２つの階層によりファイル管理を行う。ここで、エージェント１４０は、ファイルシステム１２０におけるルートディレクトリ（“／”）を下位レイヤＬ１０に対応するディレクトリとして設定する。Ｍｅｒｇｅｄは、上位レイヤＬ２０および下位レイヤＬ１０を重ね合わせて見えるファイルシステムのマウントポイントである。Ｍｅｒｇｅｄを３つ目の階層とみなして、当該３つ目の階層をＭｅｒｇｅｄレイヤと称してもよい。また、ルートディレクトリ（“／”）を下位レイヤＬ１０に対応するディレクトリとすることで、Ｍｅｒｇｅｄ配下で、ファイルシステム１２０におけるルートディレクトリ配下の全ファイルを、ディレクトリ構造を維持して参照可能となる。
【００６５】
下位レイヤＬ１０には、ファイルシステム１２０により管理されるルートディレクトリ配下の全てのファイルが含まれる。例えば、下位レイヤＬ１０は、ファイルＡ，Ｃ，Ｄを含む。
【００６６】
上位レイヤＬ２０は、下位レイヤＬ１０に存在するファイルに対する差分のファイルが含まれる。上位レイヤＬ２０は、下位レイヤＬ１０に対する差分レイヤともいえる。
エージェント１４０は、ＵｎｉｏｎＦＳ１３０の機能により、各ファイルを操作できる。具体的には、エージェント１４０は、ルートディレクトリを、Ｍｅｒｇｅｄディレクトリに変更する（ｃｈｒｏｏｔコマンドを実行する）。そして、エージェント１４０は、Ｍｅｒｇｅｄ配下のファイルＡを修正し、ファイルＡ’とする。ファイルＡ’は、上位レイヤＬ２０に追加される。下位レイヤＬ１０のファイルＡは、そのまま残る。
【００６７】
また、エージェント１４０は、Ｍｅｒｇｅｄ配下にファイルＢを追加する。ファイルＢは、上位レイヤＬ２０に追加される。下位レイヤＬ１０にはファイルＢは追加されない。
更に、エージェント１４０は、Ｍｅｒｇｅｄ配下のファイルＣを削除する。ファイルＣを削除した旨の情報が上位レイヤＬ２０に追加される。下位レイヤＬ１０のファイルＣは、そのまま残る。
【００６８】
なお、エージェント１４０は、変更のないファイルＤを参照する場合、下位レイヤＬ１０のファイルＤを参照することができる。
上位レイヤＬ２０は、下位レイヤＬ１０よりもファイルアクセスの優先度が高い。両方のレイヤが同じ名前のファイルを含む場合、上位レイヤＬ２０の方が下位レイヤＬ１０よりも優先してアクセスされる。
【００６９】
また、ファイルシステム１２０は、下位レイヤＬ１０に属するファイルを操作可能である。このため、エージェント１４０以外のアプリケーションのプロセスは、通常通り、ファイルシステム１２０を用いたファイルアクセスを行える。
【００７０】
図８は、ＵｎｉｏｎＦＳによるファイル操作の具体例（その１）を示す図である。図８（Ａ）は、ＵｎｉｏｎＦＳ構築直後のディレクトリのツリー構造を例示している。エージェント１４０は、ディレクトリ“／ｔｅｍｐ／Ｕｐｐｅｒ”を作成する。エージェント１４０は、ディレクトリ“／ｔｅｍｐ／Ｍｅｒｇｅｄ”を作成する。
【００７１】
エージェント１４０は、ＵｎｉｏｎＦＳ１３０の機能を用いて、ルートディレクトリ“／”を下位レイヤＬ１０とし、ディレクトリ“／ｔｅｍｐ／Ｕｐｐｅｒ”を上位レイヤＬ２０として、Ｍｅｒｇｅｄディレクトリにマウントする。Ｍｅｒｇｅｄディレクトリは、上位レイヤＬ２０と下位レイヤＬ１０とがマージされて見えるディレクトリとなる。
【００７２】
図８（Ａ）の例では、ディレクトリ“／ｅｔｃ”の配下に、ファイルＡ，Ｃ，Ｄが存在している。よって、Ｍｅｒｇｅｄ配下でも、ディレクトリ“／ｅｔｃ”配下のファイルＡ，Ｃ，Ｄを同じパスにより参照可能となる。他のディレクトリについても同様である。ただし、Ｍｅｒｇｅｄ配下にファイルの実体はない。
【００７３】
図８（Ｂ）は、Ｍｅｒｇｅｄ配下でファイルＡを修正する場合を例示している。この場合、上位レイヤＬ２０に相当するディレクトリ“／ｔｅｍｐ／Ｕｐｐｅｒ”配下に修正されたファイルＡ’が配置される。一方、下位レイヤＬ１０に相当するディレクトリ“／ｅｔｃ”配下のファイルＡは変更されない。Ｍｅｒｇｅｄ配下では、上位レイヤＬ２０におけるファイルＡ’を参照可能となる。
【００７４】
図９は、ＵｎｉｏｎＦＳによるファイル操作の具体例（その２）を示す図である。図９（Ａ）は、Ｍｅｒｇｅｄ配下でファイルＢを追加する場合を例示している。この場合、上位レイヤＬ２０に相当するディレクトリ“／ｔｅｍｐ／Ｕｐｐｅｒ”配下にファイルＢが追加される。一方、下位レイヤＬ１０に相当するディレクトリ“／ｅｔｃ”配下にはファイルＢは追加されない。Ｍｅｒｇｅｄ配下では、上位レイヤＬ２０に追加されたファイルＢを参照可能となる。
【００７５】
図９（Ｂ）は、Ｍｅｒｇｅｄ配下でファイルＣを削除する場合を例示している。この場合、上位レイヤＬ２０に相当するディレクトリ“／ｔｅｍｐ／Ｕｐｐｅｒ”配下に削除されたファイルＣの名称で所定のファイル（例えば、ＯｖｅｒｌａｙＦＳではｏｖｅｒｌａｙ−ｗｈｉｔｅｏｕｔというファイル）を指すシンボリックリンクが追加される。この場合のシンボリックリンクは、削除されたファイルＣを示す識別情報といえる。一方、下位レイヤＬ１０に相当するディレクトリ“／ｅｔｃ”配下のファイルＣは削除されない。Ｍｅｒｇｅｄ配下では、削除されたファイルＣを参照できなくなる。削除されたファイルＣを上位レイヤＬ２０において管理する方法として、シンボリックリンクを生成する方法を例示したが、他の方法により削除されたファイルＣを管理してもよい。
【００７６】
このように、エージェント１４０は、下位レイヤＬ１０のファイルを残したまま、当該ファイルに対する差分を、上位レイヤＬ２０において作成することができる。
次に、バックアップ元サーバ１００がバックアップの処理に用いる情報を具体的に説明する。
【００７７】
図１０は、第２の実施の形態のパラメタファイルの例を示す図である。パラメタファイル１１１は、ユーザによりバックアップ元サーバ１００に入力され、記憶部１１０に格納される。パラメタファイル１１１は、バックアップのスケジュール、バックアップ先サーバ２００の情報、ファイル改変に用いるパラメタの情報を含む。
【００７８】
具体的には、“［Ｓｃｈｅｄｕｌｅ］”とラベルされた行（１行目）の次の行（２行目）の記述“Ｆｒｅｑ＝ｗｅｅｋｌｙ＠０：００，Ｓｕｎ”がバックアップのスケジュールを示す。この例は、毎週日曜日の午前０時にバックアップを取得する設定である。
【００７９】
また、“［ＤＲ  Ｃｌｏｕｄ  Ｉｎｆｏ］”とラベルされた行（４行目）の次の複数の行（５〜８行目）の記述が、バックアップ先サーバ２００の情報である。各記述は、バックアップ先サーバ２００の識別情報“ＣｌｏｕｄＸＸＸ”、ログイン用のユーザＩＤ（IDentifier）／パスワード、および、バックアップ先サーバ２００において用いるストレージのストレージＩＤなどを含む。
【００８０】
更に、“［Ｐａｒａｍｅｔｅｒｓ］”とラベルされた行（１０行目）の次の複数の行（１１〜３０行目）の記述が、ファイル改変に用いるパラメタの情報である（ただし、１８行目および２６行目を除く）。各記述は、ネットワーク設定、インストール対象パッケージ、追加ファイル、削除ファイル、ファイルに対するテキスト追加内容、および、ファイルに対するテキスト変更内容などの情報を含む。
【００８１】
図１１は、第２の実施の形態の改変情報テーブルパターンの例を示す図である。改変情報テーブルパターン１１２は、記憶部１１０に予め格納される。改変情報テーブルパターン１１２は、後述の改変情報テーブルの雛型である。改変情報テーブルパターン１１２は、バックアップ先、改変対象、メソッド、ターゲットパスおよびパラメタの項目を含む。
【００８２】
バックアップ先の項目には、バックアップ先サーバ２００の識別情報が登録される。改変対象の項目には、改変対象の種別が登録される。メソッドの項目には、改変方法の種別が登録される。ターゲットパスの項目には、改変対象ファイルのパスに対応する変数が登録される。パラメタの項目には、改変するパラメタに対応する変数が登録される。ターゲットパスおよびパラメタの項目に登録される変数の名称は、パラメタファイル１１１における変数の名称（“＄”記号が付された“＄ｍｏｄｅ”や“＄ＡｄｄＦｉｌｅＦｒｏｍ０”などの文字列）に相当する。
【００８３】
例えば、改変情報テーブルパターン１１２には、バックアップ先が“ＣｌｏｕｄＸＸＸ”、改変対象が“テキスト”、メソッドが“ＲＥＰＬＡＣＥ”、ターゲットパスが“＄ＴｅｘｔＲｅｐｌａｃｅＦｉｌｅ０，・・・”、パラメタが“＄ＴｅｘｔＲｅｐｌａｃｅＲｅｇＥｘＳｔｒｉｎｇ０，・・・”という情報が登録される。これは、改変情報テーブルにおける１つのレコードの雛型であり、例えば、変数“＄ＴｅｘｔＲｅｐｌａｃｅＦｉｌｅ０”を、パラメタファイル１１１における同名の変数の設定値“ＦｉｌｅＰａｔｈＥ０”で置き換えることを示す。同様に、変数“＄ＴｅｘｔＲｅｐｌａｃｅＲｅｇＳｔｒｉｎｇ０”を、パラメタファイル１１１における同名の変数の設定値“ＲｅｇＥｘＳｔｒｉｎｇＥ０”で置き換えることを示す。他のレコードについても同様である。
【００８４】
図１２は、第２の実施の形態の改変情報テーブルの例を示す図である。改変情報テーブル１１３は、パラメタファイル１１１および改変情報テーブルパターン１１２に基づいて、エージェント１４０により生成され、記憶部１１０に格納される。改変情報テーブル１１３に含まれる各項目は、改変情報テーブルパターン１１２に含まれる同名の項目と同様である。ただし、改変情報テーブル１１３では、改変情報テーブルパターン１１２において変数名で示されていた箇所に、パラメタファイル１１１における具体的な設定値が代入されている点が異なる。
【００８５】
例えば、改変情報テーブル１１３には、バックアップ先が“ＣｌｏｕｄＸＸＸ”、改変対象が“テキスト”、メソッドが“ＲＥＰＬＡＣＥ”、ターゲットパスが“ＦｉｌｅＰａｔｈＥ０，・・・”、パラメタが“ＲｅｇＥｘＳｔｒｉｎｇＥ０，・・・”という情報が登録される。これは、パス“ＦｉｌｅＰａｔｈＥ０”で示されるファイルに含まれるテキストを、“ＲｅｇＥｘＳｔｒｉｎｇＥ０”で示される方法で置換することを示す。この場合、“ＲｅｇＥｘＳｔｒｉｎｇＥ０”は、置換元のテキストと、置換後のテキストとを示す情報を含む。複数の置換がある場合、ターゲットパスおよびパラメタの項目には、それぞれ複数の設定値が、カンマ（“，”）区切りで設定される。その場合、エージェント１４０は、カンマで区切られた順に、ターゲットパスの設定値とパラメタの設定値とを対応付ける。他の改変内容についても同様に改変情報テーブル１１３に登録される。
【００８６】
ここで、改変対象“テキスト”、メソッド“ＡＰＰＥＮＤ”のレコードは、ターゲットパスで示されるファイルに、パラメタで示されるテキストを追加する改変を示す。
改変対象“ファイル”、メソッド“ＡＤＤ”のレコードは、パラメタで示されるファイルを、ターゲットパスで示されるファイルとしてコピーする（すなわち、ファイルを追加する）改変を示す。
【００８７】
改変対象“ファイル”、メソッド“ＤＥＬＥＴＥ”のレコードは、ターゲットパスで示されるファイルを削除する改変を示す。当該レコードでは、パラメタの項目は設定なし（“−”）となる。
【００８８】
改変対象“ファイル”、メソッド“ＭＯＶＥ”のレコードは、パラメタで示されるファイルを、ターゲットパスで示されるファイルとして移動する改変を示す。
改変対象“システム”、メソッド“ＩＮＳＴＡＬＬ”のレコードは、パラメタで示されるインストーラを実行して、所定のソフトウェアパッケージをインストールする改変を示す。当該レコードでは、ターゲットパスの項目は設定なし（“−”）となる。
【００８９】
改変対象“システム”、メソッド“ＵＮＩＮＳＴＡＬＬ”のレコードは、パラメタで示されるソフトウェアをアンインストールする改変を示す。当該レコードでは、ターゲットパスの項目は設定なし（“−”）となる。
【００９０】
改変対象“ネットワーク”、メソッド“ＳＥＴ”のレコードは、ターゲットパスで示されるファイルの内容を、パラメタで示されるネットワーク設定情報に書き換えることを示す。
【００９１】
改変対象“コンピュータ名”、メソッド“ＳＥＴ”のレコードは、コンピュータ名を、パラメタで示されるコンピュータ名に変更する改変を示す。当該レコードでは、ターゲットパスの項目は設定なし（“−”）となる。
【００９２】
改変対象“システム”、メソッド“ＩＮＳＴＡＬＬ”は、パラメタで示されるドライバソフトウェアをインストールする改変を示す。当該レコードでは、ターゲットパスの項目は設定なし（“−”）となる。
【００９３】
このように、エージェント１４０は、改変情報テーブルパターン１１２内の変数参照の部分を、パラメタファイル１１１に記載された同名の変数の設定値に置換して、パラメタファイル１１１の内容を反映した改変情報テーブル１１３を作成する。パラメタファイル１１１内で、変数の設定値が空の場合や、該当の変数が存在しない場合は、エージェント１４０は、改変情報テーブルパターン１１２の該当のレコードを除去して改変情報テーブル１１３を作成する。あるいは、エージェント１４０は、変数参照を含む状態で該当のレコードを改変情報テーブル１１３に登録し、バックアップ実行時に当該レコードを無視するようにしてもよい。
【００９４】
次に、バックアップ元サーバ１００のバックアップの手順を説明する。
図１３は、第２の実施の形態のバックアップ例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【００９５】
（Ｓ１１）改変情報生成部１４１は、記憶部１１０に記憶されたパラメタファイル１１１に含まれるバックアップ時刻に到達したことを検出する。ここで、パラメタファイル１１１のパスは、例えば“／ｈｏｇｅ／ａｇｅｎｔ／ｐａｒａｍｅｔｅｒ．ｉｎｉ”である。
【００９６】
（Ｓ１２）改変情報生成部１４１は、パラメタファイル１１１から、改変情報テーブル１１３を生成し、記憶部１１０に格納する。前述のように、記憶部１１０は、バックアップ先サーバ２００に対する改変情報テーブルパターン１１２を予め記憶している。改変情報生成部１４１は、改変情報テーブルパターン１１２に含まれる各変数に、パラメタファイル１１１に設定された設定値を代入することで、改変情報テーブル１１３を生成する。
【００９７】
（Ｓ１３）差分ファイル生成部１４２は、ＵｎｉｏｎＦＳ１３０を構築する。具体的には、改変情報生成部１４１は、ＵｎｉｏｎＦＳ１３０の機能を用いて、ルートディレクトリ“／”をＬｏｗｅｒとし、ＵｐｐｅｒのディレクトリとともにＭｅｒｇｅｄのディレクトリにマウントする。例えば、Ｕｐｐｅｒのディレクトリは、“／ｈｏｇｅ／ａｇｅｎｔ／ｕｐｐｅｒ”である。また、Ｍｅｒｇｅｄのディレクトリは、“／ｈｏｇｅ／ａｇｅｎｔ／ｍｅｒｇｅｄ”である。
【００９８】
（Ｓ１４）差分ファイル生成部１４２は、ルートディレクトリをＭｅｒｇｅｄのディレクトリに変更する。具体的には、差分ファイル生成部１４２は、Ｍｅｒｇｅｄのディレクトリを変更先に指定して、ｃｈｒｏｏｔコマンドを実行する。
【００９９】
（Ｓ１５）差分ファイル生成部１４２は、記憶部１１０に現時刻Ｔを記録する。
（Ｓ１６）差分ファイル生成部１４２は、改変情報テーブル１１３のレコードを１つ読み込む。
【０１００】
（Ｓ１７）差分ファイル生成部１４２は、読み込んだレコードのメソッドで示される改変を実行する。例えば、改変情報テーブル１１３の最上段から２つ目の改変対象“テキスト”、メソッド“ＡＰＰＥＮＤ”のレコードは、ターゲットパスで示されるファイルに、パラメタで示されるテキストを追加する改変を示す。したがって、この場合、差分ファイル生成部１４２は、当該レコードのターゲットパスで示されるファイルに、パラメタで示されるテキストを追加する改変を実行する。その他にも、差分ファイル生成部１４２は、読み込んだレコードのメソッドに応じて、ファイルの変更、ファイルの削除、パッケージのインストールなどの改変を行う。
【０１０１】
（Ｓ１８）差分ファイル生成部１４２は、改変情報テーブル１１３の全レコードを読み込み済であるか否かを判定する。全レコードを読み込み済の場合、処理をステップＳ１９に進める。全レコードを読み込み済でない場合、処理をステップＳ１６に進める。
【０１０２】
（Ｓ１９）差分ファイル生成部１４２は、上位レイヤＬ２０に対応する下位レイヤＬ１０のファイルに、時刻Ｔ以降の変更があるか否かを判定する。上位レイヤＬ２０に対応する下位レイヤＬ１０のファイルに、時刻Ｔ以降の変更がある場合、処理をステップＳ２０に進める。上位レイヤＬ２０に対応する下位レイヤＬ１０のファイルに、時刻Ｔ以降の変更がない場合、処理をステップＳ２１に進める。
【０１０３】
（Ｓ２０）差分ファイル生成部１４２は、上位レイヤＬ２０内のファイルを削除する。そして、処理をステップＳ１５に進める。差分ファイル生成部１４２は、上位レイヤＬ２０のディレクトリに存在するファイルを直接操作できる他のプロセスに、上位レイヤＬ２０内のファイルの削除を依頼してもよい。上位レイヤ内のファイルを削除することで、Ｍｅｒｇｅｄディレクトリを介して参照されるファイル群は、下位レイヤＬ１０のファイル群に一致する。すなわち、ステップＳ２０により、ＵｎｉｏｎＦＳ構築直後の状態に戻される。そして、処理をステップＳ１５に進める。
【０１０４】
（Ｓ２１）送信処理部１４３は、Ｍｅｒｇｅｄレイヤから参照されるファイル群をバックアップ先サーバ２００に送信する。このとき、送信処理部１４３は、ＵｎｉｏｎＦＳ構築に用いたディレクトリ（例えば、“／ｈｏｇｅ／ａｇｅｎｔ”）配下のファイルを送信対象外とする。
【０１０５】
（Ｓ２２）差分ファイル生成部１４２は、ＵｎｉｏｎＦＳを解除する。これにより、上位レイヤＬ２０は削除される。
なお、ステップＳ２０において、差分ファイル生成部１４２は、ＵｎｉｏｎＦＳを一旦解除し、再度ステップＳ１３からやり直してもよい。
【０１０６】
バックアップ先サーバ２００のバックアップ受信部２２０は、ステップＳ２１におけるファイル群の送信に応じて、仮想マシンＭ１の仮想ディスクイメージＤ２を作成し、記憶部２１０に格納する。バックアップ先サーバ２００は、バックアップ元サーバ１００の障害時に、保存した仮想ディスクイメージＤ２により、バックアップ先サーバ２００上で、仮想マシンＭ１を起動できる。
【０１０７】
図１４は、第２の実施の形態のシステム復元の例を示す図である。以下、図１４に示す処理をステップ番号に沿って説明する。
（Ｓ３１）仮想マシン起動部２３０は、バックアップ元サーバ１００上の仮想マシンＭ１の起動指示を受け付けると、記憶部２１０に記憶された仮想ディスクイメージＤ２（バックアップ元サーバ１００のバックアップイメージ）を用いて仮想マシンを作成する。
【０１０８】
（Ｓ３２）仮想マシン起動部２３０は、ステップＳ３１で作成した仮想マシンを起動する。当該仮想マシンは、バックアップ元サーバ１００で動作していた仮想マシンＭ１と同等の機能を有する。
【０１０９】
仮想ディスクイメージＤ２では、バックアップ先サーバ２００のハイパーバイザＶ２が提供する仮想デバイスに対応したデバイスドライバや、バックアップ先サーバ２００で利用可能なネットワークの設定情報などが既に組み込まれている。このため、バックアップ先サーバ２００では、仮想ディスクイメージＤ２を人手によって改変しなくてもよく、バックアップ先サーバ２００によりシステム復旧を迅速に行うことができる。
【０１１０】
ところで、図１３のステップＳ１９では、差分ファイル生成部１４２は、上位レイヤＬ２０に対応する下位レイヤＬ１０のファイルに時刻Ｔ（ファイル改変開始時刻）以降の変更があるか否かを判定するものとした。ステップＳ１９の判定を行う理由は、バックアップとして取得される複数のファイル間の不整合を抑制するためである。具体的には次の通りである。
【０１１１】
図１５は、上位レイヤ内の２つのファイルで不整合が生じる例を示す図である。図１５において、括弧記号で囲われた数値は、ファイルに対する更新の順序を表している。バックアップ元サーバ１００では、ファイルシステム１２０を用いてファイルアクセスを行う既存プロセス１５０（例えば、ＯＳやエージェント１４０以外のアプリケーションのプロセス）が存在する。
【０１１２】
エージェント１４０は、時刻Ｔに、バックアップのためのファイルの改変を開始する。まず、最初のタイミング（１）において、エージェント１４０は、ファイルＡを改変する。この場合、上位レイヤＬ２０に改変後のファイルＡ’が配置される。
【０１１３】
次のタイミング（２）において、既存プロセス１５０は、ファイルＢを改変する。この場合、下位レイヤＬ１０のファイルＢ自体が変更される。
次のタイミング（３）において、エージェント１４０は、ファイルＢを改変する。この場合、上位レイヤＬ２０に改変後のファイルＢ’が配置される。
【０１１４】
次のタイミング（４）において、既存プロセス１５０は、ファイルＡを改変する。この場合、下位レイヤＬ１０のファイルＡ自体が変更される。
この例では、上位レイヤＬ２０において、ファイルＢ’には、既存プロセス１５０による更新が反映されている。しかし、ファイルＡ’には、既存プロセス１５０による更新が反映されていない。このため、ファイルＡ，Ｂの整合性を保つことが求められる場合、こうして作成されたファイルＡ’，Ｂ’を含むバックアップデータを作成しても、バックアップ先サーバ２００側で、ＯＳや特定のアプリケーションが適切に動作しない可能性がある。
【０１１５】
そこで、エージェント１４０は、ステップＳ１９の判定を行い、複数のファイル間で不整合が生じている可能性がある場合には、上位レイヤＬ２０内のファイルを全て削除した上で、ファイルの改変をやり直す。
【０１１６】
図１６は、ファイルの不整合の判断の具体例を示す図である。図１６（Ａ）は、不整合とみなす場合を例示している。例えば、エージェント１４０による上位レイヤＬ２０での処理（ファイル改変）開始時刻ＴをＴ＝８：００：００とする。また、エージェント１４０による整合性確認時刻を８：００：１５とする。
【０１１７】
エージェント１４０は、ファイル改変の対象となったファイルＡ，Ｂの更新時刻を確認する。例えば、下位レイヤＬ１０におけるファイルＡの更新時刻は７：００：００である。下位レイヤＬ１０におけるファイルＢの更新時刻は８：００：０５である。なお、上位レイヤＬ２０におけるファイルＡ’の更新時刻は８：００：１０である。上位レイヤＬ２０におけるファイルＢ’の更新時刻は８：００：０２である。
【０１１８】
この場合、下位レイヤＬ１０におけるファイルＢは、時刻Ｔ以降に更新されている。このため、エージェント１４０は、ファイルＡ’，Ｂ’に不整合が発生しているとみなし、ファイルＡ，Ｂの改変をやり直す。
【０１１９】
図１６（Ｂ）は、不整合とみなさない場合を例示している。ここでも、時刻Ｔ＝８：００：００とする。また、エージェント１４０による整合性確認時刻を８：００：１５とする。
【０１２０】
エージェント１４０はファイル改変の対象となったファイルＡ，Ｂの更新時刻を確認する。例えば、下位レイヤＬ１０におけるファイルＡの更新時刻は７：００：００である。下位レイヤＬ１０におけるファイルＢの更新時刻は７：００：０１である。なお、上位レイヤＬ２０におけるファイルＡ’，Ｂ’の更新時刻は、図１６（Ａ）と同様である。
【０１２１】
この場合、下位レイヤＬ１０におけるファイルＡ，Ｂの何れも、時刻Ｔ以降に更新されていない。このため、エージェント１４０は、ファイルＡ’，Ｂ’に不整合がないものとし、バックアップ対象として確定する。エージェント１４０は、こうして作成したファイル群をバックアップ先サーバ２００に送信することで、バックアップ先サーバ２００により適切にシステム復旧を行えるよう支援できる。
【０１２２】
ところで、バックアップするファイルをバックアップ元サーバ１００側で改変する方法として、ＵｎｉｏｎＦＳ１３０を用いずに、ファイルシステム１２０により管理されるファイルを直接改変することも考えられる。ただし、この場合、本番環境への影響が問題になる。このため、例えば、バックアップ元サーバ１００でスナップショットを取得するなどした上で、ファイルを直接改変することになる。そして、改変後にバックアップを取得してから、スナップショットを用いて、バックアップ元サーバ１００の改変前の状態を復元する。しかし、この方法では、スナップショットの取得／スナップショットからの復元といった余計な作業が発生するという問題がある。また、スナップショット取得およびファイル改変のために、バックアップ元サーバ１００の業務運用が中断されるという問題がある。
【０１２３】
そこで、バックアップ元サーバ１００のエージェント１４０は、ＵｎｉｏｎＦＳ１３０を用いて、改変情報テーブル１１３に基づくファイルの改変を行う。これにより、バックアップ元サーバ１００は、バックアップ先サーバ２００の実行環境に応じた仮想マシンＭ１のバックアップを効率的に取得できる。
【０１２４】
具体的には、エージェント１４０は、上位レイヤＬ２０に対してのみファイルの変更を行うため、下位レイヤＬ１０に変更の影響を及ぼさない。すなわち、エージェント１４０は、既存プロセスからは独立した領域で当該改変を行えるため、ファイルの改変結果が既存プロセスの動作に影響を与えることはない。エージェント以外のプロセスは、上位レイヤＬ２０におけるファイル改変の影響を受けることなく動作を継続でき、運用を中断せずに済む。また、エージェント１４０は、上位レイヤＬ２０を削除するだけで、ファイルシステム１２０のみを用いた運用に容易に戻せる。
【０１２５】
そして、バックアップ元サーバ１００の障害発生時には、バックアップ先サーバ２００において代替システムを稼働させるための改変作業が完了している。このため、バックアップ先サーバ２００において仮想ディスクイメージＤ２を用いて仮想マシンＭ１を起動させることで、システムを復旧させることができる。よって、復旧時にバックアップデータを人手で改変しなくてもよく、システムを迅速に復旧させることができる。
【０１２６】
［第３の実施の形態］
以下、第３の実施の形態を説明する。前述の第２の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０１２７】
第２の実施の形態では、複数のファイル間の不整合を検出した場合に、エージェント１４０は、各ファイルの改変を最初からやり直すものとした。一方、整合性を保ちたい複数のファイルが事前に分かっている場合には、やり直し対象を絞り込むことも考えられる。第３の実施の形態では、ファイルの改変のやり直し対象を絞り込む機能を提供する。
【０１２８】
ここで、第３の実施の形態の情報処理システムは、図３で例示した第２の実施の形態の情報処理システムと同様である。情報処理システムに含まれる装置や装置のハードウェアおよびソフトウェアの要素を、第２の実施の形態で例示した要素と同様の名称・符号を用いて指し示す。
【０１２９】
第３の実施の形態では、改変情報生成部１４１が、改変情報テーブル１１３に代えて、改変情報テーブル１１４を生成する点が、第２の実施の形態と異なる。
図１７は、第３の実施の形態の改変情報テーブルの例を示す図である。改変情報テーブル１１４は、記憶部１１０に格納される。改変情報テーブル１１４は、バックアップ先、整合性グループ、改変対象、メソッド、ターゲットパスおよびパラメタの項目を含む。ここで、整合性グループ以外の項目の設定内容は、改変情報テーブル１１３における同名の項目の設定内容と同様である。
【０１３０】
整合性グループの項目には、該当のレコードのターゲットパスで示されるファイルが属する整合性グループの名称が登録される。同じ整合性グループに属する複数のファイルは、バックアップ時にも整合性の保全が求められる。
【０１３１】
ユーザは、例えば、パラメタファイル１１１において、整合性を保ちたい複数のファイルそれぞれについて、所属先の整合性グループの名称を記述する。改変情報生成部１４１は、パラメタファイル１１１を参照することで、各ファイルが所属する整合性グループを特定し、改変情報テーブル１１４のレコードに整合性グループの名称を追加できる。なお、改変情報生成部１４１は、改変情報テーブル１１４における整合性グループ以外の項目の設定値を、第２の実施の形態で説明した方法と同様の方法により追加することができる。
【０１３２】
例えば、改変情報テーブル１１４には、バックアップ先が“ＣｌｏｕｄＸＸＸ”、整合性グループが“Ｇｒｏｕｐ１”、ターゲットパスが“Ａ”という情報が登録される（改変対象、メソッドおよびパラメタの設定も含まれるがここでは説明を省略する）。また、改変情報テーブル１１４には、バックアップ先が“ＣｌｏｕｄＸＸＸ”、整合性グループが“Ｇｒｏｕｐ１”、ターゲットパスが“Ｂ”という情報が登録される。これは、ターゲットパス“Ａ”、“Ｂ”で示される２つのファイルＡ，Ｂが整合性グループ“Ｇｒｏｕｐ１”に所属することを示す。
【０１３３】
次に、バックアップ元サーバ１００のバックアップの手順を説明する。ここで、第３の実施の形態では、エージェント１４０は、整合性グループ毎に、複数の上位レイヤを階層的に作成する。そこで、以下の説明では、１つ目の上位レイヤをＵｐｐｅｒ１レイヤ、２つ目の上位レイヤをＵｐｐｅｒ２レイヤのように表記し、Ｎ（Ｎは１以上の整数）個目の上位レイヤをＵｐｐｅｒＮレイヤのように表記する。
【０１３４】
図１８は、第３の実施の形態のバックアップ例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
（Ｓ４１）改変情報生成部１４１は、記憶部１１０に記憶されたパラメタファイル１１１に含まれるバックアップ時刻に到達したことを検出する。ここで、パラメタファイル１１１のパスは、例えば“／ｈｏｇｅ／ａｇｅｎｔ／ｐａｒａｍｅｔｅｒ．ｉｎｉ”である。
【０１３５】
（Ｓ４２）改変情報生成部１４１は、パラメタファイル１１１から、改変情報テーブル１１４を作成し、記憶部１１０に格納する。
（Ｓ４３）差分ファイル生成部１４２は、改変情報テーブル１１４に含まれる整合性グループを１つ選択する。
【０１３６】
（Ｓ４４）差分ファイル生成部１４２は、今回が初回（Ｎ＝１）の上位レイヤの作成であるか否かを判定する。初回の上位レイヤの作成である場合、処理をステップＳ４５に進める。初回の上位レイヤの作成でない場合（すなわち、Ｎ＞１の場合）、処理をステップＳ４６に進める。
【０１３７】
（Ｓ４５）差分ファイル生成部１４２は、ＵｎｉｏｎＦＳを構築する。Ｌｏｗｅｒのディレクトリは、ルートディレクトリ“／”である。Ｕｐｐｅｒのディレクトリは、“／ｈｏｇｅ／ａｇｅｎｔ／ｕｐｐｅｒ１”である。Ｍｅｒｇｅｄのディレクトリは、“／ｈｏｇｅ／ａｇｅｎｔ／ｍｅｒｇｅｄ１”である。そして、処理をステップＳ４７に進める。
【０１３８】
（Ｓ４６）差分ファイル生成部１４２は、ＵｎｉｏｎＦＳを構築する。Ｌｏｗｅｒのディレクトリは、“／ｈｏｇｅ／ａｇｅｎｔ／ｍｅｒｇｅｄ（Ｎ−１）”である。Ｕｐｐｅｒのディレクトリは、“／ｈｏｇｅ／ａｇｅｎｔ／ｕｐｐｅｒＮ”である。Ｍｅｒｇｅｄのディレクトリは、“／ｈｏｇｅ／ａｇｅｎｔ／ｍｅｒｇｅｄＮ”である。そして、処理をステップＳ４７に進める。
【０１３９】
（Ｓ４７）差分ファイル生成部１４２は、ルートディレクトリをＭｅｒｇｅｄのディレクトリに変更する。具体的には、差分ファイル生成部１４２は、Ｍｅｒｇｅｄのディレクトリを変更先に指定して、ｃｈｒｏｏｔコマンドを実行する。
【０１４０】
（Ｓ４８）差分ファイル生成部１４２は、記憶部１１０に現時刻Ｔを記録する。
（Ｓ４９）差分ファイル生成部１４２は、ステップＳ４３で選択した整合性グループからレコードを１つ読み込む。具体的には、差分ファイル生成部１４２は、改変情報テーブル１１４のレコードのうち、当該整合性グループの名称を含む複数のレコードの中から１つを選択して読み込む。
【０１４１】
（Ｓ５０）差分ファイル生成部１４２は、読み込んだレコードのメソッドで示される改変を実行する。
（Ｓ５１）差分ファイル生成部１４２は、ステップＳ４３で選択した整合性グループ内の全レコードを読み込み済であるか否かを判定する。該当の整合性グループ内の全レコードを読み込み済の場合、処理をステップＳ５２に進める。該当の整合性グループ内の全レコードを読み込み済でない場合、処理をステップＳ４９に進める。
【０１４２】
（Ｓ５２）差分ファイル生成部１４２は、ＵｐｐｅｒＮレイヤに対応する下位レイヤのファイルに時刻Ｔ以降の変更があるか否かを判定する。ＵｐｐｅｒＮレイヤに対応する下位レイヤのファイルに時刻Ｔ以降の変更がある場合、処理をステップＳ５３に進める。ＵｐｐｅｒＮレイヤに対応する下位レイヤのファイルに時刻Ｔ以降の変更がない場合、処理をステップＳ５４に進める。
【０１４３】
（Ｓ５３）差分ファイル生成部１４２は、ＵｐｐｅｒＮレイヤ内のファイルを削除する。差分ファイル生成部１４２は、ＵｐｐｅｒＮレイヤのディレクトリに存在するファイルを直接操作できる他のプロセスに、ＵｐｐｅｒＮレイヤ内のファイルの削除を依頼してもよい。ステップＳ５３により、ＵｐｐｅｒＮレイヤに対するＵｎｉｏｎＦＳ構築直後の状態に戻される。そして、処理をステップＳ４８に進める。
【０１４４】
（Ｓ５４）差分ファイル生成部１４２は、改変情報テーブル１１４に含まれる全整合性グループを処理済であるか否かを判定する。全整合性グループを処理済である場合、処理をステップＳ５５に進める。全整合性グループを処理済でない場合、処理をステップＳ４３に進める。後者の場合、差分ファイル生成部１４２は、Ｎに１を加算する。
【０１４５】
（Ｓ５５）送信処理部１４３は、Ｍｅｒｇｅｄレイヤから参照されるファイル群をバックアップ先サーバ２００に送信する。このとき、送信処理部１４３は、ＵｎｉｏｎＦＳ構築に用いたディレクトリ（例えば、“／ｈｏｇｅ／ａｇｅｎｔ”）配下のファイルを送信対象外とする。
【０１４６】
（Ｓ５６）差分ファイル生成部１４２は、ＵｎｉｏｎＦＳを解除する。これにより、Ｕｐｐｅｒ１レイヤ、・・・、ＵｐｐｅｒＮレイヤは削除される。
なお、ステップＳ５３において、差分ファイル生成部１４２は、ＵｐｐｅｒＮレイヤに関するＵｎｉｏｎＦＳを一旦解除し、再度ステップＳ４４からやり直してもよい。
【０１４７】
次に、第３の実施の形態のエージェント１４０によるファイル改変の方法を具体的に説明する。
図１９は、第３の実施の形態のファイル改変例（その１）を示す図である。下位レイヤＬ１０は、既存のファイルシステム１２０により管理されるファイルＡ，Ｂ，Ｃ，Ｄを含む（ステップＳＴ１０１）。エージェント１４０は、バックアップを開始する。
【０１４８】
まず、エージェント１４０は、Ｕｐｐｅｒ１レイヤＬ２１を作成する。Ｕｐｐｅｒ１レイヤＬ２１は、整合性グループ“Ｇｒｏｕｐ１”に対応する上位レイヤである。整合性グループ“Ｇｒｏｕｐ１”のメンバは、ファイルＡ，Ｂである。エージェント１４０は、ファイルＡ，Ｂを改変して、ファイルＡ’，Ｂ’を生成する（ステップＳＴ１０２）。ファイルＡ’，Ｂ’は整合性が保たれている。
【０１４９】
次に、エージェント１４０は、Ｕｐｐｅｒ２レイヤＬ２２を作成する。Ｕｐｐｅｒ２レイヤＬ２２は、整合性グループ“Ｇｒｏｕｐ２”に対応する上位レイヤである。整合性グループ“Ｇｒｏｕｐ２”のメンバは、ファイルＣである。エージェント１４０は、ファイルＣを改変して、ファイルＣ’を生成する（ステップＳＴ１０３）。
【０１５０】
このように、エージェント１４０は、整合性グループ毎に、多段階に上位レイヤを作成し、元ファイル群Ｄ１１に対する差分ファイル群Ｄ１２を管理することもできる。このような仕組みを用いて、エージェント１４０は、複数の整合性グループのうち、不整合が検出された整合性グループに属するファイルに絞って、ファイル改変をやり直せるようになる。次に、ファイル改変をやり直す例を説明する。
【０１５１】
図２０は、第３の実施の形態のファイル改変例（その２）を示す図である。下位レイヤＬ１０は、既存のファイルシステム１２０により管理されるファイルＡ，Ｂ，Ｃ，Ｄを含む（ステップＳＴ１１１）。エージェント１４０は、バックアップを開始する。
【０１５２】
エージェント１４０は、Ｕｐｐｅｒ１レイヤＬ２１を作成する。Ｕｐｐｅｒ１レイヤＬ２１は、整合性グループ“Ｇｒｏｕｐ１”に対応する上位レイヤである。整合性グループ“Ｇｒｏｕｐ１”のメンバは、ファイルＡ，Ｂである。エージェント１４０は、ファイルＡ，Ｂを改変して、ファイルＡ’，Ｂ’を生成する。エージェント１４０は、ファイルＡ’，Ｂ’間の不整合を検出する（ステップＳＴ１１２）。
【０１５３】
エージェント１４０は、Ｕｐｐｅｒ１レイヤＬ２１のファイルを削除する。すなわち、エージェント１４０は、整合性グループ“Ｇｒｏｕｐ１”に属するファイルＡ，Ｂの改変を行う前の状態に戻す。そして、エージェント１４０は、整合性グループ“Ｇｒｏｕｐ１”に属するファイルＡ，Ｂの改変をやり直す（ステップＳＴ１１３）。
【０１５４】
エージェント１４０は、上記の処理を各整合性グループに対して繰り返し実行し、最終的に全てのレイヤを重ねて見えるファイルをバックアップする。例えば、図１９で例示したステップＳＴ１０３の状態では、エージェント１４０は、ファイルＡ’，Ｂ’，Ｃ’，Ｄをバックアップとして取得する。
【０１５５】
こうして、エージェント１４０は、全てのファイルについてファイル改変をやり直すよりも、やり直し対象となるファイルの数を低減できる。このため、バックアップ取得の所要時間を短縮できる。
【０１５６】
なお、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１５７】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【０１５８】
以上の第１〜第３の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  コンピュータに、
バックアップ対象のファイルに対する改変内容を示す改変情報を取得し、
第１のファイルシステムにより管理される複数のファイルを維持して前記複数のファイルに対する差分のファイルを管理する第２のファイルシステムを用いて、前記改変情報に応じた前記差分のファイルを生成し、
前記複数のファイルに対して前記差分のファイルを適用したファイル群を、バックアップ先の装置に送信する、
処理を実行させるバックアッププログラム。
【０１５９】
（付記２）  前記差分のファイルの生成では、複数の前記差分のファイルを生成している間の前記第１のファイルシステムによるファイル更新の有無に応じて、生成した前記複数の前記差分のファイルの間に不整合があるか否かを判定し、前記不整合があると判定すると、前記複数の前記差分のファイルを再生成する、付記１記載のバックアッププログラム。
【０１６０】
（付記３）  前記差分のファイルの生成では、前記改変情報による改変対象の前記複数のファイルを複数のグループに区分し、グループ毎に順番に前記複数の前記差分のファイルを生成し、前記不整合があるか否かをグループ単位に判定し、前記不整合があると判定すると、グループ単位に前記複数の前記差分のファイルを再生成する、付記２記載のバックアッププログラム。
【０１６１】
（付記４）  前記改変情報は、前記改変内容としてファイル追加およびファイル更新の情報を含み、
前記差分のファイルの生成では、前記複数のファイルに対する前記ファイル追加および前記ファイル更新に応じた前記差分のファイルを生成する、付記１乃至３の何れか１項に記載のバックアッププログラム。
【０１６２】
（付記５）  前記ファイル追加は、前記バックアップ先の装置において使用されるデバイスドライバのインストールを含む、付記４記載のバックアッププログラム。
（付記６）  前記ファイル更新は、ネットワーク設定ファイルの設定内容を、前記バックアップ先の装置において利用可能なネットワークに応じた設定内容へ更新することを含む、付記４または５記載のバックアッププログラム。
【０１６３】
（付記７）  前記改変情報は、前記改変内容としてファイル削除の情報を含み、
前記差分のファイルの生成では、前記複数のファイルに含まれる削除対象ファイルが削除されたことを示す識別情報を生成する、付記１乃至６の何れか１項に記載のバックアッププログラム。
【０１６４】
（付記８）  前記第２のファイルシステムは、ユニオンファイルシステムである、付記１乃至７の何れか１項に記載のバックアッププログラム。
（付記９）  前記ユニオンファイルシステムにより、前記第１のファイルシステムのルートディレクトリと、前記第１のファイルシステムの第１のディレクトリとを、前記第１のディレクトリを前記ルートディレクトリよりも上位に設定して、第２のディレクトリにマウントする、付記８記載のバックアッププログラム。
【０１６５】
（付記１０）  バックアップ対象のファイルに対する改変内容を示す改変情報を記憶する記憶部と、
第１のファイルシステムにより管理される複数のファイルを維持して前記複数のファイルに対する差分のファイルを管理する第２のファイルシステムを用いて、前記改変情報に応じた前記差分のファイルを生成し、前記複数のファイルに対して前記差分のファイルを適用したファイル群を、バックアップ先の装置に送信する演算部と、
を有するバックアップ装置。
【０１６６】
（付記１１）  コンピュータが、
バックアップ対象のファイルに対する改変内容を示す改変情報を取得し、
第１のファイルシステムにより管理される複数のファイルを維持して前記複数のファイルに対する差分のファイルを管理する第２のファイルシステムを用いて、前記改変情報に応じた前記差分のファイルを生成し、
前記複数のファイルに対して前記差分のファイルを適用したファイル群を、バックアップ先の装置に送信する、
バックアップ方法。
【符号の説明】
【０１６７】
１  バックアップ装置
１ａ  記憶部
１ｂ  演算部
２  バックアップ先装置
ＦＳ１  第１のファイルシステム
ＦＳ２  第２のファイルシステム
Ｌ１  第１のレイヤ
Ｌ２  第２のレイヤ
Ｌ３  統合レイヤ
Ｔ１  改変情報
ｆ１  元ファイル群
ｆ２  差分ファイル群
ｆ３  ファイル群
【図１】
2018025849.tif 000003
【図２】
2018025849.tif 000004
【図３】
2018025849.tif 000005
【図４】
2018025849.tif 000006
【図５】
2018025849.tif 000007
【図６】
2018025849.tif 000008
【図７】
2018025849.tif 000009
【図８】
2018025849.tif 000010
【図９】
2018025849.tif 000011
【図１０】
2018025849.tif 000012
【図１１】
2018025849.tif 000013
【図１２】
2018025849.tif 000014
【図１３】
2018025849.tif 000015
【図１４】
2018025849.tif 000016
【図１５】
2018025849.tif 000017
【図１６】
2018025849.tif 000018
【図１７】
2018025849.tif 000019
【図１８】
2018025849.tif 000020
【図１９】
2018025849.tif 000021
【図２０】
2018025849.tif 000022