(57)【要約】【課題】本発明は、データを処理し、データのバックアップを担当するサーバーに所定のタイミングでバックアップデータを送信するクライアント、クライアントから送信されてきたバックアップデータを受信して記憶しておきクライアントからの要請に基づいてバックアップデータをクライアントに送信するサーバー、および、これらクライアントとサーバーとからなるバックアップシステムに関し、データバックアップのための処理の負担軽減を図る。【解決手段】サーバーへのバックアップデータの送信タイミングを待たずに、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルを作成することにより、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成し、作成された逆差分アーカイブをバックアップデータとしてサーバーに送信する。【選択図】        図１３
2005292905.tif 000002
【特許請求の範囲】
【請求項１】
データを処理し所定のタイミングごとにバックアップデータを送信するクライアントと、前記クライアントから送信されてきたバックアップデータを受信して記憶しておき、該クライアントからの要請に基づいて該バックアップデータを該クライアントに送信するサーバーとを備えたバックアップシステムにおいて、
前記クライアントが、
前記サーバーへのバックアップデータの送信タイミングを待たずに、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルを作成する逆差分ファイル作成部と、
同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブをバックアップデータとして前記サーバーに送信するバックアップデータ送信部とを備え、
前記サーバーが、
前記クライアントから送信されてきたバックアップデータとしての逆差分アーカイブを受信するバックアップデータ受信部と、
前記バックアップデータ受信部で受信された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とするバックアップシステム。
【請求項２】
データを処理しバックアップデータを送信するクライアントと、前記クライアントから送信されてきたバックアップデータを受信して記憶しておき該クライアントからの要請に基づいて該バックアップデータを該クライアントに送信するサーバーとを備えたバックアップシステムにおいて、
前記クライアントが、
同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成する順差分・逆差分ファイル作成部と、
新たなファイル名のファイルが作成されたときは該新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、該最初のファイルを一度送信した後は、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するバックアップデータ送信部とを備え、
前記サーバーが、
前記クライアントから送信されてきたバックアップデータを受信するバックアップデータ受信部と、
前記バックアップデータ受信部で受信されたバックアップデータとしての、最初のファイル、並びに、順差分ファイルおよび逆差分ファイルに基づいて、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とするバックアップシステム。
【請求項３】
データを処理し、データのバックアップを担当するサーバーに所定のタイミングでバックアップデータを送信するクライアントにおいて、
前記サーバーへのバックアップデータの送信タイミングを待たずに、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルを作成する逆差分ファイル作成部と、
同一ファイル名の最新のファイルと、更新ごとの逆差分ファイルとの組とからなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブをバックアップデータとして前記サーバーに送信するバックアップデータ送信部とを備えたことを特徴とするクライアント。
【請求項４】
データを処理し、データのバックアップを担当するサーバーにバックアップデータを送信するクライアントにおいて、
同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成する順差分・逆差分ファイル作成部と、
新たなファイル名のファイルが作成されたときは該新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、該最初のファイルを一度送信した後は、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するバックアップデータ送信部とを備えたことを特徴とするクライアント。
【請求項５】
データを処理しバックアップデータを送信するクライアントから送信されてきたバックアップデータを受信して記憶しておき、該クライアントからの要請に基づいて該バックアップデータを該クライアントに送信するサーバーにおいて、
前記クライアントが、同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成して、新たなファイル名のファイルが作成されたときは該新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、該最初のファイルを一度送信した後は、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するものであって、
このサーバーが、
前記クライアントから送信されてきたバックアップデータを受信するバックアップデータ受信部と、
前記バックアップデータ受信部で受信されたバックアップデータとしての、最初のファイル、並びに、順差分ファイルおよび逆差分ファイルに基づいて、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とするサーバー。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを処理し、データのバックアップを担当するサーバーにバックアップデータを送信するクライアント、クライアントから送信されてきたバックアップデータを受信して記憶しておき、該クライアントからの要請に基づいてバックアップデータをクライアントに送信するサーバー、および、これらクライアントとサーバーとからなるバックアップシステムに関する。
【背景技術】
【０００２】
従来よりクライアントの破損等によるクライアントのデータの消失を回避するために、クライアントが保持するデータをバックアップデータとして定期的にサーバーに送信してサーバーに格納しておき、万一のデータ消失の際にはサーバーからそのバックアップデータを受信してデータを回復するというバックアップシステムが採用されている。
【０００３】
図１，図２は、バックアップシステムの各例を示す図である。
【０００４】
クライアント・サーバーモデルでのバックアップとしては、図１に示すように、複数のクライアント１０が保持するデータをＬＡＮ３０経由でサーバー２０に退避する方法や、図２に示すようにＬＡＮ３０とＬＡＮ３０との間にＷＡＮ４０を介してバックアップする方法がある。特に、図２のような場合は、何がしかの事故、災害が起こっても復旧が可能なように、銀行データなどの重要データを遠隔バックアップするケースが多い。このような場合、帯域的に狭い長距離のＷＡＮを利用するため、できる限り、送るデータ量を少なく（或いは送信時間を短く）する必要がある。
【０００５】
図３は、従来のバックアップアルゴリズムの第１例を示す図である。
【０００６】
この図３に示す例は従来のフルバックアップの例であり、ここでは、オリジナルのファイル及びそれを更新（元のファイルを残して新たにファイルを作成）したファイルや、変更（元のファイルに上書きして書換え）したファイルも、そのままの形（サイズ）で、バックアップの時刻毎にクライアントからサーバーに退避される。例えば、図３では、先ず、時刻Ｔ１に、オリジナルの４つのファイル（Ａ，Ｂ，Ｃ，Ｄ）を退避する。次に、時刻Ｔ２では、時刻Ｔ１−Ｔ２間で、更新などで削除されたファイル（Ｄ，Ｃ１）を除き、かつ新たに加わったファイル（Ｂ１，Ｃ２，Ｄ１，Ｅ）を含めて７つのファイル（Ａ，Ｂ，Ｂ１，Ｃ，Ｃ２，Ｄ１，Ｅ）がサーバーに送られる。これでは、少しだけ更新或いは変更した類似のファイルでも、そのまま送られるため、２倍に近いデータ量が送られることになり、送信データ量を減らすことは考慮されていない。
【０００７】
図４は、従来のバックアップアルゴリズムの第２例を示す図である。
【０００８】
この図４に示す例は、従来の時間的な差分バックアップの例であり、ここでは、時刻Ｔ１−Ｔ２間で変化したファイル（更新，変更，新規追加されたＢ１，Ｃ２，Ｄ１）のみが退避される。したがって、フルバックアップよりは少ないデータ量で退避できるものの、元ファイルに類似している更新ファイルであっても個々のファイルサイズはそのままで送るため、効率は良くない。
【０００９】
図５は、従来のバックアップアルゴリズムの第３例を示す図である。
【００１０】
ここでは、転送効率を上げるための手法として、元ファイルＢと更新ファイルＢ１との間のデータ上の差分Δ（Ｂ−Ｂ１）が利用されている。クライアント側ではこの差分データファイルΔ（Ｂ−Ｂ１）が算出されてその差分データファイルΔ（Ｂ−Ｂ１）がサーバーに送信される。ここに示す例では、変更前のファイルが削除されたときの変更後のファイルＣ２，Ｄ１、および新たに作成されたファイルＥについてはそのまま送信されている。
【００１１】
図６は、差分データ転送によるクライアント・サーバー間のバックアップシステムの基本概念図である。
【００１２】
クライアント側で元ファイルとそれを更新したファイルが存在する場合、元ファイルと更新ファイルとの差分圧縮処理を行い、その差分データのみをサーバー側に送る。サーバー側では、送られてきた元ファイルおよび差分データ（勿論、それらの連結関連情報も含めて）を蓄積・退避する。また、データを復旧する場合は、サーバー側で、元ファイルおよび差分データ（連結関連情報も含めて）を読み出し、クライアント側に返送する。クライアント側では、連結関連情報から元ファイルと差分データから差分解凍処理を行い、更新ファイルを復元することで、復旧作業を完了する。
【００１３】
このような差分圧縮を用いたバックアップ手法の具体的な一例が特許文献１に開示されている。
【００１４】
図７は、クライアント側の、従来の差分圧縮ファイル転送のフローチャートである。
【００１５】
図７のフローを手順に従って説明する。
【００１６】
サーバーとの接続が確立する（ステップＳ１０１）、先ず最初のファイルＡが選択される（ステップＳ１０２）。
【００１７】
次に、最後のバックアップ以降、そのファイルＡが更新され、あるいは新たに作成されたか否かが判定され（ステップＳ１０３）、更新されていたときあるいは新たに作成されたファイルであるときは、そのファイルＡの更新前のバージョンがキャッシュ内にファイルＦ′として残っているか否かが判定される（ステップＳ１０４）。
【００１８】
更新前のバージョンであるファイルＦ′が残っているときは、差分データΔ＝ｄｉｆｆ（Ｆ′，Ａ）が求められ、その差分データΔがサーバーに送信され、今回のファイルＡのコピーを、それまでキャッシュ内に残っていたファイルＦ′に替えて、キャッシュに、新たなファイルＦ′として記憶させる（ステップＳ１０８）。
【００１９】
ここで、Δ＝ｄｉｆｆ（Ｆ′，Ａ）は、ファイルＦ′を基準としたときの、ファイルＦ′とファイルＡとの差分Δを求める演算を表わしている。
【００２０】
一方、キャッシュ内に更新前のバージョンが残っていなかったとき、すなわち、そのファイルＡが新たに作成されたファイルであったときは、そのファイルＡ全体がサーバーに送信し、そのファイルＡのコピーがキャッシュ内に置かれる（ステップＳ１０５）。
【００２１】
ステップＳ１０３において、選択されているファイルＡが、最後のバックアップ以降更新されておらず、新たに作成されたファイルでもなかったときは、そのファイルＡについては最後のバックアップ以前にバックアップ済であるため、そのファイルＡについてはサーバーに送信する必要はなく、ステップＳ１０６に進む。また、ステップＳ１０５あるいはステップＳ１０８において、今回選択されていたファイルＡについてのバックアップ処理が終了した後も、ステップＳ１０６に進む。ステップＳ１０６では対象となるファイル全てについてバックアップ処理（更新されていないため今回はバックアップしない場合を含む）が終了したか否かが判定され、全てのファイルについて終了したときは、このルーチンを終了し、まだバックアップ処理を行なうべきファイルが残っているときは次のファイルが選択されて（ステップＳ１０７）、その新たに選択されたファイルについて、ステップＳ１０３の判定以降の処理が行なわれる。
【００２２】
以上、ここでは、ファイルＡのバージョンを追いながら、古いファイルと新しいファイルの差分をサーバー側に送る（バックアップする）流れとなっている。
【００２３】
図８はサーバー側の、従来の差分圧縮ファイル転送のフローチャートである。
【００２４】
先ずクライアントとの接続を確立し（ステップＳ２０１）、対象となるファイル全てを受信したか否か判定される（ステップＳ２０２）。次にファイルを１つ受信する（ステップＳ２０３）。ここで、‘ファイルＡ’は差分圧縮されていないオリジナルの形式のファイルであり、‘ファイルΔ’は、上述のようにして差分圧縮Δ＝ｄｉｆｆ（Ｆ′，Ａ）されたファイルである。次に、今回受信したファイル（ファイルＡあるいはファイルΔ）に関係する、過去に既に退避されたファイル群や連結情報が読み出される。ここでは、このファイル群を［Ｆ，Δ１′，Δ２′，…，Δｍ′］と表記する。‘Ｆ’は、差分圧縮されていない直前のファイル、Δ１′は、１つ前の、ファイルＦとの差分圧縮ファイル、Δ２′は２つ前の差分圧縮ファイル、…、Δｍ′はｍ個前の差分圧縮ファイルである。
【００２５】
次に、今回受信したファイルは、ファイルＡであるかファイルΔであるかが判定される（ステップＳ２０５）。
【００２６】
今回受信したファイルがファイルＡであったときは、ステップＳ２０６に進み、今回受信したファイルＡを基準としたときのそのファイルＡと直前のファイルＦとの差分Δ′＝ｄｉｆｆ（Ａ，Ｆ）が求められ、新規のファイル群および連結情報として、［Ａ，Δ′，Δ１′，…，Δｍ］を退避する。その後、ステップＳ２０２に戻る。
【００２７】
一方、今回受信したファイルが差分圧縮ファイルΔであったときは、ステップＳ２０７に進み、差分展開の計算Ａ′＝Ｒ（Δ，Ｆ）、すなわち、前回のファイルＦと今回の圧縮差分ファイルΔとからファイルＡに相当するファイルＡ′を求め、次に再差分の計算Δ′＝ｄｉｆｆ（Ａ′，Ｆ）、すなわち、ファイルＡ′を基本としたときの、ファイルＡ′とファイルＦとの差分圧縮ファイルΔ′、すなわち、新しいファイルを基準としたときの差分である逆方向差分（詳細は後述する）のファイルが求められ、更新後のファイル群および連結情報として［Ａ′，Δ′，Δ１′，…，Δｍ］を退避する。その後ステップＳ２０２に戻る。
【００２８】
このようにして、新たなファイル群および連結情報として、［Ａ′，Δ′，Δ１′，…，Δｍ′］を退避する。
【００２９】
サーバー側では、クライアント側から送られてきた順方向差分Δ（古いファイルから新しいファイルを引いた差分、後述する図９を参照）を逆方向差分Δ′（新しいファイルから古いファイルを引いた差分）に置き換えてバックアップする流れとなっている。
【００３０】
このように、逆方向差分に置き換えて退避しておくのは、クライアント側でファイルが壊れてしまい復元しようとしたときは、新しいファイルあるいは新しいファイルから遡ったある時点のファイルを復元することになるため、逆差分を退避して置かないとファイルを復元するのに大変な処理を行なう必要を生じるからである。
【００３１】
図９は、差分方式の説明図である。
【００３２】
ここでは、ファイルが元ファイルＡ０からファイルＡ１，Ａ２，…，Ａへと順次更新されたものとする。
【００３３】
差分には、大別して、順方向差分（順差分）と逆方向差分（逆差分）が存在し、それらの順方向差分および逆方向差分のそれぞれについて線形差分とジャンプ差分が存在する。
【００３４】
順方向の線形差分は、元ファイル（最も古いファイル）Ａ０をそのままの形で保存しておき、順次、ファイルＡ０を基準としたときのファイルＡ０とファイルＡ１との差分Δ（Ａ０−Ａ１）を求め、次にファイルＡ１を基準としたときのファイルＡ１とファイルＡ２との差分Δ（Ａ１−Ａ２）を求め、以下同様にして最も新しいファイルＡとその１つ前のファイルＡｍ−１との差分を１つ前の差分Ａｍ−１を基準として求める（Δ（Ａｍ−１−Ａ））。
【００３５】
また、順方向のジャンプ差分は、元ファイル（最も古いファイルＡ０）をそのままに退避しておくことは線形差分と同様であるが、その後は全てファイルＡ０を基準としたときのファイルＡ０との差分Δ（Ａ０−Ａ１），Δ（Ａ０−Ａ２），…，Δ（Ａ０−Ａｍ）を求める。
【００３６】
順方向差分に共通しているのは、最も古いファイルＡを基準としている点である。
【００３７】
一方、逆方向差分（逆差分）最も新しいファイルＡｍをそのままの形で退避していく方式である。
【００３８】
逆方向差分（逆差分）のうちの線形差分は、以下のようにして差分圧縮ファイルを求める方式である。
【００３９】
最も古いファイルである元ファイルＡ０が、次のファイルＡ１に更新されると、更新後のファイルＡ１を基準としたときのそのファイルＡ１と更新前のファイルＡ０との差分Δ（Ａ１−Ａ０）を求めるとともに、更新後のファイルＡ１を保存しておく。次にさらにファイルＡ２に更新されると、その更新後のファイルＡ２を基準としたときのそのファイルＡ２と直前のファイルＡ１との差分Δ（Ａ２−Ａ１）を求めて、更新後のファイルＡ２を保存しておく。
【００４０】
このようにして、最終ファイルＡｍまで更新されると、
［Δ（Ａ１−Ａ０），Δ（Ａ２−Ａ１），…，Δ（Ａｍ−Ａｍ−１），Ａｍ］
のファイル群が求められる。
【００４１】
また、逆方向差分（逆差分）のうちのジャンプ差分は、以下のようにして差分圧縮ファイルを求める方式である。
【００４２】
最も古いファイルである元ファイルＡ０が次のファイルＡ１に更新されると、更新後のファイルＡ１を基準としたときの、そのファイルＡ１と更新前のファイルＡ０との差分Δ（Ａ１−Ａ０）を求めるとともに、更新後のファイルＡ１を保存しておく。ここまでは、上記の線形差分の場合と同じである。次にさらにファイルＡ２に更新されると、その更新後のファイルＡ２を基準としたときのファイルＡ２と１つ前のファイルＡ１との差分Δ（Ａ２−Ａ１）を求めるとともに、以前に求めた差分Δ（Ａ１−Ａ０）とファイルＡ１とからファイルＡ０を復元し、ファイルＡ２と、２つ前のファイルＡ０との差分Δ（Ａ２−Ａ０）も求める。
【００４３】
以下同様にして、最終ファイルＡｍが求められると、最終ファイルＡｍを基準としたときの、その最終ファイルＡｍと各ファイルＡｍ−１，Ａｍ−２，…，Ａ１，Ａ０との各差分Δ（Ａｍ−Ａｍ−１），Δ（Ａｍ−Ａｍ−２），…，Δ（Ａｍ−Ａ２），Δ（Ａｍ−Ａ１），Δ（Ａｍ−Ａ０）を求める。このようにして、最終ファイルＡｍまで更新されると、
［Δ（Ａｍ−Ａ０），Δ（Ａｍ−Ａ１），…Δ（Ａｍ−Ａｍ−１，Ａｍ）］
が求められる。
【００４４】
このように、差分をとる方向として、古いファイルから新しいファイルの差分をとる順方向差分と新しいファイルから古いファイルの差分をとる逆方向差分（逆差分）がある。また、差分をとる間隔として、最も近いバージョン同士の差分をとる線形差分と、離れたバージョン同士の差分をとるジャンプ差分がある。
【００４５】
上記の差分データの基本的な求め方は、非特許文献１に記載されている。
【００４６】
以上、図９に示すように、４通りの差分が考えられているが、ユーザーの所望に即した差分の取り方（差分アーカイブの作り方（後述する））までは明確になっていない。
【特許文献１】ＵＳＰ５６３４０５２号公報
【非特許文献１】Ｒａｎｄａｌ  Ｃ．Ｂｕｒｎｓ，  Ｄａｒｒｅｌｌ  Ｄ．Ｅ．Ｌｏｎｇ，“Ｅｆｆｉｃｉｅｎｔ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｂａｃｋｕｐ  ｗｉｔｈ  Ｄｅｌｔａ  Ｃｏｍｐｒｅｓｓｉｏｎ，”Ｐｒｏｃｅｅｄｉｎｇ  ｏｆ  ｔｈｅ  Ｆｉｆｔｈ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｉ／Ｏ  ｉｎ  Ｐｓｒａｌｌｅｌ  ａｎｄ  Ｄｓｔｒｉｂｕｔｅｄ  Ｓｙｓｔｅｍｓ，  ＡＣＭ：Ｓａｎ  Ｊｏｓｅ，  Ｎｏｖ．１９９７，ｐｐ．２６−３６．
【発明の開示】
【発明が解決しようとする課題】
【００４７】
図１０は、従来の差分圧縮を用いたバックアップ技術（特許文献１）の手順を示すフローチャートである。
【００４８】
先ずクライアントとサーバーとの双方で相手との接続を確立する（ステップＳ３０１，Ｓ３０２）。
【００４９】
次に、クライアント側でサーバー側にバックアップデータとして送るべき差分データを作成し（ステップＳ３０３）、その作成した差分データをサーバーに送信し（ステップＳ３０４）、まだ対象となるデータが残っているときは（ステップＳ３０５）、ステップＳ３０３に戻り、その残っているデータについても差分データを作成する（ステップＳ３０３）。一方、サーバーは、クライアントから送信されてきた差分データを受信し（ステップＳ３０６）、その受信した差分データを展開して再差分作成を行ない（図８ステップＳ２０７参照）、作成されたデータを退避する（ステップＳ３０７）。
【００５０】
尚、このステップＳ３０７の処理については、図８を参照して説明したが、後で図１１を参照して詳述する。
【００５１】
対象となるデータがまだ残っているときは（ステップＳ３０８）、ステップＳ３０６に戻って次の差分データを受信する。
【００５２】
クライアント側のステップＳ３０５で対象となるデータの送信が全て終了したと判定され、またサーバー側のステップＳ３０８で、対象となるデータの受信が全て終了したと判定されると、互いの間の接続を解除する（ステップＳ３０９，Ｓ３１０）。
【００５３】
図１１は、図１０に示すバックアップ技術（特許文献１）における、クライアントからサーバーに送信される差分データの作成方法（図１０ステップＳ３０３）、およびサーバーで受信した差分データから、退避のためのデータを作成する方法（図１０ステップＳ３０３）の説明図である。
【００５４】
尚、ここでは簡単のため、ファイルＡ０が作成され、そのファイルＡ０がファイルＡ１に更新され、その更新されたファイルＡ１がもう一度ファイルＡ２に更新されたものとし、これら３つのファイルＡ０〜Ａ２に関するバックアップおよびデータの復元について説明する。
【００５５】
クライアントからサーバーに、先ず最初の元ファイルＡ０がそのままの形で送信され、サーバーでは、その元ファイルＡ０がセーブされる（Ｓａｖｅ［Ａ０］）。
【００５６】
次にクライアントでは、元ファイルＡ０を基準としたときの元ファイルＡ０と１回目の更新ファイルＡ１との間の差分（順差分）ｄｉｆｆ（Ａ０，Ａ１）＝Δ１が求められ、差分ファイルΔ１がサーバーに送信される。
【００５７】
するとサーバーでは、今回送信されてきた差分ファイルΔ１と、先に送信されてきている元ファイルＡ０とに基づいて、Ａ１′＝Ｒ（Δ１，Ａ０）の演算、すなわち、元ファイルＡ０と今回送信されてきた順差分の差分ファイルΔ１とから、ファイルＡ１と同じファイルＡ１′を復元し、次いでΔ１′＝ｄｉｆｆ（Ａ１′，Ａ０）の演算、すなわち、復元したファイルＡ１′を基準としたときのその復元したファイルＡ１′と元ファイルＡ０との差分（逆差分）が求められ、今度はファイルＡ１′と逆差分の差分ファイルΔ１′とが退避される（Ｓａｖｅ［Ａ１′，Δ１′］）。
【００５８】
次に、クライアントでは、１回目の更新後のファイルＡ１を基準としたときのそのファイルＡ１と２回目の更新後のファイルＡ２との差分（順差分）ｄｉｆｆ（Ａ１，Ａ２）＝Δ２が求められて、その差分ファイルΔ２がサーバーに送信される。
【００５９】
するとサーバーでは、今回送信されてきた差分ファイルΔ２と、退避しておいたファイルＡ１′とに基づいて、Ａ２′＝Ｒ（Δ２，Ａ１′）の演算、すなわち、ファイルＡ１′と今回送信されてきた順差分の差分ファイルΔ２とから、ファイルＡ２と同じファイルＡ２′を復元し、次いでΔ２′＝ｄｉｆｆ（Ａ２′，Ａ１′）の演算、すなわち、復元したファイルＡ２′を基準としたときのそのファイルＡ２′とファイルＡ１′との差分（逆差分）が求められ、今度はファイルＡ２′と逆差分の差分ファイルΔ２′と逆差分の差分ファイルΔ１′が退避される（Ｓａｖｅ［Ａ２′，Δ２′，Δ１′］）。
【００６０】
以上のようにしてサーバーに退避されたバックアップデータをクライアントに送信してクライアントで元のデータを復元しようとするときは、サーバーからファイルＡ２′と差分ファイルΔ２′と差分ファイルΔ１′が送信される。クライアントでは、最新のファイルＡ２の復元でよいときは、このファイルＡ２′をそのままファイルＡ２として使えば済むが、１つ前のファイルＡ１を復元したいときは、ファイルＡ２と差分ファイルＡ２′とからＡ１＝Ｒ（Δ２′，Ａ２）の演算、すなわち、ファイルＡ２を差分ファイルΔ２′の分だけ修正してファイルＡ１を求める。さらにもう１つ前のファイルＡ０を復元したいときは、さらにＡ０＝Ｒ（Δ１′，Ａ１）の演算によりファイルＡ０を復元する。
【００６１】
サーバーでバックアップデータを逆差分の形式で保持しておくことにより、上記のようにスムーズな復元が可能となる。
【００６２】
図１０に戻って従来技術の問題点を説明する。
【００６３】
図１０に示す処理では、クライアントとサーバーとの間の接続を確立させた後（ステップＳ３０１，Ｓ３０２）、クライアント側では、上記のようにして差分データを作成し（ステップＳ３１３）、サーバー側では、クライアントから受信した差分データを展開し、さらに再差分作成を行なう必要があり（ステップＳ３０７）、クライアントとサーバーとの間の接続の確立（ステップＳ３０１，Ｓ３０２）からその接続の解除（ステップＳ３０９，Ｓ３１０）までの間のオーバーヘッドが大きく、時間がかかることになる。特にサーバーが多数のクライアントのバックアップを担う場合、このオーバーヘッドがネックとなってバックアップを担当するクライアントの数に制限を受けるという問題がある。
【００６４】
本発明は、上記事情に鑑み、データバックアップのための処理の軽減が図られたバックアップシステム、クライアント、およびサーバーを提供することを目的とする。
【課題を解決するための手段】
【００６５】
上記目的を達成する本発明のバックアップシステムのうちの第１のバックアップシステムは、データを処理し所定のタイミングごとにバックアップデータを送信するクライアントと、クライアントから送信されてきたバックアップデータを受信して記憶しておき、クライアントからの要請に基づいてバックアップデータをクライアントに送信するサーバーとを備えたバックアップシステムにおいて、上記クライアントが、サーバーへのバックアップデータの送信タイミングを待たずに、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルを作成する逆差分ファイル作成部と、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、逆差分アーカイブ作成部で作成された逆差分アーカイブをバックアップデータとしてサーバーに送信するバックアップデータ送信部とを備え、上記サーバーが、クライアントから送信されてきたバックアップデータとしての逆差分アーカイブを受信するバックアップデータ受信部と、バックアップデータ受信部で受信された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とする。
【００６６】
本発明の第１のバックアップシステムによれば、クライアントは、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルをサーバーへのバックアップデータの送信タイミングを待たずに作成するものであるため、空き時間に差分演算を行なうことができ、図１０を参照して説明した従来例のように、サーバーとの接続を確立させてから差分演算を行なうものと比べ、データバックアップのためのオーバーヘッドを大幅に低減することができる。
【００６７】
また、クライアント側で同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成して送信するため、サーバー側ではその逆差分アーカイブを受信してそのまま格納しておけばよく、この点からもデータバックアップのためのオーバーヘッドが大幅に低減される。
【００６８】
また、上記目的を達成する本発明のバックアップシステムのうちの第２のバックアップシステムは、データを処理しバックアップデータを送信するクライアントと、クライアントから送信されてきたバックアップデータを受信して記憶しておきクライアントからの要請に基づいてバックアップデータをクライアントに送信するサーバーとを備えたバックアップシステムにおいて、上記クライアントが、同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成する順差分・逆差分ファイル作成部と、新たなファイル名のファイルが作成されたときはその新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、最初のファイルを一度送信した後は、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するバックアップデータ送信部とを備え、上記サーバーが、クライアントから送信されてきたバックアップデータを受信するバックアップデータ受信部と、バックアップデータ受信部で受信されたバックアップデータとしての、最初のファイル、並びに、順差分ファイルおよび逆差分ファイルに基づいて、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、逆差分アーカイブ作成部で作成された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とする。
【００６９】
本発明の第２のバックアップシステムによれば、クライアントは、新たなファイル名の最初のファイルをバックアップデータとしてサーバーに送信した後は、更新前後のファイルの順差分ファイルと逆差分ファイルを作成してバックアップデータとしてサーバーに送信するものであるため、サーバー側では、前述の従来技術のように順差分ファイルのみを送信する場合と比べ、逆差分アーカイブを高速に求めることができ、データバックアップのためのオーバヘッドを大きく減らすことができる。
【００７０】
またクライアント側で順差分ファイルと逆差分ファイルが作成されるが、これらはサーバーとの接続を確立するよりも前に行なうことができ、そのクライアントの空き時間を利用して順差分ファイルと逆差分ファイルを作成しそれらの作成が終了してからサーバーと接続するようにすれば、オーバーヘッドをさらに下げることができる。
【００７１】
ここで、上記第１および第２のデータバックアップシステムのいずれにおいても、上記サーバーが、複数のクライアントのデータバックアップを担うものであって、逆差分アーカイブ格納部は、クライアントごとの逆差分アーカイブを、クライアントごとに設定された記憶領域に格納するものであることが好ましい。
【００７２】
クライアントごとに記憶領域を分けておくことにより、サーバーは多数のクライアントのバックアップデータを各クライアントについて独立に取り扱うことができる。
【００７３】
また、上記サーバーが、複数のクライアントのデータバックアップを担うものであって、逆差分アーカイブ格納部は、可搬型記憶媒体（例えばＭＯ）が取出し自在に装填されて装填された可搬型記憶媒体をアクセスする媒体アクセス部を有し、クライアントごとの逆差分アーカイブを、クライアントごとに設定された可搬型記憶媒体に格納するものであってもよい。
【００７４】
こうすることにより、クライアントごとのバックアップデータを別々の可搬型記憶媒体に退避させておくことができる。
【００７５】
また、上記目的を達成する本発明のクライアントのうちの第１のクライアントは、上述の第１のバックアップシステムに適合するクライアントである。すなわち、本発明の第１のクライアントは、データを処理し、データのバックアップを担当するサーバーに所定のタイミングでバックアップデータを送信するクライアントにおいて、サーバーへのバックアップデータの送信タイミングを待たずに、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルを作成する逆差分ファイル作成部と、同一ファイル名の最新のファイルと、更新ごとの逆差分ファイルとの組とからなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、逆差分アーカイブ作成部で作成された逆差分アーカイブをバックアップデータとしてサーバーに送信するバックアップデータ送信部とを備えたことを特徴とする。
【００７６】
ここで上記第１のクライアントにおいて、逆差分ファイル作成部は、ファイルアクセスをモニタしファイルが更新を検出して逆差分ファイルを作成するものであることが好ましい。
【００７７】
ファイル更新を検出して逆差分ファイルを作成するようにすると、逆差分ファイル作成のための負荷が分散されるとともに、バックアップデータ送信のタイミングで直ちに逆差分アーカイブを作成することができる。
【００７８】
また、上記目的を達成する本発明のクライアントのうちの第２のクライアントは、上記第２のバックアップシステムに適合するクライアントである。すなわち、本発明の第２のクライアントは、データを処理し、データのバックアップを担当するサーバーにバックアップデータを送信するクライアントにおいて、同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成する順差分・逆差分ファイル作成部と、新たなファイル名のファイルが作成されたときはその新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、最初のファイルを一度送信した後は、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するバックアップデータ送信部とを備えたことを特徴とする。
【００７９】
ここで、上記第２のクライアントについて、順差分・逆差分ファイル作成部は、ファイルアクセスをモニタしファイルの更新を検出して順差分ファイルおよび逆差分ファイルを作成するものであることが好ましい。
【００８０】
ファイル更新を検出して順差分ファイルおよび逆差分ファイルを作成することにより、それらのファイル作成のための負荷分散が図られる。
【００８１】
また、上記目的を達成する本発明のサーバーは、本発明の第２のバックアップシステムに適合するサーバーであって、データを処理しバックアップデータを送信するクライアントから送信されてきたバックアップデータを受信して記憶しておき、クライアントからの要請に基づいてバックアップデータをそのクライアントに送信するサーバーにおいて、上記クライアントが、同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成して、新たなファイル名のファイルが作成されたときは該新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、最初のファイルを一度送信した後は、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するものであって、このサーバーが、クライアントから送信されてきたバックアップデータを受信するバックアップデータ受信部と、バックアップデータ受信部で受信されたバックアップデータとしての、最初のファイル、並びに、順差分ファイルおよび逆差分ファイルに基づいて、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、逆差分アーカイブ作成部で作成された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とする。
【００８２】
尚、本発明の第１のバックアップシステムにおけるサーバーは、クライアントから送信されてきたバックアップデータ（逆差分アーカイブ）を受信してそのまま格納しておき、クライアントからの要請があったときに、そのバックアップデータをそのままクライアントに送信するだけの役割りであるため、ここでの記載は省略した。
【発明の効果】
【００８３】
以上に説明したように、本発明によれば、バックアップデータ作成、送信のためのオーバーヘッドを大幅に低減することができる。
【発明を実施するための最良の形態】
【００８４】
以下、本発明の実施形態について説明する。
【００８５】
ここで説明する実施形態は、図１あるいは図２を参照して説明したクライアント・サーバーシステムに適用されるものであり、ここでのあらためての図示及び説明は省略する。また、サーバーに格納されたバックアップデータをクライアントに返送してファイルを復元する部分については、図６や、さらに具体的には図１１を参照して説明した復元アルゴリズムと異なるところはないため、ここでは、クライアントからサーバに向けてバックアップデータを送信するデータバックアップの処理について説明する。
【００８６】
図１２は、本発明の第１のバックアップシステムの実施形態である第１実施形態を構成する、クライアントとサーバーの各処理を示すフローチャートである。
【００８７】
クライアント側では、前回のバックアップと次回のバックアップとの間に、すなわち、バックアップのタイミングを待たずに、ファイル更新時に随時逆差分アーカイブを作成する（ステップＳ４０１）。この逆差分アーカイブの作成方法については後述する。
【００８８】
バックアップデータをサーバーに送信するタイミングに達すると、クライアントとサーバーは互にこの間の接続を確立し（ステップＳ４０２，Ｓ４０３）、クライアントからサーバーに逆差分アーカイブが送信される（ステップＳ４０４，Ｓ４０６）。
【００８９】
サーバーは、逆差分アーカイブを受信すると、その受信した逆差分アーカイブを退避する（ステップＳ４０７）。この逆差分アーカイブの送受信およびサーバーでの退避を、対象となる全ての逆差分アーカイブについて行ない（ステップＳ４０５，Ｓ４０８）、対象となる全ての逆差分アーカイブの送受信が終了すると互いの接続を解除する（ステップＳ４０９，Ｓ４１０）。
【００９０】
尚、ファイルの復旧の際は、送られた時と同じ差分の並び（逆方向の線形差分）でサーバー側からクライアント側に送ることで、最も最新のファイルから逆順に復旧することになる。
【００９１】
図１３は、クライアント側での逆差分アーカイブの作成処理をあらわすフローチャート、図１４は、その逆差分アーカイブの作成処理の説明図である。
【００９２】
ここでは、前回のデータバックアップを行なった時刻Ｔ１の直後から以下の処理を開始するものとする。ここでは代表的にファイルＡの更新を問題とし、一連のファイルＡの中の時刻Ｔ１における最初のファイルをＡ０とする。
【００９３】
ファイルＡが更新されたか否かが監視され（ステップＳ５０１）、ファイルＡが更新されると逆差分の差分データが作成されてスタックされる（ステップＳ５０２）。
【００９４】
図１５は、ファイルが更新されたか否かの監視アルゴリズムの説明図である。
【００９５】
ここではファイルをアクセスするアプリケーションと、ファイルを管理するファイルシステムとの間にファイルアクセス検知手段を設け、ファイルオープン（ＦＯＰＥＮ[Ｆｉｌｅ名]）又はファイルリード（ＦＲＥＡＤ[Ｆｉｌｅ名]）の命令が実行されたときはそのときのファイル名のファイルを更新前のファイルとしてキープしており、ファイルライト（ＦＷＲＩＴＥ[Ｆｉｌｅ名]）の命令が実行されたときにそのＦＷＲＩＴＥ[Ｆｉｌｅ名]により作成されたファイル（更新ファイル）と、元ファイルとの差分ファイルを作成（ファイルクリエイトＦＣＲＥＡＴ[Ｆｉｌｅ名]）する。
【００９６】
こうすることに、ファイルアクセスが検知されてファイルが更新されるごとに差分ファイルが作成される。
【００９７】
図１３に戻って説明を続行する。
【００９８】
ステップＳ５０２では、差分データとして、Δｍ′＝ｄｉｆｆ（Ａｍ＋１，Ａｍ）が作成される。この式は、ファイルＡが元ファイルＡ０から初回にファイルＡ１に更新されたときは、
Δ０′＝ｄｉｆｆ（Ａ１，Ａ０）
となり、更新後のファイルＡ１を基準として、その更新後のファイルＡ１と更新前のファイルＡ０との差分（逆差分）Δ０′を求めることを意味している。
【００９９】
Δｍ′＝ｄｉｆｆ（Ａｍ＋１，Ａｍ）
は、それを一般化したものであり、今回の更新後のファイルＡｍ＋１を基準として、その更新後のファイルＡｍ＋１と直前のファイルＡｍとの差分（逆差分）Δｍ′を求めることを意味する。
【０１００】
ステップＳ５０２では、ファイルの更新を受けて逆差分の差分データΔｍ′を求め、これまでにスタックされている差分データΔ０′，Δ１′，…，Δｍ−１′の上にさらに今回の差分データΔｍ′がスタックされる。
【０１０１】
図１４（Ａ）は今回のスタックの直前のメモリ（スタッカ）の状態を表わす模式図、図１４（Ｂ）は今回のスタック直後のメモリ（スタッカ）の状態を表わす模式図である。
【０１０２】
図１４（Ａ）にはΔ０′，Δ１′，…，Δｍ−１′がこの順にスタックされており、ファイルＡｍがファイルＡｍ＋１に更新されると、上記の差分データΔｍ′が求められ、差分データΔｍ−１′の上に差分データΔｍ′が格納される。
【０１０３】
再度、図１３に戻って説明を続ける。
【０１０４】
ステップＳ５０２では、上記のようにして差分データΔｍ′を求めてスタッカにスタックした後、ｍの値がインクリメントされる。
【０１０５】
次いでステップＳ５０３において、次のバックアップの時刻Ｔ２に達したか否かが判定され、まだ時刻Ｔ２に達していないときはステップＳ５０１に戻ってファイルＡの更新の監視を続ける。
【０１０６】
次のバックアップの時刻Ｔ２に達すると（ステップＳ５０３）、前回の時刻Ｔ１のバックアップ以降ファイルＡが更新されているか否かが判定され、更新されていなければ今回はファイルＡについて新たなバックアップは不要があるため、何もせずにそのまま終了する。前回の時刻Ｔ１のバックアップ以降、ファイルＡが更新されていたときは、ステップＳ５０５に進み、スタッカから逆差分の差分データ列が読み出されるとともに、最新のファイルＡMと合体されて逆差分アーカイブが作成される。
【０１０７】
図１４（Ｃ）は、時刻Ｔ２に達したときのスタッカの状態を表わした模式図である。
【０１０８】
ここでは、最後の更新ファイルＡMと１つ前のファイルＡM−１との逆差分の差分データΔＭ−１′を先頭にして、逆差分データがΔＭ−１′，…，Δｍ′，Δｍ−１′，…，Δ１′，Δ０′の順に並んでなる。そこでこれを、上から順に読み出して最新のファイルＡMと合体させることにより逆差分アーカイブ[ＡM，ΔＭ−１′，…，Δｍ′，Δｍ−１′，…，Δ１′，Δ０′]が作成される。
【０１０９】
その後、図１２に示すように、サーバーとの間で接続が確立され（ステップＳ４０２）、上記のようにして作成された逆差分アーカイブがサーバーに送信され、サーバー側では、この送信されてきた逆差分アーカイブを受信して退避する（ステップＳ４０６，Ｓ４０７）。
【０１１０】
ここでは代表的にファイルＡについて説明したが、以上の処理はバックアップを行なうべきファイル全てに行なわれる。
【０１１１】
図１６は、以上の第１実施形態のバックアップ処理を実行する、クライアントおよびサーバの機能ブロック図である。
【０１１２】
クライアントおよびサーバーでの処理については説明済であるため、ここではその処理実現する機能構成について簡単に説明する。
【０１１３】
クライアントは、
ファイルを記憶するファイル記憶手段１０１と、
アプリケーションの対象ファイルを読み出して格納する読出ファイル格納手段１０２と、
アプリケーションを実行するアプリケーション実行手段１０３と、
アプリケーションで変更した更新ファイルを格納する更新ファイル格納手段１０４と、
読出しと更新のファイルから逆差分ファイルを生成する逆差分ファイル生成手段１０５と、
逆差分ファイルを順次格納する逆差分ファイル群格納手段１０６と、
これまでの逆差分ファイル群を読み出す逆差分ファイル群読出手段１０７と、
最新の更新ファイルと読み出した逆差分ファイル群をまとめてアーカイブする逆差分アーカイブ生成手段１０８と、
生成した逆差分アーカイブをサーバー側に送信する逆差分アーカイブ送信手段１０９と
で構成される。
【０１１４】
サーバーは、
送られてきた逆差分アーカイブを受信する逆差分アーカイブ受信手段２０１と、
受信した逆差分アーカイブを格納する逆差分アーカイブ格納手段２０２と、
これまでの逆差分アーカイブを記憶しておくバックアップ記憶手段２０３と
で構成される。
【０１１５】
処理の流れとしては、クライアント側において、アプリケーションの実行時に所望のファイルを読出し、処理して更新ファイルを作成した際に逆差分ファイルを生成し、その度に、Ｆｉｒｓｔ−ｉｎ，Ｌａｓｔ−ｏｕｔ形式のメモリ（スタッカ）に順次格納する。次にバックアップする時に、最新の更新ファイルとこれまで蓄積してきた逆差分ファイル群をひとまとめにして逆差分アーカイブを作成し、サーバー側に送信する。サーバー側では、逆差分アーカイブを受信し、バックアップファイル記憶手段に格納する。
【０１１６】
図１７は、上記の処理の模式図である。
【０１１７】
クライアント例で同じファイルの中で逆差分の差分データをアーカイブすることで、サーバ側では、その逆差分アーカイブをそのまま蓄積退避でき、クライアント側の所望に応じてその同一ファイルの中で逆方向に、すなわち最新のファイルから順に展開して元のファイルを復元することができる。
【０１１８】
図１８は、逆差分アーカイブのフォーマットを示す模式図である。
【０１１９】
ここでは、これ全体のファイル名（Ｗ）と、最新のファイルのデータ[Ｗ４]およびその属性情報（番号、ファイルの作成（更新）の時刻、その他の属性情報）からなるブロック、１つ前の差分データ[Δ４−３]およびその属性情報からなるブロック、…の順に並んでいる。ここでは、ファイル作成時刻（更新時刻）を基に所望のファイルを復元することができる。また、その他の属性情報としてクライアント側でファイル復元の際に役に立つ情報、例えばコメント等を記入しておき、そのコメント等を参照して、所望の場面のファイルを復元できるようにしてもよい。
【０１２０】
図１９は、本発明の第２のバックアップシステムの一実施形態である第２実施形態を構成する、クライアントとサーバーの各処理を示すフローチャートである。
【０１２１】
クライアント側では、ファイル更新時に順差分ファイルと逆差分ファイルとの双方を作成し（ステップＳ６０１）、その後クライアントとサーバー間で接続を確立して（ステップＳ６０２，Ｓ６０３）。順差分ファイルと逆差分ファイルを送受信する（ステップＳ６０４，Ｓ６０５）。但し、新たに作成されたファイルについては、その新たなファイルについても送受信する。
【０１２２】
この送受信が終了すると、互いの間の接続が解除され（ステップＳ６０６，Ｓ６０７）、サーバー側では、その後、逆差分アーカイブが作成、退避される（ステップＳ６０８）。以上の処理が、バックアップを終了するまで継続される（ステップＳ６０９，Ｓ６１０）。
【０１２３】
図２０は、図１９のステップＳ６０１、すなわち、クライアントでの順差分ファイルおよび逆差分ファイル作成のステップの詳細フローを示すフローチャートである。ここでは、ファイルＡで代表させて説明する。
【０１２４】
ここでは、ファイルＡが更新されたか否かが監視され（ステップＳ７０１）、ファイルＡの更新が検出されると、順方向差分
Δｍ＝ｄｉｆｆ（Ａｍ，Ａｍ＋１）
と逆方向差分
Δｍ′＝ｄｉｆｆ（Ａｍ＋１，Ａｍ）
が作成される。
【０１２５】
図２１は、図１９のステップＳ６０８、すなわち、サーバー側での逆差分アーカイブ作成のステップの詳細説明図である。
【０１２６】
図１９のステップＳ６０５では、最初のファイルＡ０と、その後の更新のたびに順差分ファイルと逆差分ファイルを受信しており、今回の受信の直前では、前回までの逆差分アーカイブ［Ａｍ，Δｍ−１′，…，Δ１′，Δ０′］が作成されている。
【０１２７】
ここで、今回、図１９のステップＳ６０５で、新たな順差分ファイルΔｍと逆差分ファイルΔｍ′を受信すると、ステップＳ６０８では、先ず、ファイルＡｍと今回受信した順差分ファイルΔｍとを用いて、ファイルＡｍ＋１（Ａｍ＋１＝Ｒ［Ａｍ，Δｍ］）が展開される。
【０１２８】
次に、上記のようにして求めた（展開された）ファイルＡｍ＋１と、今回受信した逆差分ファイルΔｍ′とを用いて、新たな逆差分アーカイブ［Ａｍ＋１，Δｍ′，…，Δ０′］が作成されて退避される。
【０１２９】
ここで、前述の従来技術（図８ステップＳ２０７参照）では順差分ファイルしか送信されてきていないため、逆差分を求めるための再差分の計算Δ′＝ｄｉｆｆ（Ａ′，Ｆ）を必要としたが、本実施形態では、順差分ファイルΔｍと逆差分ファイルΔｍ′がペアで送信されてきているため、サーバー側での再差分の計算は不要であり、逆差分アーカイブを短時間に構築することができる。尚、クライアント側で逆差分の計算が必要となるが、クライアントでは空き時間を使って計算すればよく、負荷が分散されるため特に大きな負担とはならない。
【０１３０】
また、図１９〜図２１に示す実施形態では、ステップＳ６０１で順差分ファイルと逆差分ファイルが作成されるごとに即時にサーバーに送信され、サーバー側で逆差分アーカイブが作成される。したがって、クライアント側の負荷も少なく、サーバー側への転送も分散され、全体的な負担分散が図られる。
【０１３１】
図２２は、以上の第２実施形態のバックアップ処理を実現する、クライアントおよびサーバーの機能ブロック図である。
【０１３２】
クライアントおよびサーバーでの処理については、図１９〜図２１を参照して説明済でるため、ここではその処理を実現する機能構成について簡単に説明する。
【０１３３】
クライアントは、
ファイルを記憶するファイル記憶手段１１１と、
アプリケーションの対象ファイルを読み出して格納する読出ファイル格納手段１１２と、
アプリケーションを実行するアプリケーション実行手段１１３と、
アプリケーションで変更した更新ファイルを格納する更新ファイル格納手段１１４と、
読出しと更新のファイルから順差分ファイルと逆差分ファイルを生成する順差分・逆差分ファイル生成手段１１５と、
順差分と逆差分ファイルをサーバー側に送信する順差分・逆差分ファイル送信手段１１６とで構成される。
【０１３４】
また、サーバーは、
送られてきた順差分ファイルおよび逆差分ファイルを受信する順差分・逆差分ファイル受信手段２１１と、
受信した順差分ファイルを格納する順差分ファイル格納手段２１２と、
前回に更新したファイルを元ファイルとして格納する元ファイル格納手段２１３と、
順差分ファイルと元ファイルから更新ファイルを展開（再生）する更新ファイル展開手段２１４と、
展開された更新ファイルを格納する更新ファイル格納手段２１５と、
受信した逆差分ファイルを順次格納する逆差分ファイル群格納手段２１６と、
これまでの逆差分ファイル群を読み出す逆差分ファイル群読出手段２１７と、
最新の更新ファイルと読み出した逆差分ファイル群をまとめてアーカイブする逆差分アーカイブ生成手段２１８と、
生成した逆差分アーカイブを格納する逆差分アーカイブ格納手段２１９と、
生成した逆差分アーカイブを記憶しておくバックアップファイル記憶手段２２０とで構成される。
【０１３５】
処理の流れとしては、クライアント側において、アプリケーションの実行時に所望のファイルを読み出して処理し更新ファイルを作成した際に、順差分ファイルと逆差分ファイルを生成し、生成のたびにサーバー側に送信する。サーバー側では、受信した順差分ファイルと元ファイルから更新ファイル（次の元ファイルとして利用）を展開（再生）すると共に、同じく受信した逆差分ファイルをＦｉｒｓｔ−ｉｎ，Ｌａｓｔ−ｏｕｔ形式のメモリ（スタッカ）に順次格納する。次にバックアップする時に、最新の更新ファイルとこれまで蓄積してきた逆差分ファイル群をひとまとめにして逆差分アーカイブを作成し、バックアップ記憶手段２２０に記憶させる。
【０１３６】
図２３は、図１、図２に示すように、１台のサーバーで複数のクライアントのデータのバックアップを担うシステムにおける、クライアントとサーバーとの関係を示すフローチャートである。
【０１３７】
ここでは、複数のクライアントのそれぞれ（個別クライアント）がサーバーに接続し（ステップＳ８０１）、個別クライアントのＩＤ情報とサーバー上のクライアントに関する情報とが一致するか否かが判定され（ステップＳ８０２）、一致すると、その個別クライアントからサーバにバックアップデータが転送される（ステップＳ８０３）。サーバー側では、その転送されてきたバックアップデータがその個別クライアントごとの記憶領域に記憶される（ステップＳ８０４）。
【０１３８】
このようにして個別クライアントの情報を照合することにより、１台のサーバーが複数台のクライアントのデータバックアップを受け持つことができる。
【０１３９】
図２４は、クライアントサーバーシステムの他の例を示す図である。
【０１４０】
ここでは、複数台の携帯電話がクライアントである。ＭＯが挿入されてアクセスされるＭＯドライブがサーバとして作用する。これらのクライアント（携帯電話）とサーバー（ＭＯドライブ）との間は、例えばＢｌｕｅｔｏｏｔｈの規格に準拠した無線通信が可能である。
【０１４１】
ここでは、各クライアント（ここでは‘Ａさん’、‘Ｂさん’、‘Ｃさん’と称する）ごとにＭＯが用意されており、Ａさんの携帯電話のバックアップデータをサーバーに送信するときは、その送信に先立ってそのＭＯドライブにＡさん用のＭＯが挿入される。
【０１４２】
ここでは、このようにして、各クライアントごとにＭＯが用意されており、Ａさん用のＭＯがＭＯドライブに挿入されるとＡさんの携帯電話のバックアップデータのみを受け付ける。こうすることにより各クライアント別のバックアップデータが各クライアント別のＭＯに蓄積される。データ復元の機能も同様であり、データを復元しようとするクライアント用のＭＯがＭＯドライブに挿入され、そのＭＯからバックアップデータが読み出されてそのクライアント（携帯電話）に転送される。
【０１４３】
図２５は、図２４に示すクライアントサーバシステムにおける、データバックアップの流れを示すフローチャートである。
【０１４４】
ここでは、複数のクライアントのそれぞれ（個別クライアント）がサーバーに接続し、個別のクライアントのＩＤ情報とサーバー上（ＭＯドライブ上）の情報が一致するか否かが判定され（ステップＳ９０２）、一致するときにはさらにその個別クライアントのＩＤ情報とそのサーバー（ＭＯドライブ）に挿入されているＭＯの情報が一致するか否かが判定される（ステップＳ９０３）。すなわち、ここでは、今回接続された個別クライアントがこのサーバーがデータバックアップを担うべきクライアントであることが確認され、しかもこのクライアント用のＭＯが挿入されていることが確認される。
【０１４５】
これらの確認が行なわれると、その個別クライアントからサーバーにバックアップデータの転送が行なわれ（ステップＳ９０４）その転送されてきたバックアップデータは個別クライアントのＭＯに記憶される（ステップＳ９０５）。
【０１４６】
このように、これまで説明してきた第１および第２の実施形態によれば、差分データの作成を転送する前に済ませ、転送時は既に作成された差分データを送るのみにすることで、クライアント側及びサーバー側のオーバーヘッドが大幅に軽減される。
【０１４７】
以下、本発明の各種態様を付記する。
【０１４８】
（付記１）
データを処理し所定のタイミングごとにバックアップデータを送信するクライアントと、前記クライアントから送信されてきたバックアップデータを受信して記憶しておき、該クライアントからの要請に基づいて該バックアップデータを該クライアントに送信するサーバーとを備えたバックアップシステムにおいて、
前記クライアントが、
前記サーバーへのバックアップデータの送信タイミングを待たずに、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルを作成する逆差分ファイル作成部と、
同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブをバックアップデータとして前記サーバーに送信するバックアップデータ送信部とを備え、
前記サーバーが、
前記クライアントから送信されてきたバックアップデータとしての逆差分アーカイブを受信するバックアップデータ受信部と、
前記バックアップデータ受信部で受信された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とするバックアップシステム。
【０１４９】
（付記２）
データを処理しバックアップデータを送信するクライアントと、前記クライアントから送信されてきたバックアップデータを受信して記憶しておき該クライアントからの要請に基づいて該バックアップデータを該クライアントに送信するサーバーとを備えたバックアップシステムにおいて、
前記クライアントが、
同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成する順差分・逆差分ファイル作成部と、
新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するバックアップデータ送信部とを備え、
前記サーバーが、
前記クライアントから送信されてきたバックアップデータを受信するバックアップデータ受信部と、
前記バックアップデータ受信部で受信されたバックアップデータとしての、最初のファイル、並びに、順差分ファイルおよび逆差分ファイルに基づいて、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とするバックアップシステム。
【０１５０】
（付記３）
前記サーバーが、複数のクライアントのデータバックアップを担うものであって、
前記逆差分アーカイブ格納部は、クライアントごとの逆差分アーカイブを、クライアントごとに設定された記憶領域に格納するものであることを特徴とする付記１又は２記載のバックアップシステム。
【０１５１】
（付記４）
前記サーバーが、複数のクライアントのデータバックアップを担うものであって、
前記逆差分アーカイブ格納部は、可搬型記憶媒体が取出し自在に装填されて装填された可搬型記憶媒体をアクセスする媒体アクセス部を有し、クライアントごとの逆差分アーカイブを、クライアントごとに設定された可搬型記憶媒体に格納するものであることを特徴とする付記１又は２記載のバックアップシステム。
【０１５２】
（付記５）
データを処理し、データのバックアップを担当するサーバーに所定のタイミングでバックアップデータを送信するクライアントにおいて、
前記サーバーへのバックアップデータの送信タイミングを待たずに、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルを作成する逆差分ファイル作成部と、
同一ファイル名の最新のファイルと、更新ごとの逆差分ファイルとの組とからなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブをバックアップデータとして前記サーバーに送信するバックアップデータ送信部とを備えたことを特徴とするクライアント。
【０１５３】
（付記６）
前記逆差分ファイル作成部は、ファイルアクセスをモニタしファイルの更新を検出して逆差分ファイルを作成するものであることを特徴とする付記５記載のクライアント。
【０１５４】
（付記７）
データを処理し、データのバックアップを担当するサーバーにバックアップデータを送信するクライアントにおいて、
同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成する順差分・逆差分ファイル作成部と、
新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するバックアップデータ送信部とを備えたことを特徴とするクライアント。
【０１５５】
（付記８）
前記順差分・逆差分ファイル作成部は、ファイルアクセスをモニタしファイルの更新を検出して順差分ファイルおよび逆差分ファイルを作成するものであることを特徴とする付記７記載のクライアント。
【０１５６】
（付記９）
データを処理しバックアップデータを送信するクライアントから送信されてきたバックアップデータを受信して記憶しておき、該クライアントからの要請に基づいて該バックアップデータを該クライアントに送信するサーバーにおいて、
前記クライアントが、同一ファイル名の更新前のファイルを基準としたときの、更新前のファイルと更新後のファイルとの差分である順差分ファイルと、同一ファイル名の更新後のファイルを基準としたときの、更新後のファイルと更新前のファイルとの差分である逆差分ファイルとの双方を作成して、新たなファイル名の最初のファイルをバックアップデータとして送信するとともに、更新ごとの順差分ファイルおよび逆差分ファイルをバックアップデータとして送信するものであって、
このサーバーが、
前記クライアントから送信されてきたバックアップデータを受信するバックアップデータ受信部と、
前記バックアップデータ受信部で受信されたバックアップデータとしての、最初のファイル、並びに、順差分ファイルおよび逆差分ファイルに基づいて、同一ファイル名の最新の更新ファイルと更新ごとの逆差分ファイルとの組からなる逆差分アーカイブを作成する逆差分アーカイブ作成部と、
前記逆差分アーカイブ作成部で作成された逆差分アーカイブを格納する逆差分アーカイブ格納部とを備えたことを特徴とするサーバー。
【図面の簡単な説明】
【０１５７】
【図１】バックアップシステムの一例を示す図である。
【図２】バックアップシステムの他の例を示す図である。
【図３】従来のバックアップアルゴリズムの第１例を示す図である。
【図４】従来のバックアップアルゴリズムの第２例を示す図である。
【図５】従来のバックアップアルゴリズムの第３例を示す図である。
【図６】差分データ転送によるクライアント・サーバー間のバックアップシステムの基本概念図である。
【図７】クライアント側の、従来の差分圧縮ファイル転送のフローチャートである。
【図８】サーバー側の、従来の差分圧縮ファイル転送のフローチャートである。
【図９】差分方式の説明図である。
【図１０】従来の差分圧縮を用いたバックアップ技術（特許文献１）の手順を示すフローチャートである。
【図１１】図１０に示すバックアップ技術（特許文献１）における、クライアントからサーバーに送信される差分データの作成方法、およびサーバーで受信した差分データから退避のためのデータを作成する方法の説明図である。
【図１２】本発明の第１のバックアップシステムの実施形態である第１実施形態を構成する、クライアントとサーバーの各処理を示すフローチャートである。
【図１３】クライアント側での逆差分アーカイブの作成処理をあらわすフローチャートである。
【図１４】逆差分アーカイブの作成処理の説明図である。
【図１５】ファイルが更新されたか否かの監視アルゴリズムの説明図である。
【図１６】第１実施形態のバックアップ処理を実行する、クライアントおよびサーバの機能ブロック図である。
【図１７】図１６の処理の模式図である。
【図１８】逆差分アーカイブのフォーマットを示す模式図である。
【図１９】本発明の第２のバックアップシステムの実施形態である第２実施形態を構成する、クライアントとサーバーの各処理を示すフローチャートである。
【図２０】クライアントでの順差分ファイルおよび逆差分ファイル作成のステップの詳細フローを示すフローチャートである。
【図２１】サーバー側での逆差分アーカイブ作成のステップの詳細説明図である。
【図２２】第２実施形態のバックアップ処理を実現する、クライアントおよびサーバーの機能ブロック図である。
【図２３】１台のサーバーで複数のクライアントのデータバックアップを担うシステムにおける、クライアントとサーバーとの関係を示すフローチャートである。
【図２４】クライアント・サーバーシステムの他の例を示す図である。
【図２５】図２４に示すクライアント・サーバシステムにおける、データバックアップの流れを示すフローチャートである。
【符号の説明】
【０１５８】
１０    クライアント
２０    サーバー
３０    ＬＡＮ
４０    ＷＡＮ
１０１    ファイル記憶手段
１０２    読出ファイル格納手段
１０３    アプリケーション実行手段
１０４    更新ファイル格納手段
１０５    逆差分ファイル生成手段
１０６    逆差分ファイル群格納手段
１０７    逆差分ファイル群読出手段
１０８    逆差分アーカイブ生成手段
１０９    逆差分アーカイブ送信手段
１１１    ファイル記憶手段
１１２    読出ファイル格納手段
１１３    アプリケーション実行手段
１１４    更新ファイル格納手段
１１５    順差分・逆差分ファイル生成手段
１１６    順差分・逆差分ファイル送信手段
２０１    逆差分アーカイブ受信手段
２０２    逆差分アーカイブ格納手段
２０３    バックアップファイル記憶手段
２１１    順差分・逆差分ファイル受信手段
２１２    順差分ファイルを格納する手段
２１３    元ファイル格納手段
２１４    更新ファイル格納手段
２１５    更新ファイル展開手段
２１６    逆差分ファイル群格納手段
２１７    逆差分ファイル群読出手段
２１８    逆差分アーカイブ生成手段
２１９    逆差分アーカイブ格納手段
２２０    バックアップファイル記憶手段
【図１】
2005292905.tif 000003
【図２】
2005292905.tif 000004
【図３】
2005292905.tif 000005
【図４】
2005292905.tif 000006
【図５】
2005292905.tif 000007
【図６】
2005292905.tif 000008
【図７】
2005292905.tif 000009
【図８】
2005292905.tif 000010
【図９】
2005292905.tif 000011
【図１０】
2005292905.tif 000012
【図１１】
2005292905.tif 000013
【図１２】
2005292905.tif 000014
【図１３】
2005292905.tif 000015
【図１４】
2005292905.tif 000016
【図１５】
2005292905.tif 000017
【図１６】
2005292905.tif 000018
【図１７】
2005292905.tif 000019
【図１８】
2005292905.tif 000020
【図１９】
2005292905.tif 000021
【図２０】
2005292905.tif 000022
【図２１】
2005292905.tif 000023
【図２２】
2005292905.tif 000024
【図２３】
2005292905.tif 000025
【図２４】
2005292905.tif 000026
【図２５】
2005292905.tif 000027