(57)【要約】【課題】ファイル同期の効率を向上させる。【解決手段】転送元装置１０は、転送元ファイル１４１のデータを複数のブロックに分割する実データ分割部１１と、各ブロックのデータからハッシュ値を生成するハッシュ値生成部１２と、ハッシュ値を転送先装置２０に送信する送信部１３とを有し、転送先装置２０は、転送先ファイル２４１のデータを、実データ分割部１１によって分割された各ブロックと同サイズのブロックに分割する実データ分割部２１と、各ブロックのデータからハッシュ値を生成するハッシュ値生成部２２と、ハッシュ値生成部１２および２２によって生成されたハッシュ値をブロック番号ごとに比較し、不一致となったハッシュ値のブロック番号を転送元装置１０に送信する送信部２３とを有し、送信部１３は、転送先装置２０から受信したブロック番号に対応する実データを転送先装置２０に送信する。【選択図】図１
2011170667.tif 000002
【特許請求の範囲】
【請求項１】
ファイル同期の対象となるファイルをそれぞれ有する転送元装置と転送先装置とを備えるファイル同期システムであって、
前記転送元装置は、
ファイル同期の対象となる転送元の前記ファイルのデータを複数のブロックに分割する第１の分割部と、
前記第１の分割部によって分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第１の生成部と、
前記第１の生成部によって生成されたハッシュ値を前記転送先装置に送信する第１の送信部と、を有し、
前記転送先装置は、
ファイル同期の対象となる転送先の前記ファイルのデータを、前記第１の分割部によって分割された各ブロックと同サイズのブロックに分割する第２の分割部と、
前記第２の分割部によって分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第２の生成部と、
前記第１の生成部によって生成されたハッシュ値と前記第２の生成部によって生成されたハッシュ値とを、各ハッシュ値の生成元データを含むブロックを識別するブロック番号ごとにそれぞれ比較し、不一致となったハッシュ値に対応する前記ブロック番号を前記転送元装置に送信する第２の送信部と、を有し、
前記転送元装置の前記第１の送信部は、前記転送先装置から受信した前記ブロック番号に対応する前記ブロックに含まれるデータを前記転送先装置に送信する、
ことを特徴とするファイル同期システム。
【請求項２】
前記ファイルは、固定長のレコードを格納するファイルであることを特徴とする請求項１記載のファイル同期システム。
【請求項３】
前記ファイルは、追記型のファイルであることを特徴とする請求項１または２記載のファイル同期システム。
【請求項４】
ファイル同期の対象となるファイルをそれぞれ有する転送元装置と転送先装置とを備えるファイル同期システムで実行するファイル同期方法であって、
前記転送元装置が、
ファイル同期の対象となる転送元の前記ファイルのデータを複数のブロックに分割する第１の分割ステップと、
前記第１の分割ステップにおいて分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第１の生成ステップと、
前記第１の生成ステップにおいて生成されたハッシュ値を前記転送先装置に送信する第１の送信ステップと、を実行し、
前記転送先装置が、
ファイル同期の対象となる転送先の前記ファイルのデータを、前記第１の分割ステップにおいて分割された各ブロックと同サイズのブロックに分割する第２の分割ステップと、
前記第２の分割ステップにおいて分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第２の生成ステップと、
前記第１の生成ステップにおいて生成されたハッシュ値と前記第２の生成ステップにおいて生成されたハッシュ値とを、各ハッシュ値の生成元データを含むブロックを識別するブロック番号ごとにそれぞれ比較し、不一致となったハッシュ値に対応する前記ブロック番号を前記転送元装置に送信する第２の送信ステップと、を実行し、
前記転送元装置の前記第１の送信ステップが、前記転送先装置から受信した前記ブロック番号に対応する前記ブロックに含まれるデータを前記転送先装置に送信する、
ことを特徴とするファイル同期方法。
【請求項５】
請求項４に記載の各ステップをコンピュータに実行させるためのファイル同期プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル同期システム、ファイル同期方法およびファイル同期プログラムに関する。
【背景技術】
【０００２】
同じファイルを複数のシステムで取り扱う場合に、ファイル同期を行ってそれぞれのファイルの内容が同じ内容になるように管理することがある。ファイル同期を行う方法としては、例えば、対象ファイル全体を転送して同期をとる方法や、対象ファイルの更新前後における差分情報のみを転送して同期をとる方法等がある。差分情報のみを転送する方法を採用することで、同期処理のターンアラウンドタイムを短縮することが可能となる。
【０００３】
下記特許文献１には、差分情報のみを転送する方法でファイル同期を行うシステムが開示されている。このシステムでは、ファイルの転送元装置が更新前後のファイルをそれぞれ管理し、更新前後のファイルから抽出した差分データを転送先装置に送信している。そして、転送先装置が差分データと更新前のファイルとを用いて更新後のファイルを生成することで、ファイル同期を行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３３７７２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献1に記載のシステムでは、更新後のファイルに加え、更新前のファイルも管理している。したがって、記憶領域の増大やファイルメンテナンス作業の増加等を招来し、コストが増大する要因になっている。
【０００６】
本発明は、上述した課題を解決するためになされたものであり、ファイル同期の効率を向上させることができるファイル同期システム、ファイル同期方法およびファイル同期プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のファイル同期システムは、ファイル同期の対象となるファイルをそれぞれ有する転送元装置と転送先装置とを備えるファイル同期システムであって、前記転送元装置は、ファイル同期の対象となる転送元の前記ファイルのデータを複数のブロックに分割する第１の分割部と、前記第１の分割部によって分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第１の生成部と、前記第１の生成部によって生成されたハッシュ値を前記転送先装置に送信する第１の送信部と、を有し、前記転送先装置は、ファイル同期の対象となる転送先の前記ファイルのデータを、前記第１の分割部によって分割された各ブロックと同サイズのブロックに分割する第２の分割部と、前記第２の分割部によって分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第２の生成部と、前記第１の生成部によって生成されたハッシュ値と前記第２の生成部によって生成されたハッシュ値とを、各ハッシュ値の生成元データを含むブロックを識別するブロック番号ごとにそれぞれ比較し、不一致となったハッシュ値に対応する前記ブロック番号を前記転送元装置に送信する第２の送信部と、を有し、前記転送元装置の前記第１の送信部は、前記転送先装置から受信した前記ブロック番号に対応する前記ブロックに含まれるデータを前記転送先装置に送信する、を備える。
【０００８】
本発明のファイル同期方法は、ファイル同期の対象となるファイルをそれぞれ有する転送元装置と転送先装置とを備えるファイル同期システムで実行するファイル同期方法であって、前記転送元装置が、ファイル同期の対象となる転送元の前記ファイルのデータを複数のブロックに分割する第１の分割ステップと、前記第１の分割ステップにおいて分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第１の生成ステップと、前記第１の生成ステップにおいて生成されたハッシュ値を前記転送先装置に送信する第１の送信ステップと、を実行し、前記転送先装置が、ファイル同期の対象となる転送先の前記ファイルのデータを、前記第１の分割ステップにおいて分割された各ブロックと同サイズのブロックに分割する第２の分割ステップと、前記第２の分割ステップにおいて分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第２の生成ステップと、前記第１の生成ステップにおいて生成されたハッシュ値と前記第２の生成ステップにおいて生成されたハッシュ値とを、各ハッシュ値の生成元データを含むブロックを識別するブロック番号ごとにそれぞれ比較し、不一致となったハッシュ値に対応する前記ブロック番号を前記転送元装置に送信する第２の送信ステップと、を実行し、前記転送元装置の前記第１の送信ステップが、前記転送先装置から受信した前記ブロック番号に対応する前記ブロックに含まれるデータを前記転送先装置に送信する。
【０００９】
本発明のファイル同期プログラムは、上記ファイル同期方法に含まれる各ステップをコンピュータに実行させる。
【発明の効果】
【００１０】
本発明によれば、ファイル同期の効率を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態におけるファイル同期システムの構成を例示するブロック図である。
【図２】転送元装置におけるハッシュ値生成レートテーブルのデータ構成を例示する図である。
【図３】転送元装置における転送レートテーブルのデータ構成を例示する図である。
【図４】転送元装置におけるヒット率テーブルのデータ構成を例示する図である。
【図５】転送先装置におけるハッシュ値生成レートテーブルのデータ構成を例示する図である。
【図６】ファイル同期システムにおけるファイル転送の処理手順を説明するためのフローチャートである。
【図７】図６の処理手順に含まれる差分転送の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して、本発明に係るファイル同期システム、ファイル同期方法およびファイル同期プログラムの好適な実施形態について説明する。
【００１３】
まず、実施形態におけるファイル同期システムの構成について説明する。図１は、実施形態におけるファイル同期システムの構成を例示するブロック図である。図１に示すように、ファイル同期システム１は、転送元装置１０と、転送先装置２０とを有する。転送元装置１０および転送先装置２０は、ネットワーク３０を介して接続される。
【００１４】
転送元装置１０および転送先装置２０は、ファイル同期の対象となるファイル１４１および２４１をそれぞれ備えている。本実施形態では、説明の便宜のために、転送元装置１０のファイル１４１が更新された場合に、この更新された情報を、転送先装置２０のファイル２４１に反映させる場合について説明する。なお、転送先装置２０のファイル２４１が更新され、この更新された情報を転送元装置１０のファイル１４１に反映させる場合には、以下に説明する転送元装置１０の各機能と転送先装置２０の各機能とを入れ替えることで実現することができる。転送元装置１０および転送先装置２０は、それぞれの各機能を併せて備えることができる。
【００１５】
ここで、転送元装置１０および転送先装置２０は、物理的には、例えば、ＣＰＵ（Central Processing Unit）と、記憶装置と、入出力インターフェースとを含んで構成される。記憶装置には、例えば、ＣＰＵで処理されるプログラムやデータを記憶するＲＯＭ（Read Only Memory）やＨＤＤ（Hard Disk Drive）、主として制御処理のための各種作業領域として使用されるＲＡＭ（Random Access Memory）等が含まれる。転送元装置１０および転送先装置２０のＨＤＤには、ファイル同期の対象となるファイル１４１および２４１がそれぞれ格納される。ＣＰＵが、ＲＯＭに記憶されたプログラムを実行し、ＲＡＭに展開されるデータを処理することで、後述する転送元装置１０および転送先装置２０の各機能が実現する。なお、ファイル同期の対象となるファイルは、一組であることには限定されず、複数組設定することができる。
【００１６】
転送元装置１０は、実データ分割部１１と、ハッシュ値生成部１２と、送信部１３と、記憶部１４と、転送選択部１５と、を有する。
【００１７】
実データ分割部１１は、ファイル同期の対象となる転送元のファイル１４１の実データを複数のブロックに分割する。分割するブロック数は、分割ブロック数Ｎとして予め設定し、記憶部１４に記憶させる。Ｎ個に分割した各ブロックには、ブロックを識別するブロック番号を付与する。実データ分割部１１は、各ブロックのサイズを、分割ブロックサイズＤとして記憶部１４に一時的に記憶させる。
【００１８】
ハッシュ値生成部１２は、実データ分割部１１によってＮ個に分割された各ブロックに含まれる実データからそれぞれハッシュ値を生成する。ハッシュ値は、所定のハッシュ関数に各実データを入力することで生成する。ハッシュ値生成部１２は、ハッシュ値の生成に要した時間を積算してハッシュ値生成時間を算出する。ハッシュ値生成部１２は、全てのブロックの実データからハッシュ値を生成した後に、ファイルサイズＡおよびハッシュ値生成時間を用いて、図２に示す転送元側のハッシュ値生成レートテーブルに新規レコードを追加する。
【００１９】
図２に示す転送元側のハッシュ値生成レートテーブルは、データ項目として、例えば、転送処理名項目、ファイルサイズ項目、ハッシュ値生成時間項目および重み付け項目を有する。転送処理名項目は、転送処理を識別するための情報を格納する。ファイルサイズ項目は、転送元のファイルのファイルサイズを格納する。積算時間項目は、ハッシュ値生成部１２でハッシュ値を生成する際に要した時間の積算値を格納する。重み付け項目は、各レコードを用いてハッシュ値生成レートを算出する際に、各レコードに付与する重み付けを格納する。重み付けは、新しく生成されたレコード程、大きくなるように設定する。これにより、直近の転送状況を反映した生成レートを算出することが可能となる。
【００２０】
送信部１３は、ハッシュ値取得要求を転送先装置２０に送信する。ハッシュ値取得要求には、例えば、ハッシュ値生成部１２によって生成されたハッシュ値、転送元ファイル１４１のファイル名、ファイルサイズＡ、分割ブロック数Ｎ、分割ブロックサイズＤおよびハッシュ値サイズＳが含まれる。ファイル名、ファイルサイズＡおよびハッシュ値サイズＳは、予め設定し、記憶部１４に記憶させる。
【００２１】
送信部１３は、転送先装置２０から受信したブロック番号に対応するブロックに含まれる実データを転送先装置２０に送信する。送信部１３は、送信した実データのサイズを積算して転送データサイズを算出するとともに、実データの送信に要した時間を積算して転送時間を算出する。送信部１３は、転送対象となる全ての実データを送信した後に、算出した転送データサイズおよび転送時間を用いて、図３に示す転送レートテーブルに新規レコードを追加する。
【００２２】
図３に示す転送レートテーブルは、データ項目として、例えば、転送処理名項目、転送データサイズ項目、転送時間項目および重み付け項目を有する。転送処理名項目は、転送処理を識別するための情報を格納する。転送データサイズ項目は、送信部１３で送信した実データのサイズの積算値を格納する。転送時間項目は、送信部１３で実データを送信する際に要した時間の積算値を格納する。重み付け項目は、各レコードを用いて転送レートを算出する際に、各レコードに付与する重み付けを格納する。重み付けは、新しく生成されたレコード程、大きくなるように設定する。これにより、直近の転送状況を反映した生成レートを算出することが可能となる。
【００２３】
送信部１３は、送信対象の全ての実データを送信した後に、ファイルサイズＡおよび転送データサイズを用いて、図４に示すヒット率レートテーブルに新規レコードを追加する。
【００２４】
図４に示すヒット率テーブルは、データ項目として、例えば、転送ファイル名項目、ファイルサイズ項目およびヒットサイズ項目を有する。転送ファイル名項目は、転送元のファイルの名称を格納する。ファイルサイズ項目は、転送元のファイルのファイルサイズを格納する。ヒットサイズ項目は、転送元ファイルのファイルサイズから、送信部１３で送信した転送データサイズを減算した値、つまり、転送元ファイルの実データのうち未送信の実データサイズを格納する。
【００２５】
転送選択部１５については、後述する。
【００２６】
転送先装置２０は、実データ分割部２１と、ハッシュ値生成部２２と、送信部２３と、記憶部２４と、を有する。
【００２７】
実データ分割部２１は、ファイル同期の対象となる転送先のファイル２４１の実データを、実データ分割部１１によって分割された各ブロックと同サイズのブロックに分割する。実データ分割部１１によって分割された各ブロックのサイズは、転送元装置１０から受信した分割ブロックサイズＤを参照することで得られる。
【００２８】
ハッシュ値生成部２２は、実データ分割部２１によって分割された各ブロックに含まれる実データからそれぞれハッシュ値を生成する。ハッシュ値は、所定のハッシュ関数に各実データを入力することで生成する。ハッシュ値生成部１２は、ハッシュ値の生成に要した時間を積算してハッシュ値生成時間を算出する。ハッシュ値生成部２２は、全てのブロックの実データからハッシュ値を生成した後に、ファイルサイズおよびハッシュ値生成時間を用いて、図５に示す転送先側のハッシュ値生成レートテーブルに新規レコードを追加する。
【００２９】
図５に示す転送先側のハッシュ値生成レートテーブルは、データ項目として、例えば、転送処理名項目、ファイルサイズ項目、ハッシュ値生成時間項目および重み付け項目を有する。転送処理名項目は、転送処理を識別するための情報を格納する。ファイルサイズ項目は、転送元のファイルのファイルサイズおよび転送先のファイルのファイルサイズのうち、小さい方のファイルサイズを格納する。ハッシュ値生成時間項目は、ハッシュ値生成部２２でハッシュ値を生成する際に要した時間の積算値を格納する。重み付け項目は、各レコードを用いてハッシュ値生成レートを算出する際に、各レコードに付与する重み付けを格納する。重み付けは、新しく生成されたレコード程、大きくなるように設定する。これにより、直近の転送状況を反映した生成レートを算出することが可能となる。
【００３０】
送信部２３は、ハッシュ値生成部１２によって生成されたハッシュ値とハッシュ値生成部２２によって生成されたハッシュ値とを、同じブロック番号ごとにそれぞれ比較し、不一致となったハッシュ値に対応するブロック番号を含む応答メッセージを転送元装置１０に送信する。
【００３１】
転送元装置１０の転送選択部１５は、ファイル同期時の転送方法として、転送元のファイル１４１を、通常転送で送信するのか、差分転送で送信するのかを選択する。通常転送は、転送元ファイルの全ての実データを転送先装置に送信する転送処理である。差分転送は、データ更新されたブロックに含まれる実データを転送先装置に送信する転送処理である。
【００３２】
転送選択部１５は、転送元のファイル１４１のファイルサイズＡが、分割ブロック数Ｎとハッシュ値サイズＳとを乗算した値よりも大きい場合に、差分転送を選択する。転送選択部１５は、転送元のファイル１４１のファイルサイズＡが、分割ブロック数Ｎとハッシュ値サイズＳとを乗算した値以下である場合に、通常転送を選択する。総実データサイズが総ハッシュ値サイズよりも大きい場合に、差分転送を選択することで、転送効率を向上させることができる。一方、総実データサイズが総ハッシュ値サイズ以下である場合に、通常転送を選択することで、差分転送により転送効率が低下する事態を防止することができる。
【００３３】
転送選択部１５は、転送元のファイル１４１を通常転送したときの推定総処理時間（以下、「通常転送処理時間」という。）が、転送元のファイル１４１を差分転送したときの推定総処理時間（以下、「差分転送処理時間」という。）よりも長い場合に、差分転送を選択し、通常転送処理時間が差分転送処理時間以下である場合に、通常転送を選択する。以下に、通常転送処理時間および差分転送処理時間を算出する方法について、転送元のファイル１４１を転送元装置１０から転送先装置２０に転送する場合を例にして説明する。
【００３４】
通常転送処理時間は、例えば、下記式１を用いて算出することができる。
【００３５】
通常転送処理時間Ｔ１ ＝ ファイルサイズＡ ／ 転送レートＲ３  …  式１
【００３６】
上記式１のファイルサイズＡは、転送元のファイル１４１のファイルサイズである。上記式１の転送レートＲ３は、例えば、図３に示す転送レートテーブルのデータを下記式２に代入して算出することができる。
【００３７】
転送レートＲ３ ＝ Σ（送信データサイズ ／ 転送時間 × 重み付け） ／ Σ（重み付け）  …  式２
【００３８】
差分転送処理時間は、例えば、下記式３を用いて算出することができる。
【００３９】
差分転送処理時間Ｔ２ ＝ ｛通常転送処理時間Ｔ１ × （１ − ヒット率Ｈ）｝ ＋ ハッシュ値生成時間Ｔ３ ＋ ハッシュ値転送時間Ｔ４ ＋ ハッシュ値生成時間Ｔ５ ＋ メッセージ送信時間Ｔ６  …  式３
【００４０】
上記式３のヒット率Ｈは、転送元のファイル１４１と転送先のファイル２４１とに同じデータが存在する確率であり、例えば、図４に示すヒット率テーブルのデータを下記式４に代入して算出することができる。
【００４１】
ヒット率Ｈ ＝ ファイル１４１のヒットサイズ ／ ファイルサイズＡ  …  式４
【００４２】
上記式３のハッシュ値生成時間Ｔ３は、転送元装置１０でハッシュ値を生成するのに要する時間であり、例えば、下記式５を用いて算出することができる。
【００４３】
ハッシュ値生成時間Ｔ３ ＝ ファイルサイズＡ ／ ハッシュ値生成レートＲ１  …  式５
【００４４】
上記式５のハッシュ値生成レートＲ１は、例えば、図２に示すハッシュ値生成レートテーブルのデータを下記式６に代入して算出することができる。
【００４５】
ハッシュ値生成レートＲ１ ＝ Σ（ファイルサイズ ／ ハッシュ値生成時間 × 重み付け） ／ Σ（重み付け）  …  式６
【００４６】
上記式３のハッシュ値転送時間Ｔ４は、転送元装置１０から転送先装置２０にハッシュ値を転送するのに要する時間であり、例えば、下記式７を用いて算出することができる。
【００４７】
ハッシュ値転送時間Ｔ４ ＝ 分割ブロック数Ｎ × ハッシュ値サイズＳ ／ 転送レートＲ３  …  式７
【００４８】
上記式３のハッシュ値生成時間Ｔ５は、転送先装置２０でハッシュ値を生成するのに要する時間であり、例えば、下記式８を用いて算出することができる。
【００４９】
ハッシュ値生成時間Ｔ５ ＝ ファイルサイズＢ ／ ハッシュ値生成レートＲ２  …  式８
【００５０】
上記式８のファイルサイズＢは、転送先のファイル２４１のファイルサイズである。上記式８のハッシュ値生成レートＲ２は、図５に示すハッシュ値生成レートテーブルのデータを下記式９に代入して算出することができる。
【００５１】
ハッシュ値生成レートＲ２ ＝ Σ（ファイルサイズ ／ ハッシュ値生成時間 × 重み付け） ／ Σ（重み付け）  …  式９
【００５２】
上記式３のメッセージ送信時間Ｔ６は、転送処理の際に転送元装置１０と転送先装置２０との間でやり取りされる各種メッセージの送信に要する時間であり、例えば、下記式１０を用いて算出することができる。
【００５３】
メッセージ送信時間Ｔ６ ＝ メッセージのデータサイズＣ ／ 転送レートＲ３  …  式１０
【００５４】
各種メッセージとしては、例えば、ハッシュ値取得要求や、不一致となったハッシュ値に対応するブロック番号を含む応答メッセージ等が該当する。
【００５５】
次に、実施形態におけるファイル同期システムの動作について説明する。図６は、ファイル同期システムにおけるファイル転送の処理手順を説明するためのフローチャートである。
【００５６】
最初に、転送元装置１０の転送選択部１５は、ファイル同期の対象となる転送元ファイル１４１のファイルサイズＡを取得し（ステップＳ１０１）、ファイルサイズＡが、分割ブロック数Ｎとハッシュ値サイズＳとを乗算した値よりも大きいか否かを判定する（ステップＳ１０２）。この判定がＮＯである場合（ステップＳ１０２；ＮＯ）に、転送元装置１０の転送選択部１５は、通常転送を選択して本処理手順を終了する。
【００５７】
一方、上記ステップＳ１０２の判定でファイルサイズＡが分割ブロック数Ｎとハッシュ値サイズＳとを乗算した値よりも大きいと判定した場合（ステップＳ１０２；ＹＥＳ）に、転送元装置１０の転送選択部１５は、転送元ファイル１４１のファイル名を転送先装置２０に送信する（ステップＳ１０３）。
【００５８】
続いて、転送先装置２０は、転送元ファイル１４１のファイル名に基づいて、転送元ファイル１４１と同期をとるファイルに設定されている転送先ファイル２４１を特定し（ステップＳ１０４）、転送先ファイル２４１のファイルサイズＢを転送元装置１０に送信する（ステップＳ１０５）。
【００５９】
続いて、転送元装置１０の転送選択部１５は、通常転送処理時間が差分転送処理時間よりも長いか否かを判定する（ステップＳ１０６）。この判定がＮＯである場合（ステップＳ１０６；ＮＯ）に、転送元装置１０の転送選択部１５は、通常転送を選択して本処理手順を終了する。
【００６０】
一方、上記ステップＳ１０６の判定で通常転送処理時間が差分転送処理時間よりも長いと判定した場合（ステップＳ１０６；ＹＥＳ）に、転送元装置１０の転送選択部１５は、差分転送を選択し、転送元装置１０および転送先装置２０は、差分転送を実行する（ステップＳ１０７）。差分転送の処理手順について、以下に説明する。
【００６１】
図７は、図６のステップＳ１０７で実行される差分転送の処理手順を詳細に説明するためのフローチャートである。
【００６２】
最初に、転送元装置１０の実データ分割部１１は、ファイル同期の対象となる転送元のファイル１４１の実データを分割ブロック数Ｎ分のブロックに分割する（ステップＳ２０１）。
【００６３】
続いて、転送元装置１０のハッシュ値生成部１２は、上記ステップＳ２０１でＮ個に分割された各ブロックに含まれる実データをそれぞれハッシュ関数に入力してハッシュ値を生成し、ハッシュ値の生成に要した時間を積算する（ステップＳ２０２）。
【００６４】
続いて、転送元装置１０の送信部１３は、上記ステップＳ２０２で生成された各ハッシュ値、転送元ファイル１４１のファイル名、ファイルサイズＡ、分割ブロック数Ｎ、分割ブロックサイズＤおよびハッシュ値サイズＳを含むハッシュ値取得要求を転送先装置２０に送信する（ステップＳ２０３）。
【００６５】
続いて、転送先装置２０の実データ分割部２１は、ハッシュ値取得要求に基づいて、転送先のファイル２４１の実データを、分割ブロックサイズＤと同サイズのブロックに分割する（ステップＳ２０４）。
【００６６】
続いて、転送先装置２０のハッシュ値生成部２２は、上記ステップＳ２０４で分割された各ブロックに含まれる実データをそれぞれハッシュ関数に入力してハッシュ値を生成し、ハッシュ値の生成に要した時間を積算する（ステップＳ２０５）。
【００６７】
続いて、転送先装置２０の送信部２３は、上記ステップＳ２０２で生成されたハッシュ値と上記ステップＳ２０５で生成されたハッシュ値とを、同じブロック番号ごとにそれぞれ比較し（ステップＳ２０６）、比較対象のハッシュ値が不一致となるブロック番号を特定する（ステップＳ２０７）。送信部２３は、不一致であると特定したブロック番号を含む応答メッセージを転送元装置１０に送信する（ステップＳ２０８）。
【００６８】
続いて、転送元装置１０の送信部１３は、転送先装置２０から受信したブロック番号に対応するブロックに含まれる実データを転送先装置２０に送信し（ステップＳ２０９）、実データの転送時間を積算する（ステップＳ２１０）。
【００６９】
上述したように、実施形態におけるファイル同期システム１によれば、転送元装置１０は、更新後ファイルを管理することで差分転送を行うことができる。これにより、更新前ファイルや差分情報を管理するための記憶領域を削減することができ、更新前ファイルや差分情報のメンテナンス作業を省くことができる。それゆえに、ファイル同期の効率を向上させることができる。
【００７０】
このような効果は、ファイル同期の対象となるファイルが、固定長のレコードを格納するファイルやデータ追記型のファイルである場合に、特に有効となる。例えば、固定長のレコードを格納するファイルで特定のレコードが更新された場合には、更新されたレコードを含むブロックの実データのみを差分転送すればよい。データ追記型のファイルで実データが追記された場合には、追記された実データを含むブロックの実データのみを差分転送すればよい。これにより、同期処理のターンアラウンドタイムを大幅に短縮することができる。このような効果は、ファイルの容量が大きくなるほど増大する。
【００７１】
なお、上述した各実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【００７２】
例えば、上述した実施形態では、ハッシュ値生成レートや転送レートを算出する際に、過去の複数の転送処理に対して重み付けを付与しているが、例えば、最新の転送処理にのみ重み付けを付与して、他の転送処理には重み付けを付与しないこととしてもよい。これにより、ＣＰＵの使用状況やネットワークの使用状況を機敏に反映させたレートを算出することが可能となる。また、例えば、過去の複数の転送処理に対して均等に重み付けを付与することとしてもよい。これにより、ＣＰＵの使用状況やネットワークの使用状況が急激に変化するような不安定な環境下では、最新の転送処理の状況にのみ左右されることなく、過去の複数の転送処理の状況を同等に考慮したレートを算出することが可能となる。
【００７３】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【００７４】
（付記１）ファイル同期の対象となるファイルをそれぞれ有する転送元装置と転送先装置とを備えるファイル同期システムであって、前記転送元装置は、ファイル同期の対象となる転送元の前記ファイルのデータを複数のブロックに分割する第１の分割部と、前記第１の分割部によって分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第１の生成部と、前記第１の生成部によって生成されたハッシュ値を前記転送先装置に送信する第１の送信部と、を有し、前記転送先装置は、ファイル同期の対象となる転送先の前記ファイルのデータを、前記第１の分割部によって分割された各ブロックと同サイズのブロックに分割する第２の分割部と、前記第２の分割部によって分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第２の生成部と、前記第１の生成部によって生成されたハッシュ値と前記第２の生成部によって生成されたハッシュ値とを、各ハッシュ値の生成元データを含むブロックを識別するブロック番号ごとにそれぞれ比較し、不一致となったハッシュ値に対応する前記ブロック番号を前記転送元装置に送信する第２の送信部と、を有し、前記転送元装置の前記第１の送信部は、前記転送先装置から受信した前記ブロック番号に対応する前記ブロックに含まれるデータを前記転送先装置に送信する、ことを特徴とするファイル同期システム。
【００７５】
（付記２）前記ファイルは、固定長のレコードを格納するファイルであることを特徴とする付記１記載のファイル同期システム。
【００７６】
（付記３）  前記ファイルは、追記型のファイルであることを特徴とする付記１または２記載のファイル同期システム。
【００７７】
（付記４）ファイル同期の対象となるファイルをそれぞれ有する転送元装置と転送先装置とを備えるファイル同期システムで実行するファイル同期方法であって、前記転送元装置が、ファイル同期の対象となる転送元の前記ファイルのデータを複数のブロックに分割する第１の分割ステップと、前記第１の分割ステップにおいて分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第１の生成ステップと、前記第１の生成ステップにおいて生成されたハッシュ値を前記転送先装置に送信する第１の送信ステップと、を実行し、前記転送先装置が、ファイル同期の対象となる転送先の前記ファイルのデータを、前記第１の分割ステップにおいて分割された各ブロックと同サイズのブロックに分割する第２の分割ステップと、前記第２の分割ステップにおいて分割された各ブロックに含まれるデータからそれぞれハッシュ値を生成する第２の生成ステップと、前記第１の生成ステップにおいて生成されたハッシュ値と前記第２の生成ステップにおいて生成されたハッシュ値とを、各ハッシュ値の生成元データを含むブロックを識別するブロック番号ごとにそれぞれ比較し、不一致となったハッシュ値に対応する前記ブロック番号を前記転送元装置に送信する第２の送信ステップと、を実行し、前記転送元装置の前記第１の送信ステップが、前記転送先装置から受信した前記ブロック番号に対応する前記ブロックに含まれるデータを前記転送先装置に送信する、ことを特徴とするファイル同期方法。
【００７８】
（付記５）付記４に記載の各ステップをコンピュータに実行させるためのファイル同期プログラム。
【符号の説明】
【００７９】
１…ファイル同期システム、１０…転送元装置、１１…実データ分割部、１２…ハッシュ値生成部、１３…送信部、１４…記憶部、１５…転送選択部、２０…転送先装置、２１…実データ分割部、２２…ハッシュ値生成部、２３…送信部、２４…記憶部、３０…ネットワーク、１４１、２４１…ファイル。
【図１】
2011170667.tif 000003
【図２】
2011170667.tif 000004
【図３】
2011170667.tif 000005
【図４】
2011170667.tif 000006
【図５】
2011170667.tif 000007
【図６】
2011170667.tif 000008
【図７】
2011170667.tif 000009