(57)【要約】本発明（図１）は、ファイル差分を使用して効率よくファイルを転送する方法として概説されうる。その方法は、元のファイル（図２，１５）を用意し；元のファイルの改訂ファイル（１９）を作成し；そして元のファイルと改訂ファイルとの間の変更のみを識別するデルタファイル（２００）を生成することによって機能する。
2004501451.tif 000002
【特許請求の範囲】
【請求項１】
修正されるファイルを送信する方法であって、
元のファイルを提供するステップと、
前記元のファイルの改訂ファイルを作成するステップと、
前記元のファイルと前記改訂ファイルとの間の変更のみを識別するデルタファイルを生成するステップとを含む方法。
【請求項２】
デルタファイルを生成する前記ステップが、
前記元のファイルと前記改訂ファイルとの間の変更を識別するバイナリツリーを作成するステップを更に含む、請求項１に記載の方法。
【請求項３】
デルタファイルを生成する上記ステップが、
前記バイナリツリーにおける最小コストパスを決定するステップを更に含む、請求項２に記載の方法。
【請求項４】
デルタファイルを生成する上記ステップが、
前記元のファイルにおけるデータの各ブロックを前記改訂ファイルにおけるデータの各ブロックと比較するステップと、
前記元のファイルにおけるデータの各ブロックと前記改訂ファイルにおけるデータの各ブロックの各不一致に対して前記バイナリツリーにノードを生成するステップとを更に含む、請求項２に記載の方法。
【請求項５】
デバイスが前記デルタファイルおよびデバイスの元のファイルのみを使用して前記改訂ファイルを再現できるように前記デバイスに前記デルタファイルを送信するステップを更に含む、請求項４に記載の方法。
【請求項６】
修正されるファイルを送信するシステムであって、
デバイスファイルを有するクライアントデバイスと、
元のファイルおよび前記元のファイルの改訂ファイルを含むサーバデバイスと、
前記元のファイルと前記改訂ファイルとの間の変更のみを識別するデルタファイルとを含むシステム。
【請求項７】
前記クライアントデバイスが、
前記デルタファイルおよびデバイスファイルを使用して前記クライアントデバイスに前記改訂ファイルを作成する同期化モジュールを更に含む、請求項６に記載のシステム。
【請求項８】
前記サーバデバイスが、
前記クライアントデバイスが前記改訂ファイルを再現できるよう、前記クライアントデバイスに前記デルタファイルを送信する送信モジュールを更に含む、請求項６に記載のシステム。
【請求項９】
前記サーバデバイスが、
前記元のファイルにおけるデータの各ブロックを前記改訂ファイルにおけるデータの各ブロックと比較する比較モジュールを更に含む、請求項６に記載のシステム。
【請求項１０】
前記サーバデバイスが、
前記元のファイルと前記改訂ファイルとの間の変更を識別するバイナリツリーを作成するツリーモジュールと、
前記元のファイルにおけるデータの各ブロックと前記改訂ファイルにおけるデータの各ブロックの各不一致に対して前記バイナリツリーにノードを生成するノードモジュールとを更に含む、請求項６に記載のシステム。
【請求項１１】
修正されるファイルを送信するロジック用のコンピュータで読み取り可能な媒体であって、
元のファイルを作成するロジックと、
前記元のファイルの改訂ファイルを作成するロジックと、
前記元のファイルと前記改訂ファイルとの間の変更のみを識別するデルタファイルを生成するロジックとを含むコンピュータで読み取り可能な媒体。
【請求項１２】
前記生成するロジックが、
前記元のファイルと前記改訂ファイルとの間の変更を識別するバイナリツリーを作成するロジックを更に含む、請求項１１に記載のコンピュータで読み取り可能な媒体。
【請求項１３】
前記生成するロジックが、
前記バイナリツリーにおける最小コストパスを決定するロジックを更に含む、請求項１２に記載のコンピュータで読み取り可能な媒体。
【請求項１４】
前記生成するロジックが、
前記元のファイルにおけるデータの各ブロックを前記改訂ファイルにおけるデータの各ブロックと比較するロジックと、
前記元のファイルにおけるデータの各ブロックと前記改訂ファイルにおけるデータの各ブロックの各不一致に対して前記バイナリツリーにノードを生成するロジックとを更に含む、請求項１２に記載のコンピュータで読み取り可能な媒体。
【請求項１５】
前記生成するロジックが、
デバイスが前記デルタファイルおよびデバイスの元のファイルを使用して前記改訂ファイルを再現できるよう、前記デバイスに前記デルタファイルを送信するロジックを更に含む、請求項１１に記載のコンピュータで読み取り可能な媒体。
【請求項１６】
修正されるファイルを送信するシステムであって、
元のファイルを作成する手段と、
前記元のファイルの改訂ファイルを作成する手段と、
前記元のファイルと前記改訂ファイルとの間の変更のみを識別するデルタファイルを生成する手段とを含むシステム。
【請求項１７】
前記元のファイルと前記改訂ファイルとの間の変更を識別するバイナリツリーを作成する手段を更に含む、請求項１６に記載のシステム。
【請求項１８】
前記バイナリツリーにおける最小コストパスを決定する手段を更に含む、請求項１６に記載のシステム。
【請求項１９】
前記元のファイルにおけるデータの各ブロックを前記改訂ファイルにおけるデータの各ブロックと比較する手段と、
前記元のファイルにおけるデータの各ブロックと前記改訂ファイルにおけるデータの各ブロックとの各不一致に対して前記バイナリツリーにノードを生成する手段とを更に含む、請求項１６に記載のシステム。
【請求項２０】
デバイスが前記デルタファイルおよびデバイスの元のファイルのみを使用して前記改訂ファイルを再現できるよう、前記デバイスに前記デルタファイルを送信する手段を更に含む、請求項１６に記載のシステム。
【発明の詳細な説明】
【０００１】
（関連出願の相互参照）
本出願は、２０００年６月２２日出願の米国仮特許出願番号６０／２１３，５０２の表題”ＤＥＬＴＡＭＡＮ”の利益を請求するものであり、この仮特許出願はそっくりそのままここに参照として組み込む。
【０００２】
（発明の分野）
本発明は、ファイルを更新する方法およびシステムに関し、特にファイル差分を使用して遠隔ファイルを効果的に同期化する方法およびシステムに関する。
【０００３】
（発明の背景）
多くのビジネス環境においては、サーバが、多数の従業員またはビジネスの遠隔ユーザに関連するデータを保存するために使用されている。一般的に、サーバは、遠隔ユーザへの情報の利用可能度を高めるために、遠隔コンピュータシステム（「クライアント」）によってアクセス可能である。遠隔コンピュータシステムによってアクセスされるサーバ上へファイルを提供することにより、企業による情報の普及が高まる。ファイルへの遠隔アクセスは、販売員または多数の従業員が事務所から離れて操作する環境においては非常に重大である。例えば、遠隔地にいる従業員は、在庫変動、価格資料、会社のイベントについて通知されるファイル内に含まれる情報を信頼する。遠隔ユーザは、いつまでもサーバに接続し続けて、通信料金を収集するまたは電話回線を使えないようにするのではなく、むしろコンピュータを断続的にのみサーバに接続して、サーバ上のファイルにアクセスする。これらの環境において、遠隔コンピュータシステムは一般的に、クライアントがサーバに接続されていないときにも遠隔アプリケーションをサポートするために、サーバファイルをローカルに保存する。その後、断続的接続を用いて、クライアントアプリケーションによって行われた変更のみをサーバに送信し、また関連する一連の変更をサーバからクライアントに送信する。このタイプの遠隔コンピュータシステム環境は、断続接続（ＩＣ）環境と呼ばれる。ＩＣは、販売員自動化、保険金請求処理、またモバイルユーザのいる一般的なモバイル労働力における多種多様なアプリケーションを有している。
【０００４】
このタイプのコンピュータ環境の重要な通信問題は、クライアントとサーバとの間の適時かつ効率的な情報の交換である。「ファイル転送」という用語は、サーバファイルおよびクライアントファイルにおけるデータの整合性および保全性を維持するプロセスを表すのによく使用される。整合性を維持する同期化方式は多数存在する。幾つかの既知のファイル転送方式においては、様々なプロトコルおよび方法、例えばファイルを効果的に転送するための圧縮が使用される。
【０００５】
従って、これまで、ファイルをシステムに迅速且つ効果的にダウンロードすることにおいて上記の欠陥に対処するために、扱われていないニーズが業界に存在している。
【０００６】
（発明の要約）
本発明は、ファイル差分を使用して効果的にファイルを転送するシステムおよび方法を提供する。本発明は、デバイスファイルを有するクライアントデバイス、元のファイルおよび元のファイルの改訂ファイルを含むサーバデバイス、および元のファイルと改訂ファイルとの間の変更のみを識別するデルタファイルを含むファイル差分システムとして概念化される。
【０００７】
本発明はまた、ファイル差分を使用するファイルを効果的に転送する方法として概念化され、この方法は（１）元のファイルを提供するステップと、（２）元のファイルの改訂ファイルを作成するステップと、（３）元のファイルと改訂ファイルとの間の変更のみを識別するデルタファイルを生成するステップとを含む。
【０００８】
本発明は、請求項において定義されるように、以下の図面を参照してより良く理解されうる。図面内の構成要素は、必ずしも互いに対して相対スケールではなく、代わりに本発明の原理をはっきりと説明することを重視する。
【０００９】
（発明の詳細な説明）
以下に説明する発明は、遠隔ファイル同期化を維持する本発明のファイル差分システムを使用する全てのファイル転送システムに適用可能である。単一のコンピュータに対して以下に説明するが、ファイル差同期化システム１００のシステムおよび方法は一般に、多数のコンピューティングデバイスがローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）またはＬＡＮおよびＷＡＮの組合せ上で通信を行うネットワーク化されたコンピューティング構成において実施される。
【００１０】
図面を参照すると、同様の参照番号が複数の図面において同様の要素を表しているが、図１は本発明の好適な実施例に関連して使用される断続接続ファイル転送システム（「ＩＣＦＴ」）１０の基本的な構成要素を示している。システム１０は、クライアントシステム１６ａ、１６ｂおよび１６ｃを含んでいる。各クライアントは、アプリケーションおよびローカルファイル１５ａ、１５ｂおよび１５ｃを有している。コンピュータサーバ１４は、アプリケーションと、ネットワーク１２上でそれぞれ断続接続１３（ａ〜ｃ）を介してクライアントシステム１６（ａ〜ｃ）によってアクセスされるサーバファイル１５ｄとを含んでいる。サーバ１４は、コンピュータネットワークの管理ソフトウェアを実行し、ネットワークおよびそのデバイスの一部または全てへのアクセスを制御する。クライアントシステム１６（ａ〜ｃ）は、コンピュータサーバ１４に保存されているサーバデータを共有し、例えば限定されないがインターネット、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）などのネットワーク１２上で、モデムまたは他の同様のネットワークを使用する電話回線を介してサーバ１４にアクセスすることができる。サーバ１４も、組織内のローカルエリアネットワーク（ＬＡＮ）に接続できる。
【００１１】
ＩＣＦＴシステム１０の構造および動作により、サーバ１４およびそれに関連付けられたサーバファイル１５は、従来の既知のシステムよりも更に効果的にクライアントに対処することができる。特に、本発明は、遠隔クライアントシステムがその遠隔ファイルを更に効果的に更新することを可能にするサーバファイルのデータの最新情報への編成方法を提供する。最後の修正ファイルの作成以後の全ての関連する変更のある各クライアントに対し、修正（「デルタ」または「更新」）ファイルが周期的に作成される。クライアントシステム１６（ａ〜ｃ）がサーバ１４に接続されると、クライアントに関連付けられた修正ファイルはクライアントに送信されて、各クライアントの個別ファイルを更新するために使用される。
【００１２】
クライアントシステム１６ａ〜１６ｃはそれぞれ、遠隔地に配置されてもよい。従って、遠隔クライアントシステム１６（ａ〜ｃ）の何れか１つのユーザがサーバ１４の共有ファイルからの現在の情報での更新を望む場合、クライアントシステム１６（ａ〜ｃ）は、限定されることはないが例えばＷＡＮ、インターネット、または電話回線などのネットワーク１２上で通信を行って、サーバ１４にアクセスする。本発明は、サーバ１４上のファイルＩＳＤでその遠隔ファイルをもっとも効果的に転送するためにクライアントシステムを更新するシステムおよび方法を有利に提供する。サーバは、最後の評価以後の各クライアントに対して変更されたデータを定期的に判別し、これらの変更を修正ファイルに記録する。クライアントがサーバに接続すると、クライアントに関する修正ファイルを要求し、ダウンロードした修正ファイルを作成し、そのローカルファイルを更新する。
【００１３】
従って、本発明は遠隔クライアントファイルの同期化を維持する非常に効果的な方法を提供する。この方法において、サーバ１４は元のファイルをファイルの改訂版と比較し、クライアント１６上で改訂ファイルを作成するために元のファイルになされなければならない変更を説明するデルタ修正ファイルを生成する。このデルタまたは修正ファイルは遠隔ユーザに送信され、ここで、デルタ修正ファイルに記載されているような変更が元のファイルの遠隔ユーザコピーに適用され、改訂ファイルが作成される。
【００１４】
一般に、ファイル差同期化方法は、両方のファイルにおけるバイトの比較を行い、一致すると、カウントが増加し、これがスキップレコードの量となる。一致しなければ、不一致点でのバイトに相当するトークンが元のファイルおよび改訂ファイルより得られる。元のファイルからのトークンを使用して、改訂ファイルにおけるそのトークンの検索が行われる。一致するトークンが見つかれば、それは「同期」と呼ばれ、挿入があったものと推定される。同様に、改訂ファイルからのトークンを使用して、元のファイルにおけるそのトークンの検索が行われる。一致するトークンがあれば、それは「同期」と呼ばれ、削除が行われたものと推定される。どちらもなければ、１バイトの交換が行われたものと推定され、両ファイルポインタを進め、両ファイルからトークンを獲得し、同期点の探し出しを続行する。
【００１５】
クライアントシステム１６（Ａ〜Ｃ）上でデルタと元のファイルを１つにまとめる方法は、デルタからレコードを読み出し、３つの動作、すなわち（１）元のファイルから新しいもの（変更されていない領域）へ数バイトをコピー、（２）元のファイルの数バイトのスキップ（飛び越し）を行い、コピーは行わない（元のファイルにおける削除）、または（３）デルタから新しい改訂ファイルへの数バイトのコピー（および元の挿入部分への挿入）のいずれかを行う。
【００１６】
デルタ修正ファイルはレコードで構成され、各レコードはタイプとそれに続く長さを有しており、レコードの中にはさらにデータが続くものもある。レコードの種類は４種類あり、すなわち（１）スキップ−一致領域を表し、データはそれに続かない、（２）削除−削除する必要のある元のファイルの一部を表し、データはそれに続かない、（３）挿入−元のファイルへ数バイトを挿入し、挿入するデータが続く、または（４）置換え−削除および挿入の組合せである。
【００１７】
例えば、以下の２つの文字列について考えてみる。
【００１８】
ＡＢＣＤＥＦＧＨＩおよびＡＢＣｘｘｘＤＥ
最初の文字列を元の文字列、および２番の目の文字列を改訂文字列とすれば、デルタは以下のようになる。
【００１９】
ＳＫＩＰ ３     元の文字列から改訂文字列へＡＢＣをコピーする。
【００２０】
ＩＮＳＥＲＴ ３ ｘｘｘ             ｘｘｘを改訂文字列に追加する。
【００２１】
ＳＫＩＰ ２     元の文字列から改訂文字列にＤＥをコピーする。
【００２２】
ＤＥＬＥＴＥ ４   ＦＧＨＩをコピーしない。
【００２３】
一般に、ハードウェアアーキテクチャの点に関して、図２に示すように、コンピュータ１４および１６は、ローカルインタフェース４３を介して通信接続されたプロセッサ４１、ストレージ４２メモリ４２、および単一または複数の入力および／または出力（Ｉ／Ｏ）デバイス（または周辺機器）を含んでいる。ローカルインタフェース４３は、限定されることはないが例えば、従来において知られているように、単一または複数のバスまたは他の有線または無線接続部である。ローカルインタフェース４３は、簡単にするために省略してあるが、例えばコントローラ、バッファ（キャッシュ）、ドライバ、中継器、受信器などの要素を別途有し、通信を可能にすることもできる。また、ローカルインタフェース４３は、上記構成要素の間で適切な通信を可能にするために、アドレス、制御、および／またはデータ接続部を含んでいてもよい。
【００２４】
プロセッサ４１は、メモリ４２に保存可能なソフトウェアを実行するハードウェア機器である。プロセッサ４１は、仮想的にカスタム製造または市販のプロセッサ、中央処理装置（ＣＰＵ）またはコンピュータ１４および１６に関連付けられた複数のプロセッサの間の補助プロセッサ、および（マイクロチップの形式の）半導体系マイクロプロセッサまたはマクロプロセッサである。適切な市販のマイクロプロセッサの例は以下のとおりである。米国インテル社の８０ｘ８６またはＰｅｎｔｉｕｍシリーズマイクロプロセッサ、米国ＩＢＭ社のＰｏｗｅｒＰＣマイクロプロセッサ、サンマイクロシステムズのＳｐａｒｃマイクロプロセッサ、米国ヒューレットパッカード社のＰＡ−ＲＩＳＣシリーズマイクロプロセッサ、または米国モトローラ社の６８ｘｘｘシリーズマイクロプロセッサがある。
【００２５】
メモリ４２は、揮発性メモリ要素（例えば、ランダムアクセスメモリ（動的ランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）等のＲＡＭ）、および不揮発性メモリ要素（例えば、ＲＯＭ、消去可能プログラマブル読取専用メモリ（ＥＰＲＯＭ）、電子的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、プログラマブル読取専用メモリ（ＰＲＯＭ）、テープ、コンパクトディスク読取専用メモリ（ＣＤ−ＲＯＭ）、ディスク、ディスケット、カートリッジ、カセットなど）の何れかあるいは組合せを含んでいてもよい。また、メモリ４２は、電子、磁気、光および／または他のタイプの記憶媒体を組み込んでもよい。ちなみに、メモリ４２は、分散アーキテクチャを有しており、その中において様々な構成要素が互いにはなれて配置されているが、プロセッサ４１によりアクセス可能である。ファイル１５はメモリ４２に存在する。
【００２６】
メモリ４２のソフトウェアは、単一または複数の別個のプログラムを含んでいてもよく、各プログラムは論理機能を実施する実行可能命令の順序付けられたリストを含む。図２の例においては、メモリ４２のソフトウェアは、適切なオペレーティングシステム（Ｏ／Ｓ）５２と本発明のファイル差同期化システム１００を含んでいる。
【００２７】
適切な市販オペレーティングシステム５２の例の一部のリストは以下のとおりである。米国マイクロソフト社．のＷｉｎｄｏｗｓオペレーティングシステム、米国ノベル社のＮｅｔｗａｒｅオペレーティングシステム、米国ＩＢＭ社のオペレーティングシステム、多数の供給元から入手可能なＬＩＮＵＸオペレーティングシステム、米国ヒューレットパッカード社、サンマイクロシステムズ社および米国ＡＴ＆Ｔ 社などの多数の供給元から購入可能なＵＮＩＸオペレーティングシステムがある。オペレーティングシステム５２は基本的に、ファイル差同期化システム１００などのコンピュータプログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータ管理、メモリ管理、および通信制御と関連サービスを行う。しかし、発明者は、本発明のファイル差同期化システム１００が全ての他の市販オペレーティングシステムに適用可能であると考えている。
【００２８】
ファイル差同期化システム１００は、ソースプログラム、実行可能プログラム（オブジェクトコード）、スクリプト、または実行される一組の命令から成る他の構成要素であってもよい。ソースプログラムの場合、プログラムは通常、Ｏ／Ｓ５２に関連して適切に動作するように、メモリ４２内に含まれるあるいは含まれないコンパイラ、アセンブラ、インタプリタなどを介して変換される。また、ファイル差同期化システム１００は、限定されることはないが例えばＣ、Ｃ＋＋、Ｐａｓｃａｌ、ＢＡＳＩＣ、ＦＯＲＴＲＡＮ、ＣＯＢＯＬ、Ｐｅｒｌ、Ｊａｖａ、Ａｄａなどの（ａ）データおよびメソッドのクラスを有するオブジェクト指向プログラミング言語、あるいは（ｂ）ルーチン、サブルーチンおよび／または関数を有する手続き型プログラミング言語、として記述される。
【００２９】
Ｉ／Ｏデバイスは、限定されることはないが例えばキーボード４５、マウス４４、スキャナ（図示せず）、マイクロフォン（図示せず）などの入力デバイスを含んでいてもよい。また、Ｉ／Ｏデバイスは、限定されることはないが例えばプリンタ（図示せず）、ディスプレイ４６などの出力デバイスも含んでいてもよい。最後に、Ｉ／Ｏデバイスは更に、限定されることはないが例えばＮＩＣまたは（他のファイル、デバイス、システムまたはネットワークにアクセスする）変調器／復調器４７、無線周波数（ＲＦ）または他の送受信器（図示せず）、電話によるインタフェース（図示せず）、ブリッジ（図示せず）、ルータ（図示せず）などの入力および出力の両方を通信するデバイスも含んでいてもよい。
【００３０】
コンピュータ１４および１６がＰＣやワークステーションなどである場合、メモリ４２のソフトウェアは、基本入出力システム（ＢＩＯＳ）（簡単にするために省略）を更に含んでいてもよい。ＢＩＯＳは、起動時にハードウェアを初期化およびテストし、Ｏ／Ｓ５２を起動し、またハードウェアデバイス間のデータの転送をサポートする絶対不可欠な一組のソフトウェアルーチンである。ＢＩＯＳはＲＯＭに保存され、ＢＩＯＳはコンピュータ１４および１６が起動しているときに実行される。
【００３１】
コンピュータ１４および１６が動作している場合、プロセッサ４１は、メモリ４２に対してデータ通信を行い、また一般にソフトウェアに従ってコンピュータ１４および１６の動作を制御するために、メモリ４２内に保存されているソフトウェアを実行するよう構成されている。ファイル差同期化システム１００およびＯ／Ｓ５２の全てあるいは一部がプロセッサ４１により読み出され、おそらくプロセッサ４１内にバッファされ、その後実行される。
【００３２】
ファイル差同期化システム１００が図２に示すようにソフトウェアにおいて実施される場合、ちなみにファイル差同期化システム１００は、コンピュータに関連するシステムまたは方法によってあるいはこれらに関連して使用されるよう、コンピュータで読み取り可能な媒体に仮想的に保存することができる。本書においては、コンピュータで読み取り可能な媒体は、コンピュータに関連するシステムまたは方法によってあるいはこれらに関連して使用されるコンピュータプログラムを含むあるいは保存することの可能な電子、磁気、光、または他の物理的装置または手段である。ファイル差同期化システム１００は、命令実行システム、装置またはデバイスから命令を取り込んで、命令を実行することの可能な、例えばコンピュータに基づくシステム、プロセッサを含むシステム、または他のシステムなどの命令実行システム、装置、またはデバイスによってまたはこれらに関連して使用されるよう、コンピュータで読み取り可能な媒体において具現化される。
【００３３】
本書においては、「コンピュータで読み取り可能な媒体」は、命令実行システム、装置、またはデバイスによってまたはこれらに関連して使用するよう、プログラムを保存、通信、伝搬、または伝達することの可能な何れかの手段である。コンピュータで読み取り可能な媒体は、限定されることはないが例えば電子、磁気、光、電磁気、赤外線、または半導体システム、装置、デバイス、または伝搬媒体である。コンピュータで読み取り可能な媒体の更に具体的な例（一部のリスト）は、単一または複数のワイヤを有する電気接続（電子）、携帯用コンピュータディスケット（磁気）、ランダムアクセスメモリ（ＲＡＭ）（電子）、読取専用メモリ（ＲＯＭ）（電子）、消去可能プログラマブル読取専用メモリ（ＥＰＲＯＭ、ＥＥＰＲＯＭ、またはフラッシュメモリ）（電子）、光ファイバ（光）、携帯用コンパクトディスク読取専用メモリ（ＣＤＲＯＭ）（光）を含んでいる。ちなみに、コンピュータで読み取り可能な媒体は、プログラムが例えば紙または他の媒体の光スキャニングを介して電子的に獲得され、コンパイルされ、インタープリットされ、あるいは必要に応じて適切に処理され、コンピュータメモリに保存されるので、プログラムがプリントされている紙または別の適切な媒体であってもよい。
【００３４】
別の実施形態においては、ファイル差同期化システム１００がハードウェアにおいて実施されており、ファイル差同期化システム１００は、従来において既知の以下の技術のいずれかまたは組合せで実施される。これには、データ信号に応じた論理機能を実施するロジックゲートを有する離散型論理回路、適切な組合せロジックゲートを有する特定用途向け集積回路（ＡＳＩＣ）、プログラマブルゲートアレイ（ＰＧＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などが含まれる。
【００３５】
図３Ａおよび３Ｂは、図２に示す本発明のファイル差同期化システム１００のプロセスフローの例をまとめて示すフローチャートである。
【００３６】
まず、ステップ１０１で、ファイル差同期化システムが初期化される。次に、ステップ１０２で、ファイル差同期化システム１００は、元のファイル１５または改訂ファイル１９がエンドオブファイル状態（ＥＯＦ）に達したかどうかを判断する。ステップ１０２で元のファイル１５および改訂ファイル１９のどちらもエンドオブファイル（ＥＯＦ）状態に達していないと判断されれば、ファイル差同期化システム１００はステップ１０３に進んで、差のツリーが最大深さにあるかどうかを判断する。
【００３７】
ステップ１０３において差のツリーが最大深さにあると判断されれば、ファイル差同期化システム１００はステップ１０４でトラバーサルルーチンを実行する。トラバーサルルーチンは、ここでは図４に関して更に詳細に定義されている。ステップ１０４でトラバーサルルーチンを実行した後、ファイル差同期化システム１００は戻ってステップ１０２を繰り返す。しかし、ステップ１０３で差のツリーが最大深さにあると判断された場合、ファイル差同期化システムは図３Ｂのステップ１２１を実行するために更に進む。
【００３８】
ステップ１２１（図３Ｂ）では、ファイル差同期化システム１００は新たなリーフノードを開始し、ステップ１２２でスキップカウンタをゼロにセットする。ステップ１２３で、ファイル差同期化システム１００は、元のファイル１５の現在のバイトが改訂ファイル１９の現在のバイトに一致するかどうかを判断する。ステップ１２３で元のファイル１５の現在のバイトが改訂ファイル１５の現在のバイトに一致すると判断された場合、ファイル差同期化システム１００はステップ１２４でスキップカウンタをインクリメントし、ステップ１２３に戻って処理を繰り返す。この状態は、元のファイル１５と改訂ファイル１９のデータが一致する限り生じる。しかし、ステップ１２３で元のファイル１５の現在のバイトが改訂ファイル１９の現在のバイトに一致しないと判断された場合、ファイル差同期化システム１００は、ステップ１２５で現在のスキップカウンタ値を使用して、リーフノードにスキップレコードを追加する。この状態は、元のファイル１５と改訂ファイル１９のデータが一致しない限り生じる。ステップ１２６では、ファイル差同期化システム１００は置換カウンタをゼロにセットする。
【００３９】
ステップ１２７では、ファイル差同期化システム１００は、元のファイル１５と改訂ファイル１９が挿入および削除のために同期しているかどうかを判断する。元のファイル１５と改訂ファイル１９の比較で不一致が生じたときに、挿入および削除を行ったかどうかを判断するために、元のファイル１５と改訂ファイル１９の両方でスキャニングを実行して、データの次の共通ブロックを検索する。改訂ファイル１９でスキャニングを進めているときに元のファイル１５のデータセグメントが見つかった場合、挿入が生じたと推定される。また、元のファイル１５でスキャニングを進めているときに改訂ファイル１９のデータセグメントが見つかった場合、削除が生じたと推定される。
【００４０】
ステップ１２７で元のファイル１５および改訂ファイル１９が挿入および削除のために同期していると判断された場合、ファイル差同期化システム１００は図３Ａのステップに戻る。バイナリツリーが削除ノードおよび挿入ノードの両方を作成した場合、元のファイル１５および改訂ファイル１９は同期している。しかし、ステップ１２７で挿入および削除のために元のファイル１５と改訂ファイル１９が同期していないと判断された場合、ファイル差同期化システム１００はステップ１３１においてトークンが削除に対して一致するかを判断する。バイナリツリーが削除ノードまたは挿入ノードのみを作成した場合、元のファイル１５および改訂ファイル１９は同期していない。ステップ１３１で元のファイル１５と改訂ファイル１９が削除に対して一致していると判断された場合、ファイル差同期化システム１００はステップ１３２で子削除ルーチンを実行する。ここでは、子削除ルーチンを図５に関連して更に詳細に説明する。ステップ１３２で子削除ルーチンを実行した後、ファイル差同期化システム１００はステップ１３９に進み、図３Ａに戻る。
【００４１】
しかし、ステップ１３１で元のファイル１５と改訂ファイル１９が削除に対して一致していないと判断された場合、ファイル差同期化システム１００はステップ１３３で挿入に対してトークンが一致するかどうかを判断する。ステップ１３３で挿入に対してトークンが一致すると判断された場合、ファイル差同期化システムはステップ１３４で子挿入ルーチンを実行する。ここでは、子挿入ルーチンを図６に関して更に詳細に説明する。ステップ１３４で子挿入ルーチンを実行した後、ファイル差同期化システム１００は図３Ａに戻る。
【００４２】
それにもかかわらず、ステップ１３３で挿入に対してトークンが一致していないと判断された場合、ファイル差同期化システム１００はステップ１３５で元のファイル１５と改訂ファイル１９の両方における現在位置を進める。ステップ１３６で、ファイル差同期化システム１００は置換カウンタをインクリメントし、戻ってステップ１２７〜１３６を繰り返す。更なる処理の完了後、ファイル差同期化システム１００は図３Ａに戻ってステップ１０２を繰り返す。
【００４３】
しかし、ステップ１０２で元のファイル１５または改訂ファイル１９がエンドオブファイル（ＥＯＦ）に達したと判断された場合、ファイル差同期化システム１００はステップ１１１でパスコストを計算する。パスコストは、ルートからリーフまでの各パスをトラバース（移動）することによって計算される。パスコストは、デルタのサイズに基づいている。ステップ１１２で、ファイル差同期化システム１００は、差分ファイル２００へ各ノードのレコードを書き出しながら、最小コストパス（すなわち、最小デルタを有するパス）をトラバースする。
【００４４】
ステップ１１３で、ファイル差同期化システム１００は、改訂ファイル１９（図２）に対してエンドオブファイル（ＥＯＦ）状態に達したかどうかを判断する。ステップ１１３において、改訂ファイルのエンドオブファイル（ＥＯＦ）状態が生じていないと判断された場合、ファイル差同期化システム１００はステップ１１４において挿入列として、元のファイル１５の残り部分と共に差分ファイル２００（図２）に挿入レコードを書き込む。ステップ１１４で挿入レコードを書き込んだ後、ステップ１１９でファイル差同期化システム１００は終了する。
【００４５】
しかし、ステップ１１３で改訂ファイル１９のエンドオブファイル（ＥＯＦ）状態が生じていると判断された場合、ファイル差同期化システム１００はステップ１１５で元のファイルに残っているバイトをカウントする。ステップ１１６で、ファイル差同期化システム１００はステップ１１６で、元のファイルに残っているバイトのカウントと共に差分ファイル２００へ削除レコードを書き込む。ステップ１１９で、ファイル差同期化システム１００は終了する。
【００４６】
図４は、図３Ａに示すように本発明のファイル差同期化システム１００（図３Ａおよび３Ｂ）で動作するトラバーサルルーチン１４０の例を示すフローチャートである。トラバーサルルーチンはツリーの深さを選択し、この深さに達したときに、ルートノードをデルタに書き込み、ルートからリーフノードまでの最良パスを探し、ルートおよびツリーの半分を破棄（すなわち除去）し（ｐＲｏｏｔ−＞削除またはｐＲｏｏｔ−＞挿入からｐＲｏｏｔを進展させる）、再び処理を進める。このように、ツリーは指定された深さに維持されるので、メモリ割り当てを既知の量に維持し、またスキャニングに要する時間量を抑制することができる。
【００４７】
まず、トラバーサルルーチン１４０はステップ１４１で初期化される。ステップ１４２において、トラバーサルルーチン１４０はルートノードの内容を差分ファイル２００（図２）に書き込む。次に、ステップ１４３において、トラバーサルルーチン１４０は、各トラバースのパスコストを計算しながら、ルートから各リーフへの各パスをトラバースする。
【００４８】
ステップ１４４で、トラバーサルルーチン１４０は、最小コストパスがルートの削除サブツリーの子であったかどうかを判断する。ステップ１４４において最小コストパスがルート削除サブツリーの子でなかったと判断された場合、トラバーサルルーチン１４０はステップ１５１で新しいルートへのルートノードの子の挿入を行う。ステップ１５２において、トラバーサルルーチン１４０は古いルートノードの削除サブツリーを削除し、その後ステップ１５６に進む。しかし、ステップ１４４で最小コストパスがルートの削除サブツリーの子であったと判断された場合、トラバーサルルーチン１４０はステップ１５３で新しいルートからのルートノードの子の削除を行う。ステップ１５４で、トラバーサルルーチン１４０は古いルートノードの挿入サブツリーを削除する。ステップ１５６で、トラバーサルルーチン１４０は古いルートノードを削除し、ステップ１５９でトラバーサルルーチンを終了させる。
【００４９】
図５は、図３Ｂに示すように本発明のファイル差同期化システム（図３Ａおよび３Ｂ）で動作する子削除ルーチン１６０の例を示すフローチャートである。まず、ステップ１６１で子削除ルーチン１６０が初期化される。ステップ１６２で、子削除ルーチン１６０は新しいノード子削除を作成する。次に、ステップ１６３で、子削除ルーチン１６０は削除レコードを子削除に追加する。ステップ１６４で、子削除ルーチン１６０は置換カウンタがゼロよりも大きいか判別する。ステップ１６４で置換カウンタがゼロよりも大きくないと判別された場合、子削除ルーチン１６０は次にステップ１６６に進む。しかし、ステップ１６６で置換カウンタがゼロよりも大きいと判別された場合、子削除ルーチン１６０は次にステップ１６５で置換カウンタの値を使用して、子削除に置換レコードを追加する。
【００５０】
ステップ１６６で、子削除ルーチン１６０は削除側でリーフノードの子の子削除を行い、ステップ１６７でポインターを元のファイル１５に進め、またポインターを改訂ファイル１９に進める。ステップ１６８で、子削除ルーチンは置換カウンタをインクリメントし、ステップ１６９で終了する。
【００５１】
図６は、図３Ｂに示すように本発明のファイル差同期化システム１００（図３Ａおよび３Ｂ）で動作する子挿入ルーチン１８０の例を示すフローチャートである。まず、ステップ１８１において、子挿入ルーチンが初期化される。ステップ１８２で、子挿入ルーチン１８０は新しいノード子挿入を作成する。ステップ１８３で、挿入レコードが子挿入に追加される。ステップ１８４で、子挿入ルーチン１８０は、置換カウンタがゼロよりも大きいか判別する。ステップ１８４で置換カウンタがゼロよりも大きくないと判別された場合、子挿入ルーチン１８０はステップ１８６に進む。しかし、ステップ１８４で置換カウンタがゼロよりも大きいと判別された場合、子挿入ルーチン１８０はステップ１８５で置換カウンタの値を使用して、子挿入に置換レコードを追加する。
【００５２】
ステップ１８６で、子挿入ルーチン１８０は挿入側でリーフノードの子の子挿入を行い、ステップ１８７で元のファイルのポインターおよび改訂ファイルのポインターを進める。ステップ１８８で、子挿入ルーチン１８０は置換カウンタをインクリメントし、ステップ１８９で終了する。
【００５３】
上述したように、本発明の原理から実質的に逸脱することなく、本発明の実施形態に多数の修正および変更を行えうることは当業者に明らかである。そのような修正および変更は全て、以下の請求項に定義されるように、本発明の範囲内でここに含まれることを意図されている。
【図面の簡単な説明】
【図１】
図１は、コンピューティングデバイスが本発明のファイル差同期化システム１００を含むネットワーク環境を示すブロック図である。
【図２】
図２は、本発明のファイル差同期化システム１００を使用するコンピュータシステムの例を示すブロック図である。
【図３Ａおよび３Ｂ】
図３Ａおよび３Ｂは、図２に示すように、本発明のファイル差同期化システム１００のプロセスフローの例をまとめて示すフローチャートである。
【図４】
図４は、図３Ａに示すように、本発明のファイル差同期化システム１００で動作するトラバーサルルーチンの例を示すフローチャートである。
【図５】
図５は、図３Ｂに示すように、本発明のファイル差同期化システム１００で動作する子削除ルーチンの例を示すフローチャートである。
【図６】
図６は、図３Ｂに示すように、本発明のファイル差同期化システム１００で動作する子挿入ルーチンの例を示すフローチャートである。
【図１】
2004501451.tif 000003
【図２】
2004501451.tif 000004
【図３Ａ】
2004501451.tif 000005
【図３Ｂ】
2004501451.tif 000006
【図４】
2004501451.tif 000007
【図５】
2004501451.tif 000008
【図６】
2004501451.tif 000009
【国際公開パンフレット】
2004501451.tif 000010
2004501451.tif 000011
2004501451.tif 000012
2004501451.tif 000013
2004501451.tif 000014
2004501451.tif 000015
2004501451.tif 000016
2004501451.tif 000017
2004501451.tif 000018
2004501451.tif 000019
2004501451.tif 000020
2004501451.tif 000021
2004501451.tif 000022
2004501451.tif 000023
2004501451.tif 000024
2004501451.tif 000025
2004501451.tif 000026
2004501451.tif 000027
2004501451.tif 000028
2004501451.tif 000029
2004501451.tif 000030
2004501451.tif 000031
2004501451.tif 000032
2004501451.tif 000033
2004501451.tif 000034
2004501451.tif 000035
2004501451.tif 000036
2004501451.tif 000037
2004501451.tif 000038
2004501451.tif 000039
2004501451.tif 000040
2004501451.tif 000041
2004501451.tif 000042
【国際公開パンフレット（コレクトバージョン）】
2004501451.tif 000043
2004501451.tif 000044
【国際調査報告】
2004501451.tif 000045