JP2015528165A - ファイル間差分コンテンツ同期 - Google Patents

ファイル間差分コンテンツ同期 Download PDF

Info

Publication number
JP2015528165A
JP2015528165A JP2015520728A JP2015520728A JP2015528165A JP 2015528165 A JP2015528165 A JP 2015528165A JP 2015520728 A JP2015520728 A JP 2015520728A JP 2015520728 A JP2015520728 A JP 2015520728A JP 2015528165 A JP2015528165 A JP 2015528165A
Authority
JP
Japan
Prior art keywords
file
patch
data content
content
computing system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015520728A
Other languages
English (en)
Other versions
JP6186433B2 (ja
Inventor
カルコウスキー、グジェゴシ
チュワン、ミンツェ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/784,557 external-priority patent/US9355116B2/en
Priority claimed from US13/784,551 external-priority patent/US9418072B2/en
Application filed by VMware LLC filed Critical VMware LLC
Publication of JP2015528165A publication Critical patent/JP2015528165A/ja
Application granted granted Critical
Publication of JP6186433B2 publication Critical patent/JP6186433B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ファイルなどのコンテンツを、1つ又は複数のクライアントと1つ又は複数のサーバとの間で、同期させるための方法、システム、及び技法が提供される。例示的な実施形態は、ファイルのコンテンツ全体の移送を必要とすることなしに、ほぼ即時の方法で、リモート・システム間でファイルを同期させるために、ファイル間差分コンテンツ同期システム(CDCSS)を提供する。これらの構成要素が協働して、受信者がすでにアクセスを有するコンテンツに基づいて、修正された、又は新しいデータ・コンテンツを構築するように、受信者に命令するパッチ機構を提供することによって、可能な限り、データ・コンテンツ中の差分のみを受信者システムへ移送する。加えて、一実施形態では、CDCSS同期ソリューションは、パッチ及びファイルを追跡するために、サーバ・ベースのインデックスではなく、クライアント・ベースのインデックスを提供し、それによって、サーバ上の計算及びI/Oオーバーヘッドの量を低減し、更新を提供するためにクライアントとサーバとの間のネゴシエーションを必要としない。

Description

本開示は、ファイル同期のための方法、技法、及びシステムに関する。
典型的な企業環境では、ユーザは、様々なクライアント・デバイス及びクライアント・コンピューティング・システムを採用して、たとえば、パブリック又はプライベート・コンピューティング「クラウド」にリモートで記憶されているユーザのファイルを使用、共有、及び更新することができる。ここで、コンピューティング・クラウドとは、典型的にはインターネットなどのネットワーク上でサービスとして配信される、ソフトウェアを含むコンピューティング・リソースを指す。ファイルは、1つ又は複数のサーバ・コンピューティング・システム上で、たとえば、ネットワーク・ファイル・システム又は他のネットワーク・ストレージにリモートで記憶され、ネットワーク、たとえば、インターネットなどのワイド・エリア・ネットワーク(WAN)、プライベートWAN、又はローカル・エリア・ネットワーク(LAN)を介してアクセス可能である。クライアント・デバイスには、パーソナル・コンピュータ、タブレット、ラップトップ・コンピュータ、スマート・フォン、及び他のモバイル・デバイスなどのデバイスが含まれてもよく、それらのうちのいくつかは、リソース容量が限られている。
ファイルへのリモート・アクセスは、特にWAN上では、待ち時間の問題、及び最終的に効果的でなく苛立たしいユーザ・エクスペリエンスにつながり得る、帯域幅の問題(低速接続を介して移送されるデータが多すぎるなど)を受けることがある。これらの問題は、なおファイル全体が1つ又は複数のクライアント・デバイスと1つ又は複数のサーバ・コンピューティング・システムとの間で往復して移送される結果となる、ファイルに対する小さい増分的変更があるとき、特に苛立たしいものとなり得る。たとえば、典型的な企業ユーザは、1日に多数の修正を同じ表計算ファイル、プレゼンテーション、又は文書に対して行うことがあり、ユーザは、協力の目的でそれらの修正を別のユーザと共有することを望む。修正されたファイルは、したがって、1日に数回往復して移送され得る。
したがって、効率的なデータ移送を提供できることは、ユーザ・エクスペリエンスを左右することがあり、加えて、使用ベースのデータ・プランに加入する、モバイル・ユーザなどの限られたリソース・クライアント・プラットフォームのためのコスト節約につながり得る。
本願明細書で説明する実施形態は、ファイルなどのコンテンツを、1つ又は複数のクライアント(たとえば、クライアント・コンピューティング・システム)と、1つ又は複数のサーバ(たとえば、サーバ・コンピューティング・システム)との間で同期させるための、向上したコンピュータ・ベース及びネットワーク・ベースの方法、システム、及び技法を提供する。例示的な実施形態は、ファイルのコンテンツ全体の移送を必要とすることなしに、ほぼ即時の方法で、リモート・システム間でファイルを同期させるために、ファイル間差分コンテンツ同期システム(CDCSS)を提供する。具体的には、CDCSSは、受信者がすでにアクセスを有するコンテンツに基づいて、修正された、又は新しいデータ・コンテンツを構築するように、受信者に命令するパッチ機構を提供することによって、可能な限り、データ・コンテンツ中の差分のみを受信者システムへ移送する。加えて、一実施形態では、CDCSS同期ソリューションは、パッチ及びファイルを追跡するた
めに(他の実施形態において提供され得る、サーバ・ベースのインデックス、又は共有のクライアント及びサーバ・インデックスではなく)クライアント・ベースのインデックスを提供し、それによって、サーバ上の計算及びI/O(入出力)オーバーヘッドの量を低減し、更新を提供するためにクライアントとサーバとの間のネゴシエーションを必要としない。これは、サーバから作業をオフロードするために十分なコンピューティング能力を有する、デスクトップ・コンピュータ及びラップトップ・コンピュータなどの「シック」クライアントでは、特に効果がある。加えて、サーバによって移送され、リモート・クライアントにおいて最終的に記憶される、重複データの量を制限することによって、更新を携帯電話にダウンロードするときなど、更新がサーバからリモート・クライアントへ効率的に提供され得る。
ファイル間差分コンテンツ同期システムを展開するための例示的な環境のブロック図。 ファイル間差分コンテンツ同期システムを使用して、例示的なサーバと、及び互いに、ファイルを同期させる例示的なクライアントのブロック図。 クライアント上で修正されたファイルへの更新を同期させるために、ファイル間差分コンテンツ同期システムによって製作された、例示的な単一ファイル・パッチを示すブロック図。 別のクライアントによって生成されたファイルへの更新を同期させるために、ファイル間差分コンテンツ同期システムによって製作された、例示的なファイル間パッチを示すブロック図。 例示的なファイル間差分コンテンツ同期クライアント処理、及び例示的なファイル間差分コンテンツ同期サーバ処理の、構成要素を示すブロック図。 ファイル間差分コンテンツ同期システムにおいて使用するためのパッチを生成するための論理の例示的なフローチャート。 ファイル間差分コンテンツ同期システムにおいて使用するためのパッチを処理するための論理の例示的なフローチャート。 本願明細書で説明するファイル間差分コンテンツ同期システムの実施形態を実施するために使用され得る、例示的なコンピューティング・システムの例示的なブロック図。
例示的な実施形態では、CDCSSは、ファイル間差分コンテンツ同期(CDCS)クライアントと呼ばれるクライアント部分、及び、ファイル間差分コンテンツ同期(CDCS)サーバと呼ばれるサーバ部分からなり、それらの部分は、同期が望まれるとき、協働して、2つのコンピューティング・システム間で「パッチ」を移送する。パッチは、変更になった(又は、さもなければ、別のファイル中で位置を特定することができない)ファイル・コンテンツの部分のための新しいデータと、変更になっておらず、他の場所で位置が特定可能であるデータのロケーションへの参照とを含む、ファイル・コンテンツの表現である。パッチは、したがって、「差分同期」又は「差分sync」−すなわち、コンテンツが更新又は作成された前及び後の、コンテンツ中の差分のみの同期(又は「sync」)を提供する。本願明細書で使用されるとき、「ファイル」は、どのように記憶されるか(たとえば、ファイルの1部分、オブジェクト、記憶されたデータなど)にかかわらず、任意のタイプのファイル・コンテンツを指し、テキスト、ビデオ、画像、バイナリ、又は他のデータなどのコンテンツを含み得る。各パッチは、複数のセグメント(たとえば、レコード、部分など)を含み、各セグメントは、データ・コンテンツ(直接)、又は、データ・コンテンツの位置が特定され得る別のファイル・ロケーションへの参照(たとえば、インジケータ、ポインタ、記述など)を含む。
パッチは、1つ又は複数の他のファイルに記憶されるデータを参照することができるので、「ファイル間」パッチと見なされ得る。たとえば、ある会社のレターヘッド・テンプレートを使用して製作されるレターを考えられたい。会社のロゴは、あるファイルにおいて記憶され、位置が特定可能であり得るものであり、レターの受取人の住所は、連絡先ディレクトリにおいて記憶され、位置が特定可能であり得るものであり、レターのコンテンツはさらに、第3のファイルにおいて記憶され、位置が特定可能であり得る。CDCSSによって製作される例示的なパッチは、レターの実際のコンテンツと、(具体的なロケーション情報を含む)会社のロゴを含む第2のファイル中のエリアへの参照と、受取人情報を含む第3のファイルへの参照とを含み得る。第2のファイル及び第3のファイルが受信者コンピューティング・システム上にすでに存在するとき、第2のファイル及び第3のファイル内のロケーションへの参照を使用することによって、パッチ機構は、受信者コンピューティング・システム上にすでに存在する重複データを送信することを回避する。
ファイルが、たとえば、情報の「製作者」として働くクライアント・デバイス(たとえば、製作者クライアント・デバイス)によって、新たに作成又は修正されるとき、クライアント・デバイスは、パッチを計算し、パッチを宛先又は受信者サーバへ送信する。サーバは、すでに記憶されたデータとともにパッチを処理して、新しい又は修正されたファイルを作成する。後に、別のクライアント・デバイス(たとえば、データの「消費者」)が、新しい又は修正されたファイルで更新されるとき(たとえば、ファイルの同期、要求などが行われるとき)、ファイル全体を送信する代わりに、サーバは、製作者クライアント・デバイスによってすでに計算されたパッチのみを、消費者として働くクライアント・デバイス(たとえば、消費者クライアント・デバイス)へ送信することができる。消費者クライアント・デバイスは、すでに有するファイルを使用してパッチを処理することによって、かつ/又は、任意の欠落した情報をダウンロードすることによって、それ自体の新しい又は修正されたファイルを作成することを担う。したがって、新しい又は修正されたファイルは、(差分sync機構を使用して)パッチを計算すること、及び、パッチを(たとえば、クラウド中の)サーバにアップロードすることによって、他者と共有することができ、サーバは、ファイルを構成/再構成し、パッチをキャッシュし、(たとえば、ダウンロードすることによって)他のコンピューティング・システムへ伝搬され得るようにする。
いくつかの実施形態では、パッチは、(たとえば、設定された、プリセットされた、構成されたなどの)ある時間期間の間に、又は、あるアルゴリズム(たとえば、最長時間未使用、最低使用頻度、FIFOなど)に従ってキャッシュされ、次いで、時間期間が満了するか、又はアルゴリズムがそのように指図するとき、キャッシュからフラッシュされる。パッチをキャッシュから削除すると、更新を受信する消費者クライアントは、パッチの代わりにファイル・コンテンツ全体を受信し得る。加えて、いくつかの実施形態では、たとえば、パッチがもはやキャッシュされていないか、又は利用可能でないとき、サーバは、必要に応じてパッチを再計算し得る。いずれの場合も、消費者クライアントが処理するためにパッチを受信するとき、消費者クライアントは、それが製作者クライアント・デバイスによって作成された元のパッチであったか、サーバによって作成された新しいパッチであったかを知る必要はない。いくつかの実施形態では、ストレージが、事実上、無制限である場合、パッチは、削除又は満了なしにキャッシュされ得る。
場合によっては、クライアント・デバイスは、他者(たとえば、発行者の立場で働くクライアント・デバイス)によって作成された情報を、この情報をサーバに効率的にアップロードし、パッチを通して広めることによって、さらに発行することができる。発行されるべき情報が、発行者クライアント・デバイス上にすでに存在する他の情報に依存する範囲で、パッチは計算可能であり、広められ得る。発行されるべき情報がそのように依存しない範囲では、発行されるべき情報全体がサーバへ送信される必要があり得る。
説明するように展開されるとき、CDCSSは、システム間で移送される重複データの量を低減することによって、移送される情報を最適化する。これは、データ移送が低速であるか、又はコストがかかり得る環境において特に有用であり、増分的に修正されたコンテンツの即時に近い(たとえば、リアルタイムに近い)同期を提供する。CDCSS技法は、類似データが特定のコンピューティング・システム上に存在する高い確率を活用し、それに応じて、大規模なグローバル重複排除方式を管理するのではなく、分散ベース(各クライアント)のより小さいインデックスを管理する。加えて、CDCSSは、構成要素がファイル・システム及び他のシステム態様から分離しているので、重複排除を念頭に置くことなしに設計されたアーキテクチャに組み込むことができる。
図1は、ファイル間差分コンテンツ同期システムを展開するための例示的な環境のブロック図である。環境100は、少なくとも1つのクライアント・コンピューティング・システム(クライアント)101と、少なくとも1つのサーバ・コンピューティング・システム(サーバ)120とを含む。クライアント101は、サーバ120と通信して、ファイルを同期させる。上述のように、そのような通信及び同期は、LAN、WANなどのネットワークであり得る通信機構130を介して、又は、ある通信ゲートウェイを介して行われ得る。サーバ120は、「クラウド」中のサーバであってもよく、クライアント101に知られていないあるホスト・コンピューティング・システム上のサービス型ソフトウェア(SAAS:software as a service)アプリケーションとして展開され得る。
クライアント101は、CDCSクライアント102の使用を通して、パッチ110などの1つ又は複数のパッチを、通信機構130を介してサーバ120へ送信する。クライアント101が生成した(又は、ファイル・ストレージ103にファイルとして記憶した)、新しい又は修正されたファイルを同期させるために、クライアント101は、図3、図4、及び図6を参照して以下でさらに詳細に説明するように、修正の前及び後の、ファイル・コンテンツ中の差分を記述するパッチ110を計算する。サーバ120は、CDCSサーバ121の使用を通して、パッチ110などの1つ又は複数のパッチを、通信機構130を介してクライアント101から受信する。図7に関してさらに説明するように、パッチ110は、セグメント(たとえば、レコード、部分など)において受信され、パイプラインで(たとえば、逐次的に、又は流れ処理を介して)処理され得る。各パッチが処理されて、ファイル・システム122に記憶されるファイル(又は、ファイル・バージョン)が生成される。加えて、パッチ110のコピーが、他のクライアント(図示せず)を同期させる/更新するためのさらなる配信のために、パッチ・キャッシュ123にキャッシュされる。加えて、サーバ120が(たとえば、別のパッチ110を送信して、クライアント101を更新するために)さらにパッチを配信して、クライアント同期させる/更新するとき、サーバ120は、パッチ110中で参照されるすべてのファイルのリスティングを含む、パッチ・マニフェスト115を計算及び送信する。このようにして、受信者コンピューティング・システムは、被参照ファイルが実際に存在することを最初に検証し、被参照ファイルが存在しない場合、ファイル全体を全部要求するか、又は、ただ参照を処理するのではなく、被参照ファイルからのデータ・コンテンツを要求するかのいずれかを選ぶことができる。
クライアント101は、クライアント101がそれについて知っており、サーバ120上に存在すると考える、ファイルの部分へのインデックスを含む、ローカル・チャンク・インデックス104に基づいて、パッチ110を計算する。一実施形態では、CDCSSの各ファイルが、線形にバイト1〜Nまでのデータ(データ・コンテンツ)の1つ又は複数のチャンクに分割される。可変サイズのデータの重複しないチャンクが、「コンテンツ定義チャンキング」(CDC:content−defined chunking)と
呼ばれる技法を使用して、それらのコンテンツに基づいて決定される。「ラビン・フィンガープリンティング」などの異なるアルゴリズムが、ファイルをチャンクに分割するため、及び、ファイル・コンテンツを表現するために、CDCSSに組み込まれ得る。ファイルがチャンクに分割されると、チャンクごとに、ハッシュが計算され、ローカル・チャンク・インデックス104中でインデックス付けされる。各チャンクのためのハッシュは、そのチャンクについてのロケーション情報、たとえば、ファイル識別子及びオフセットに関連付けられるので、インデックス付けされたハッシュに基づいて、チャンクについてのロケーション情報が識別され得る。いくつかの実施形態では、ハッシュは、チャンクのコンテンツの強力暗号学的ハッシュ(たとえば、SHA−256)であるが、他の実施形態では、他のハッシュ及び/又は他の識別子が組み込まれてもよい。
ファイル・コンテンツが修正又は作成されるとき、CDCSSは、(たとえば、ラビン・フィンガープリンティング・アルゴリズムを使用して)ファイルをチャンクに分割し、チャンク・インデックス104中のチャンクのハッシュをルック・アップすることによって、各チャンクがローカル・チャンク・インデックス104中にすでに存在するかどうかを判断する。ローカル・チャンク・インデックス104を表現するための任意のデータ構造が使用されてもよく、たとえば、リスト、ファイル、データベース、アレイ、テーブルなどが含まれる。チャンクがローカル・チャンク・インデックス104中にすでに存在する場合では、CDCSSは、ファイルのそのチャンクを表現する参照情報をパッチ110中に生成する。チャンクがすでに存在するのではない場合では、CDCSSは、そのチャンクについてのデータ・コンテンツ情報をパッチ110に記憶する。このようにして、CDCSSは、ファイルをチャンクごとに検査することによって、パッチ110を逐次的に構築する。結果として、パッチ110は、作成されるときに(又は、いくつかの実施形態では、パッチ全体が計算された後に)、分けて受信者へ転送(たとえば、送信、移送、通信など)されて、受信されるときに、逐次的に、たとえば、パイプラインにおいて処理され得る。注目すべきことに、パッチのフォーマットは、使用されるチャンキング・アルゴリズム、及び、パッチがどのように作成されるかとは無関係である。したがって、パッチは、どのようにパッチが作成されたかの詳細の知識なしに、受信されるときに処理され得るものであり−単に、パッチがコンテンツ及びコンテンツへの参照を含むこと、ならびに、パッチ自体をどのように処理するかである。
一実施形態では、「ラビン・フィンガープリンティング」アルゴリズムは、ファイルのチャンク境界を決定するために、及び、したがって、ファイルのためのチャンクを選択するために採用される。コンテンツをフィンガープリンティングする処理はまた、「チャンキング」とも呼ばれる。ラビン・フィンガープリンティングは、ラビン,マイケル オー(Rabin,Michael O.),Fingerprinting by Random Polynomials,Technical Report TR−15−81,コンピューティング技術研究センター(Center for Research in Computing Technology),ハーバード大学(Harvard
Univ.),1981に詳述されており、その全体を本願明細書に援用する。コンテンツ定義チャンキング(CDC)のためのラビン・フィンガープリンティングの使用は、Muthitacharoenら(Muthitacharoen et al.),A
Low−Bandwidth Network File System,Proc.18th Symp.Operating System Principles,Banff,CA,October,2001に記載されており、その全体を本願明細書に援用する。要約すれば、ラビン・フィンガープリントは、あらかじめ選択された既約多項式によって除算されたバイト列の多項式表現の除算からのリマインダとして定義される。フィンガープリントは、2つの異なるバイト列が異なるフィンガープリントを有することになる強い確率を提供する。ファイルのバイト(40バイトと64バイトとの間)のスライディング・ウィンドウのフィンガープリントは、ローリング・チェックサムとほぼ同様に
計算される。ウィンドウのフィンガープリントの最下位13ビットが、あらかじめ選択された「マジック」値に等しいとき、ウィンドウの終了オフセットがチャンク境界であると見なされる。チャンクの最小サイズ及び最大サイズは、必要に応じて構成及び調整され得る。一実施形態では、それらは、それぞれ4KB及び16KBに設定される。ロビン・フィンガープリント・アルゴリズム及び同様のアルゴリズムに存在する計算のようなローリング・チェックサムは、信頼性と速度とのバランスを提供する。
注目すべきことに、他のアルゴリズムが例示的なCDCSSに組み込まれてもよい。たとえば、適度な一様分布による任意のハッシング・アルゴリズムが、ファイル・データのフィンガープリンティング/チャンキングを行うために使用され得る。たとえば、SHA−1又はMD5などのセキュアなハッシュ・アルゴリズム・ファミリーからのハッシュが使用され得るが、それらは一般に、計算のためにより費用がかかる。
パッチが送信されると、パッチは、たとえば、受信者(サーバ又は消費者クライアント)によって、受信されるときに「オン・ザ・フライ」で処理され得る。図7に関してさらに説明するように、サーバ又は他の受信者は、パッチを線形に処理して、それ自体のチャンク・インデックスを必要としないことを含めて、いかなるチャンク・インデックスも必要とすることなしに、そのコンテンツからファイルを生成することができる。パッチ・フォーマットは、単体で、そのコンテンツからファイルを生成するためのレシピを記述する。新しい又は修正されたファイルは、パッチに埋め込まれるデータ・コンテンツを追加することによって、及び、パッチ中で参照される他のファイルからのデータ・コンテンツのチャンクをコピーすることによって、構築される。結果として、CDCS技法は、差分syncのために、又は重複排除処理を使用するためにセット・アップされなかったコンピューティング・システムとともに使用され、又はそれに組み込まれ得る。具体的には、クライアントがCDCSクライアント(たとえば、syncデーモン処理)を実行し、サーバがCDCSサーバ(たとえば、syncプロセッサ)を実行する限り、クライアント及びサーバが通信して、さらなる修正なしに差分syncを提供することができる。
パッチ・フォーマット、ならびに、チャンク・インデックスを生成及び転送するための技法のために、CDCSSは、コンテンツがサーバ上で利用可能であるかどうかを確かめるための、受信者サーバとのいかなるネゴシエーションもなしに、何がインデックス中に含まれているかについてのクライアント側の知識のみに基づいて、ファイル・コンテンツの差分syncを行うことができる。具体的には、サーバがあらゆるファイルを不変に記憶する(たとえば、すべてのファイル、バージョンなどが、永久に記憶され、又はアクセス可能である)環境では、製作者クライアントは、(クライアントの通知によって確定され得る、チャンク・インデックス中のエラーがない限り)ファイルがそのチャンク・インデックスによって参照される場合、ファイルがサーバ上に存在すると仮定し得る。さらに、チャンク・インデックスの設計及び実装形態に応じて、クライアント上で削除された可能性のあるファイルが、依然として、ある時間期間の間に、又は無期限に、クライアントのチャンク・インデックスによって参照されることがある。これらのファイルは、サーバ上で不変である(たとえば、アーカイブされ得るが、実質的な意味においては決して削除されない)ので、ファイルがクライアント上にもはや存在しないとしても、依然としてサーバ上にあるファイルの存在を活用するパッチを作成して、sync動作においてクライアントによって転送されるデータの量を低減することができる。この態様は、「新しいファイルとして保存する&元のファイルを削除する」シナリオにおいて、特に有用であり得る。
図2は、ファイル間差分コンテンツ同期システムを使用して、例示的なサーバと、及び互いに、ファイルを同期させる例示的なクライアントのブロック図である。例200によれば、複数のクライアント・コンピューティング・システム201a、201b、及び2
01cが、サーバ・コンピューティング・システム220に通信可能に接続される。図示しないが、クライアント201a〜201cはまた、様々な他のサーバに接続されてもよく、様々な他のサーバのうちの複数にファイルを同期させてもよい。各クライアント201a〜201cは、それぞれ、それ自体のチャンク・インデックス202a、202b、及び202cと、それぞれ、それ自体のsyncデーモン(CDCSクライアント)203a、203b、及び203cとを有する。チャンク・インデックス202a〜202c及びsyncデーモン203a〜203cは、図1に関して説明したように動作する。syncデーモン203a〜203cは、クライアントがその製作者の役割で働いている(ファイルを修正中又は作成中である)とき、パッチを生成し、サーバ220へ転送することを担い、クライアントがその消費者の役割で働いている(ファイルに対する更新又は新しいファイルを受信中である)とき、パッチを受信及び処理することを担う。
ファイルを記憶するためのサーバ・ファイル・システム223は、サーバ220に関連付けられ、各クライアント201a〜201cは、そのファイルが最新に保たれ、他のクライアントと共有され得るように、そのファイルをサーバ220と同期させることを担う。いくつかの実施形態では、ファイル・システム223が分散されるが、同期方法はなお、すべてのシステム上のファイルを最新に保つために採用され得る。サーバ220はまた、受信されたパッチを処理して、サーバに関連付けられたファイル・システム223に記憶される、ファイル224a〜224dなどのファイルを作成することを担う、syncプロセッサ(CDCSサーバ)221を実行する。
図示の例では、クライアント201aは、ファイル「A」204を含み、それを修正しており−ファイル「A’」205として示す。図3において説明するように、ファイルA’205は、いくつかの修正とともにファイルA204に基づくコンテンツを有する。クライアント201Aは、syncデーモン203aの使用を通して、サーバ220へアップロードするパッチ215を生成する。サーバ220は、そのsyncプロセッサ221を通して、パッチ215を処理して、新しいファイル(又はバージョン)である、ファイルA’224bを生成し、それをファイル・システム223に記憶する。syncプロセッサ221はまた、パッチ214のコピーを構築し、かつ/又はパッチ・キャッシュ222に記憶する。
例200では、クライアント201bは、そのsyncデーモン203bを使用して、ファイルA’を生成するために使用されるパッチのコピー(ここでは、パッチ・インスタンス216)をダウンロードする。パッチ216がsyncデーモン203bによって処理されて、ファイルA’のそれ自体のコピー207が、ファイルAのそれ自体のコピーへの参照(図示せず)に基づいて生成される。ここで、クライアント201bは、消費者クライアントとして働いている。別の例では、クライアント201bは、パッチ(図示せず)を送信して、同じく共有及び同期のために、サーバ220上でファイルB206を生成又は更新する。この場合は、クライアント201bは、製作者クライアントとして働いている。
また、例200では、クライアント201cは、サーバ・ファイルB224cストレージからファイルBのコピー209を、及び、サーバ・ファイルB224bストレージからファイルA’210を(全ファイル・コンテンツ・ダウンロードを通して、又は、1つもしくは複数のパッチを以前に受信及び処理することによって)以前にダウンロード/更新しており、パッチ217を受信して、新しいファイルであるファイルC208を生成する。ファイルC208のためのパッチは、図4を参照して説明するように、ファイルB209中で発見され得るあるコンテンツと、ファイルA’210中で発見され得るあるコンテンツとを含む。
図3は、クライアント上で修正されたファイルへの更新を同期させるために、ファイル間差分コンテンツ同期システムによって製作された、例示的な単一ファイル・パッチを示すブロック図である。例300は、ファイルA204に対して行われた変更をアップロードして、たとえば、新しいバージョンであるファイルA’224bとしてサーバ220上に記憶されるようにするために、図2におけるクライアント201aにおいてパッチがどのように生成されるかを示す。この例では、ファイルA’は、ファイルAの修正されたバージョンを示す。チャンク301は、ファイルをデータ・コンテンツのセグメントに分割するチャンキング・アルゴリズムを適用した結果として生じる、ファイルAのチャンクを表現する。ファイルAは、5つの別々のチャンク、すなわち、AからAに分割されるように示される。チャンク302によって表現されたファイルA’は、7つの異なるチャンクを含むように示され、そのうちの4つは、ファイルA中に含まれるものと同一であり、すなわち、チャンクA、A、A、及びAである。チャンク302のうちの3つは、新しいか又は修正されており、その理由は、それらがチャンクA’などのまったく新しいデータ(グレーの点描によって図示)を含むから、又は、それらが、ファイルAからのチャンクAに対するいくつかの修正を含むチャンクA’など、修正されたファイルAのチャンクからのデータを含むからである。具体的には、チャンクAは、ファイルA’において2つの新しいチャンク、すなわち、修正を含むチャンクA’と、ファイルAからのデータを含むチャンクA’とに分離されている。
パッチ305は、クライアント201aによって、差分syncを行い、ここではファイルA’と命名される、ファイルAに対する修正を作成するために生成される、例示的なパッチである。(実装形態に応じて、修正は、新しいファイル、新しいファイル・バージョン、又はファイルAに対する修正であると考えられ得ることに留意されたい。)図3の目的では、ファイルA’は、ファイルAのより最近のバージョンとして扱われる。CDCSS技法による例示的なパッチ・フォーマットでは、パッチ305は、ヘッダと、その後に続くファイルA中のチャンクAへの参照と、その後に続くチャンクA’のためのデータ・コンテンツと、その後に続くファイルA中のチャンクAへの参照と、その後に続くチャンクA’のためのデータ・コンテンツと、その後に続くチャンクA’のためのデータ・コンテンツと、その後に続くファイルA中のチャンクAへの参照と、その後に続くファイルA中のチャンクAへの参照とからなる。
一般に、一実施形態によれば、パッチは、ヘッダの後に続く1つ又は複数のセグメント(たとえば、レコード、アイテムなど)からなり、ヘッダは、パッチ識別子、フォーマット・インジケータ、パッチを適用した結果として生じるべきであるファイルの長さのインジケータ、及び、結果として生じるファイルのメディア・タイプのインジケータなど、パッチについてのある情報を与える。パッチの各セグメントは、その中に含まれているデータ・コンテンツのそのサイズ及びタイプを識別するデータ・レコード、又は、データを含むファイルの一意のファイル識別子(たとえば、ファイルID又はUUID)と、バージョン識別子と、オフセット(たとえば、被参照ファイル中のデータのチャンクへのバイト・オフセット)と、チャンクのハッシュ(たとえば、SHA−256ハッシュ)とを示す、タプルを含む、参照レコードのいずれかである。受信者は、ファイルID及びオフセットに基づいて、検索されたデータのハッシュを計算すること、ならびに、そのハッシュを記憶されたハッシュ値と比較することによって、ハッシュを使用して、検索されたデータを検証することができる。それらが同じではない場合、受信者は、パッチ中、又は記憶されたファイル中でエラーを検出することができる。この場合、受信者(たとえば、サーバ)は、パッチをアップロードしたクライアントに、そのパッチが不正確であると通知することができる。いくつかの実施形態では、参照レコードを含むパッチ・セグメントは、(ファイルID/UUID及びバージョンを使用して)参照を定義する別のレコード、及び、参照内のチャンクのロケーション(オフセット、長さ、ハッシュ)を示す別のレコードを実際に記憶し得る。これにより、パッチ内に含まれた参照のリストを提供するマニフェ
ストの容易な作成が可能になる。
図3から顕著であるように、ファイルA’は、「単一ファイル」パッチ305の生成を引き起こす。すなわち、このパッチは、パッチ・フォーマットが複数のファイルをハンドリング可能であり−よって「ファイル間」パッチという用語であるにもかかわらず、2以上のファイルを参照する参照を有していない。1つのファイルのみが参照されるそのような場合、必ずではないが、パッチの表現に対する単純化が採用されてもよい。加えて、他のクライアントへパッチを送信することを伴うか、又はそれに先行するように後に作成されるマニフェストは、1つのファイルのみを参照するので、単純化されてもよい。
他のシナリオでは、ある他の最適化又は向上が、パッチ及び/又はパッチ・マニフェストに組み込まれてもよい。たとえば、パッチは、自己参照的であってもよく、すなわち、パッチの部分がパッチの他の部分を参照することができる、パッチが圧縮され得るか、もしくは圧縮されるデータ・コンテンツを含み得る、又は、パッチが、上記で識別されたフォーマット(データ・レコード及び参照レコード)に加えて、もしくはその代わりに、挿入/削除命令もしくは他のタイプの演算子を含み得る。他の最適化が組み込まれてもよい。たとえば、ファイルが、それらの特定のフォーマット(たとえば、フォーマット・アウェアなチャンキング)に基づいて、チャンクにセグメント化されてもよい。1例として、zipファイルは、当然、サブ・ファイル境界に分割されてもよく、サブ・ファイル境界はさらに分割され得る。同様に、特定のフォーマットのチャンキングが、MP3などのフォーマットのために、オーディオ・データからメタデータを分離するために開発されてもよい。また、いくつかの実施形態では、増分/差分syncの目的のためのパッチが、潜在的に構成可能な、あるサイズを上回るファイルのためにのみ生成されてもよい。
図4は、別のクライアントによって生成されたファイルへの更新を同期させるために、ファイル間差分コンテンツ同期システムによって製作された、例示的なファイル間パッチを示すブロック図である。例400は、ファイルB及びファイルA’からファイルCを生成するために使用され得るパッチをダウンロードするために、図2におけるクライアント201cにおいてパッチがどのように処理されるかを示す。この例では、ファイルA’は、ファイルAの直近のバージョンを示す。チャンク401は、図3を参照して説明したファイルA’のチャンクを表現する。ファイルA’は、7つの別々のチャンクに分割されるように示される。チャンク402は、以前にクライアント201cにダウンロードされたファイルB(図2のファイルB209)のチャンクを表現する。チャンク405は、新しいデータ・コンテンツ・チャンクC,Cから、ならびに、ファイルA’及びファイルB内のデータ(それぞれ、チャンクA,A、ならびに、チャンクB,B)から形成された、ファイルC(図2のファイルC208)のデータ・チャンクを表現する。
CDCSS技法による例示的なパッチ・フォーマットでは、パッチ406は、ヘッダと、その後に続くチャンクCのためのデータ・コンテンツと、その後に続くファイルB中のチャンクBへの参照と、その後に続くファイルA’中のチャンクAへの参照と、その後に続くファイルA’中のチャンクAへの参照と、その後に続くチャンクCのためのデータ・コンテンツと、その後に続くファイルB中のチャンクBへの参照とからなる。
図5は、例示的なファイル間差分コンテンツ同期クライアント処理、及び例示的なファイル間差分コンテンツ同期サーバ処理の、構成要素を示すブロック図である。一実施形態では、ファイル間差分コンテンツ同期システムは、最適化された方法でコンテンツ差分を同期させるためにともに働く、1つ又は複数の機能的な構成要素/モジュールからなる。これらの構成要素は、ソフトウェアもしくはハードウェア、又は両方の組合せで実装され得る。例示500によれば、ファイル間差分コンテンツ同期システムは、CDCSクライ
アント501及びCDCSサーバ510からなる。CDCSクライアント501は、コンテンツ同期デーモン処理502、パッチ・インデックス506、チャンク・ロケーション情報507、及びパッチ生成作業空間からなる。CDCSサーバ510は、コンテンツ同期プロセッサ511、パッチ・キャッシュ515、及びファイル生成作業空間516からなる。
図1を参照して説明したように、コンテンツ同期デーモン(処理)502は、クライアント上で実行し、新しいファイル及び修正されたファイルをサーバにアップロードするためにパッチを生成すること、ならびに、新しいファイル及び修正されたファイルをダウンロードするためにパッチを処理することを担う。一実施形態では、処理502は、クライアント・システム上の既知のフォルダを監視して、いつファイルが変更されたかを判断する。監視はまた、あるオペレーティング・システム・イベント・ハンドリングをサブスクライブすることによっても達成され得る。(サブスクライブされたシステム・イベントに従って)変更がファイルに対して行われるとき、ファイルが読み出され、インデックス付けされ、処理502は、変更を同期させるかどうか、及び、いつ同期させるかを判断する。代替実施形態では、処理502は、I/Oドライバ又は階層の一部として実行し得る。加えて、処理502は、フォルダ階層を走査して、いつファイルが変更されたかを判断し得る。これは、イベントをサブスクライブすること、もしくはドライバ階層の一部として実行することに関連して起こり得るものであり、又は、他の実施形態では、監視のための単独の機構を提供し得る。他の機構が、デーモン502がいつパッチを生成又は処理するかを判断するために、同様に組み込まれてもよい。
処理502は、さらに、マニフェスト・ハンドラ503、パッチ・ハンドラ504、及びファイル・アセンブラ505を備え、又はそれらに関連付けられる。マニフェスト・ハンドラは、たとえば、マニフェストがサーバから受信されるとき、マニフェストを処理して、今度の又は付随するパッチによって参照される、参照される(被参照)ファイルが、真に利用可能であることを確認する。それらが利用可能でないか、又はさもなければエラーである場合、クライアント501は、ファイルのための完全ファイル・コンテンツがダウンロードされることを要求するオプション、又は、いずれにせよパッチを受け入れ、欠落したパートを充填することによって破損している参照を「修復」するために(ロケーション及びバイト数によって指定もされる)特定のコンテンツを、たとえばサーバから要求するオプションを有する。そのような場合、サーバは、エラーをハンドリングし、記憶されたパッチ(たとえば、パッチ・キャッシュ515にキャッシュされたパッチ)を修復するように、プログラムされ得る。一実施形態では、受信者クライアントが、マニフェストを処理することによってパッチが適用され得ることを検証するまで、及びそうでない限り、パッチはダウンロードされない。
パッチ・ハンドラ504は、受信されたパッチを処理することを担う。(受信者サーバによるか、受信者クライアントによるかにかかわらず)パッチを処理することを、図7を参照してさらに説明する。パッチは、逐次パイプラインの方法で、1度に1セグメントずつ処理され得るものであり、結果のファイルは、ファイル・アセンブラ505によって構築され得る。
図1を参照して説明したように、パッチ・インデックス506(ローカル・チャンク・インデックス)は、クライアント上のすべてのファイルのコンテンツ・チャンクを、典型的には、暗号学的ハッシュを使用してインデックス付けする。これらのインデックス付けされたハッシュ値は、ファイルをチャンクにセグメント化することを助けるために使用される、いかなるハッシュ又は他のアルゴリズムとも無関係であり、別々のアルゴリズムを使用して導出され得る。各インデックス・キー(たとえば、ハッシュ値)は、コンテンツのチャンクについてのロケーション情報に帰着する。いくつかの実施形態では、ロケーシ
ョン情報は、別のリポジトリ507に記憶される。他の実施形態では、ロケーション情報は、直接、パッチ・インデックス506の一部として記憶される。パッチ・インデックス506は、パッチを転送してファイルを同期させるために、新しい又は修正されたファイル・データの製作者として働くクライアントのために、パッチを生成するために使用される。他の場所で説明したように、新しい又は修正されたデータに遭遇するとき、そのチャンクのハッシュが、パッチ・インデックス506中でインデックス・キーとしてルック・アップされ、ハッシュが存在する場合、既存のデータへの参照が生成中のパッチに入れられ、ハッシュが存在しない場合、データ・コンテンツ自体が生成中のパッチに記憶される。いくつかの実施形態では、パッチ生成作業空間508が、パッチの生成を援助するために、CDCSクライアント501中に含まれる。
同様に、CDCSサーバ510のコンテンツ同期プロセッサ511は、マニフェスト・ハンドラ512、パッチ・ハンドラ513、及びファイル・アセンブラ514を含む。マニフェスト・ハンドラ512は、受信されたパッチのためのマニフェストを(たとえば、パッチが別のクライアントに伝搬される前に)生成することを担う。パッチ・ハンドラ513は、ファイルをsync中であるクライアントからパッチを受信し、パッチ・キャッシュ515に記憶された、キャッシュされたパッチを、受信者である他のクライアントへ転送(たとえば、送信、搬送、通信など)する。ファイル・アセンブラ514は、パッチが処理中であるとき、新しい又は修正されたファイルをアセンブルするために使用される。パッチから新しい(又は、新しいバージョンの)ファイルへデータを直接コピーすることによって、又は、記憶されたロケーション情報、サイズなどに従って、パッチによって参照されるファイルからデータを検索することによって、ファイルがファイル生成作業空間516中でアセンブルされる。
一実施形態では、CDCSサーバ510のコンテンツ同期プロセッサ511は、RESTアプリケーション・プログラミング・インターフェース(API)を使用して実装され、したがって、サービス型ソフトウェア(SAAS)として、又は他のウェブで利用可能なリソースとして、利用可能である。プロセッサ511として働くウェブ・サーバは、ファイルの要求に対応し、可能な限り、パッチを返す。
CDCSSの技法は、一般に、任意のタイプのファイルに適用可能であるが、「ファイル」という言い回しは、一般に、そこから差分コンテンツが決定され得る任意のタイプのオブジェクトを暗示するために使用される。また、本願明細書で説明する例は、しばしば、サーバ・ファイル・システムに言及するが、本願明細書で説明する技法はまた、ローカルで、ネットワーク・ファイル・システムとともにリモートで、又は、重複排除を促進するための他のアーキテクチャにおいても使用され得る。たとえば、本願明細書で説明する技法は、任意のタイプのファイル・システムに記憶されたファイル、任意のタイプのデータ・ストアに記憶されたオブジェクト、又は、任意の線形バイト・ストリームのデータとともに使用され得る。加えて、説明する概念及び技法は、他のアーキテクチャ、パッチ・プロトコル、デバイスなどに適用可能である。本質的に、説明する概念及び技法は、任意のファイル又はオブジェクト同期に適用可能である。
また、いくつかの用語が本願明細書で主に使用されるが、他の用語が、均等な実施形態及び例を生じるために、互換的に使用され得る。加えて、用語は、明示的に記載されることもされないこともある代替スペリングを有することがあり、すべてのそのような用語の変形が含まれることが意図される。
本願明細書で説明する例示的な実施形態は、ファイルのコンテンツを同期させるために使用されるようにファイル間差分コンテンツ同期システムを実装するためのアプリケーション、ツール、データ構造、及び他のサポートを提供する。説明する技法の他の実施形態
は、一般に重複排除を含む他の目的のために使用され得る。以下の説明では、説明する技法の完全な理解を提供するために、データ・フォーマット及びコード・シーケンスなど、多数の具体的詳細を示す。説明する実施形態はまた、本願明細書で説明する具体的詳細のうちのいくつかなしに、又は、論理の順序に関する変更、異なる論理など、他の具体的詳細とともに実施され得る。したがって、説明する技法及び/又は機能の範囲は、任意の特定のルーチン、モジュール、構成要素などを参照して説明する態様の特定の順序、選択、又は分解によって限定されない。
図6は、ファイル間差分コンテンツ同期システムにおいて使用するためのパッチを生成するための論理の例示的なフローチャートである。図6の論理は、新しい又は修正されたファイルのためのパッチを生成するために、CDCSクライアント、たとえば、図1のsyncデーモン102によって使用され得る。ブロック601で、パッチ・データ構造が初期化され、パッチを識別するヘッダ情報が追加される。随意に、パッチ・フォーマットのバージョン、結果として生じるファイルの長さ、及び生成中のファイルのメディア・タイプなど、追加の情報もまた、ヘッダ中に含まれ得る。ブロック602〜611で、論理が、新しい又は修正されたファイルのデータ・コンテンツの各チャンクを処理するためのループを実行する。具体的には、ブロック602で、論理が、処理するべきチャンクがさらにあるかどうかを判断し、そうである場合、ブロック603で継続し、それ以外の場合、ブロック612で終了する。パッチ全体の処理の最後に、パッチが返され、たとえば、サーバへ転送される場合には、ブロック612で、パッチが返される。そうでない場合、論理は単に、パッチがすでに転送されたときに戻る。
ブロック603で、論理が、どのようなチャンキング・アルゴリズムが使用されるかに基づいて、ファイルのデータ・コンテンツの次のチャンクを取得する。以前に説明したように、一実施形態では、コンテンツ定義チャンキング(CDC)を実装するラビン・フィンガープリンティング・アルゴリズムが、ファイルのデータ・コンテンツを、どのコンテンツが変更になったかを判断するために比較され得るセグメントに分解するために、使用される。他の実施形態では、たとえば、MD5又はSHA−1ハッシュを含む、他のアルゴリズムが使用され得る。選ばれたアルゴリズムを、クライアント側のみのキャッシュをサポートするシステムにおいて実装することができ、サーバは、パッチを処理するために、キャッシュのコピーを有する必要も、チャンキング・アルゴリズムを承知している必要もない。
ブロック604で、チャンク境界アルゴリズムに従って以前に決定されたチャンクをインデックス付けするために、別の表現値、たとえば、SHA−256などの強力暗号学的ハッシュ値が計算される。ブロック605で、論理が、この値をパッチ・インデックスへの「キー」として使用して、その値(ハッシュ)によって表現されたデータ・コンテンツがすでにインデックス付けされているかどうかを判断する。そうである場合、論理が、ブロック606で継続して、生成中のパッチ中の参照において使用するために、データ・コンテンツについてのロケーション情報を取得し、そうでない場合、ブロック608で継続して、新しいインデックス付けされたレコードを編成し、生成中のパッチに直接、データ・コンテンツを記憶する。
具体的には、(ハッシュ)キーが、データ・コンテンツがパッチ・インデックス中にすでに存在することを示す場合、ブロック606で、論理が、インデックス付けされた(ハッシュ)値に関連付けられたロケーション情報からチャンク・ロケーション情報を取得する。次いで、ブロック607で、この検索されたロケーション情報が、生成中のパッチ中にパッチ参照データとして追加される。いくつかの実施形態では、生成中のパッチのためのマニフェストもまた、パッチが生成中である間に生成される。そのような場合、ブロック607とともに、論理が、パッチ中で新たに作成されたパッチ参照に対応する、マニフ
ェスト中のレコードを生成することができる。さらに、逐次的、又はストリームライン処理をサポートする実施形態では、生成中のパッチの新しいセグメントがサーバへ(直接又は間接的に)転送(たとえば、送信、通信など)される。論理が、次いで、ブロック602におけるループの先頭に戻る。
一方、(ハッシュ)キーが、データ・コンテンツがパッチ・インデックス中で発見されないことを示す場合、ブロック608で、新しい又は修正されたコンテンツ・チャンクのための(ハッシュ)キーがインデックス付けされ、ブロック609で、新しい又は修正されたコンテンツ・チャンクに関連付けられたロケーション情報が記憶される。たとえば、ファイルのためのUUID、チャンクが発見され得るファイル内の位置、及び、チャンクの長さが記憶され得る。ブロック610で、この記憶されたロケーション情報が、次いで、新たにインデックス付けされた(ハッシュ)キーに関連付けられる。一実施形態では、ブロック609,610が、ロケーション・データがパッチ・インデックスに直接記憶されるとき、同時に行われる。他の実施形態では、ロケーション情報は、個別に、たとえば、パッチ・インデックスから相互参照される別のデータ・リポジトリに記憶され得る。
ブロック611で、新しい又は修正されたコンテンツが、生成中のパッチのセグメントにパッチ・データとして記憶される。次いで、逐次的、又はストリームライン処理をサポートする実施形態では、生成中のパッチの新しいセグメントがサーバへ(直接又は間接的に)転送される。論理が、次いで、ブロック602におけるループの先頭に戻る。
図7は、ファイル間差分コンテンツ同期システムにおいて使用するためのパッチを処理するための論理の例示的なフローチャートである。図7の論理は、新しい又は修正されたファイルのための受信されたパッチを処理するために、CDCSクライアント、たとえば、図1のsyncデーモン102、又はCDCSサーバ、たとえば、syncプロセッサ121によって使用され得る。わずかな違いが、サーバによる処理、又は消費者クライアントによる処理に適用され得るが、本願明細書で説明する基本的な論理は、両方に適用可能である。
ブロック701で、マニフェストが利用可能であると仮定して、マニフェストが受信される。ブロック702で、論理が、マニフェスト・レコード中に含まれたファイルのリストを検討して、その中で参照されるファイルのすべてへのアクセスを有すると判断する。そうである場合、又は、論理が、いずれにせよパッチを処理すると判断する場合、論理がブロック704で継続し、そうでない場合、ブロック703で継続する。ブロック703で、論理が、ファイル・コンテンツ全体がアップロード/ダウンロードされる必要があると判断及び要求し、次いで、論理が714で終了する。
ブロック704で、論理が、パッチの少なくとも1部分を受信し、作成されるべきファイルの最初の部分を生成し、パッチ・ヘッダを処理する。
ブロック705乃至713は、パッチの各セグメントを処理するためのループを実施する。具体的には、ブロック705で、論理が、パッチ中に処理するべきセグメントがさらにあるかどうかを判断する。そうでない場合、論理がブロック706で継続し、さもなければブロック707で継続する。
ブロック706で、論理が、作成中のファイルを終了し、又はさもなければ閉じ、(論理がサーバによって実行される場合には)キャッシュ中のパッチを閉じ、又はさもなければ終了する。いくつかのサーバ実施形態では、(将来の消費者のために)パッチを処理中に、マニフェストが作成され、そうである場合、マニフェストが閉じられる。論理が、次いでブロック714へ進み、処理を終了する。
ブロック707で、論理が、次のパッチ・セグメントがデータ・セグメントである(データ・コンテンツを含む)かどうかを判断し、そうである場合、ブロック708で継続し、そうでない場合、ブロック709で継続する。ブロック708で、論理が、データ・コンテンツをパッチから読み出し、ここまで生成されたファイル部分の最後にデータ・コンテンツを追加し、ブロック713で継続する。
ブロック709で、論理が、次のパッチ・セグメントが参照(又はエラー)であるかどうかを判断(そうであると推定)し、ブロック710へ進む。ブロック710で、論理が、参照されるファイル中のデータの位置が特定されたかどうかを判断する。そうである場合、論理がブロック712で継続し、そうでない場合、ブロック711で継続して、エラーをハンドリングする。エラーをハンドリングすることは、たとえば、ファイルの特定の部分のためのデータを要求すること、パッチ処理をアボートすること、又は、ファイル全体を要求することさえも含み得る。次いで、論理がブロック712で継続する。
いくつかの実施形態では、ブロック710で、論理が、被参照データを検索し、検索されたデータのためのそれ自体のハッシュ値を計算し、次いで、計算されたハッシュを、データへの参照を提供したパッチ・レコードとともに記憶されたハッシュ値と比較する。このようにして、論理は、発見されたデータが、パッチによって指定されたデータに一致することを、検証することができる。そうでない場合、ブロック711に従って、エラーがハンドリングされる。
ブロック712で、論理が、引き続き、ここまで生成されたファイル部分の最後に、位置が特定された/検索されたデータを連結(追加)し、ブロック713で継続する。
ブロック713で、論理が、キャッシュ中のパッチに、処理されたパッチ・セグメントを連結(追加)し、ブロック705におけるパッチ・セグメント処理ループの先頭に戻る。(たとえば、将来の消費者のために)パッチを処理中に、マニフェストが作成される実施形態では、次いで、レコードが、ブロック709で検査されたパッチ・セグメントに含まれた参照に対応するように、マニフェストに追加される。論理が、次いで、ブロック705で次のパッチ・セグメントを処理するために、ループの先頭に戻る。
図8は、本願明細書で説明するファイル間差分コンテンツ同期システムの実施形態を実施するために使用され得る、例示的なコンピューティング・システムの例示的なブロック図である。適切に命令された1つもしくは複数の仮想もしく物理的な汎用コンピューティング・システム、又は専用コンピューティング・システムが、CDCSSを実装するために使用され得ることに留意されたい。さらに、CDCSSは、本願明細書で説明する能力を達成するために、ソフトウェア、ハードウェア、ファームウェア、又はある組合せで実装され得る。
コンピューティング・システム800は、1つ又は複数のサーバ・コンピューティング・システム及び/又はクライアント・コンピューティング・システムからなり得るものであり、分散ロケーションに広がり得る。加えて、図示の各ブロックは、特定の実施形態に適するような1つ又は複数のブロックを表現することができ、又は、他のブロックと組み合わせられてもよい。また、CDCSS810の様々なブロックは、規格(たとえば、TCP/IP)又はプロプライエタリな処理間通信機構を使用して互いに通信する、1つ又は複数のマシン上に物理的に存在し得る。
図示の実施形態では、クライアントとして、又はサーバとして使用するための、コンピュータ・システム800は、コンピュータ・メモリ(「メモリ」)801、ディスプレイ802、1つ又は複数の中央処理装置(「CPU」)803、入出力デバイス804(たとえば、キーボード、マウス、CRT又はLCDディスプレイなど)、他のコンピュータ
可読媒体805、及び、1つ又は複数のネットワーク接続806からなる。CDCSS(クライアント又はサーバ)810は、メモリ801中に存在するように示される。他の実施形態では、コンテンツのある部分、CDCSS810の構成要素のうちの一部、又は全部が、他のコンピュータ可読媒体805上に記憶され、かつ/又はそれを介して送信され得る。CDCSS810の構成要素は、好適には、1つ又は複数のCPU803上で実行し、本願明細書で説明するように、パッチの生成及び処理を管理する。他のコード又はプログラム830、及び、潜在的にデータ・リポジトリ806などの他のデータ・リポジトリもまた、メモリ801中に存在し、好適には、1つ又は複数のCPU803上で実行する。注目すべきことに、図8の構成要素のうちの1つ又は複数は、任意の特定の実装形態において存在しなくてもよい。たとえば、他のソフトウェアに埋め込まれたいくつかの実施形態は、ユーザ入力又は表示のための手段を提供しなくてもよい。
典型的な実施形態では、CDCSS(クライアント又はサーバ)810は、1つ又は複数のマニフェスト・ハンドラ811、1つ又は複数のパッチ・ハンドラ812、及び、1つ又は複数のファイル・アセンブラ813を含む。少なくともいくつかの実施形態では、パッチは、CDCSSクライアント又はサーバの外部で提供され、潜在的に、1つ又は複数のネットワーク850を介して利用可能である。他の及び/又は異なるモジュールが実装され得る。加えて、CDCSSは、CDCSクライアント810によって計算されたパッチを使用するアプリケーションもしくはクライアント・コード855、1つもしくは複数のクライアント・コンピューティング・システム860、及び/又は、1つもしくは複数のサード・パーティ・パッチ・プロバイダ865と、ネットワーク850を介して対話することができる。また、注目すべきことに、CDCSクライアント・コードをホストするコンピューティング・システムでは、パッチ・データ816は、ネットワーク850を介して他のシステムにとってアクセス可能にされ得るパッチ・インデックスを含み得る。
例示的な実施形態では、CDCSS810の構成要素/モジュールは、標準的なプログラミング技法を使用して実装される。たとえば、それらは、1つ又は複数の静的又は動的ライブラリとともに、CPU803上で実行する「ネイティブ」の実行ファイルとして実装され得る。他の実施形態では、CDCSクライアント又はCDCSサーバ810の構成要素は、仮想マシンによって処理される命令として実装され得る。当技術分野で知られている様々なプログラミング言語が、そのような例示的な実施形態を実装するために採用されてもよく、それらのプログラミング言語には、限定されないが、オブジェクト指向(たとえば、JAVA(登録商標)、C++、C#、Visual Basic.NET、Smalltalkなど)、関数型(たとえば、ML、Lisp、Schemeなど)、手続き型(たとえば、C、Pascal、Ada、Modulaなど)、スクリプト(たとえば、Perl、Ruby、Python、JAVASCRIPT(登録商標)、VBScriptなど)、及び宣言型(たとえば、SQL、Prologなど)を含む、様々なプログラミング言語パラダイムの代表的な実装形態が含まれる。
上記で説明した実施形態はまた、よく知られているか又はプロプライエタリな、同期又は非同期クライアント−サーバ・コンピューティング技法も使用し得る。また、様々な構成要素は、よりモノリシックなプログラミング技法を使用して、たとえば、シングルCPUコンピュータ・システム上で実行する実行ファイルとして実装されてもよく、又は別法として、限定されないが、各々が1つもしくは複数のCPUを有する1つもしくは複数のコンピュータ・システム上で実行する、マルチプログラミング、マルチスレッディング、クライアント−サーバ、もしくはピアツーピアを含む、当技術分野で知られている様々な構造化技法を使用して分解されてもよい。いくつかの実施形態は、同時及び非同期的に実行し、メッセージ・パッシング技法を使用して通信し得る。均等な同期実施形態もまたサポートされる。
加えて、CDCSSクライアント又はCDCSSサーバ810の一部として(たとえば、データ・リポジトリ816に)記憶されたデータへのプログラミング・インターフェースは、C、C++、C#、及びJava APIを通して、ファイル、データベース、もしくは他のデータ・リポジトリにアクセスするためのライブラリ、XMLなどのスクリプト言語を通して、又は、記憶されたデータへのアクセスを提供するウェブ・サーバ、FTPサーバ、もしくは他のタイプのサーバを通してなど、標準的な機構によって利用可能であり得る。パッチ・データ816は、コンピューティング・システム800がクライアントであるとき、パッチ・インデックスを含み、1つもしくは複数のデータベース・システム、ファイル・システム、もしくはそのような情報を記憶するための任意の他の技法、又は、分散コンピューティング技法を使用する実装形態を含む上記の任意の組合せとして、実装され得る。
また、例示的なCDCSS810は、複数の、異種でさえある、コンピュータ・システム及びネットワークからなる分散環境において実装され得る。プログラム及びデータの異なる構成及びロケーションが、本願明細書で説明する技法とともに使用するために企図される。加えて、サーバ及び/又はクライアントは、物理的又は仮想コンピューティング・システムであってもよく、同じ物理的システム上に存在してもよい。また、モジュールのうちの1つ又は複数は、負荷分散、信頼性又はセキュリティの理由などのために、それ自体が分散され、プールされ、又はさもなければグループ化されてもよい。様々な分散コンピューティング技法が、例示した実施形態の構成要素を分散的な方法で実装するために適しており、限定されないが、TCP/IPソケット、RPC、RMI、HTTP、ウェブ・サービス(XML−RPC、JAX−RPC、SOAPなど)などが含まれる。他の変形形態が可能である。また、他の機能性が、各構成要素/モジュールによって提供可能であり、又は、既存の機能性が、異なる方法で構成要素/モジュール間で分散され得るが、それでもなお、CDCSSの機能を達成することができる。
さらに、いくつかの実施形態では、CDCSS810の構成要素のうちの一部又は全部が、少なくとも部分的にファームウェア及び/又はハードウェアにおいてなど、他の方法で実装又は提供されてもよく、ファームウェア及び/又はハードウェアには、限定されないが、1つ又は複数の特定用途向け集積回路(ASIC)、標準集積回路、適切な命令を実行するコントローラが含まれ、ならびに、マイクロコントローラ及び/又は埋込みコントローラ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、複合プログラマブル論理デバイス(CPLD:complex programmable logic
device)などが含まれる。システム構成要素及び/又はデータ構造のうちの一部又は全部はまた、コンテンツとして(たとえば、実行ファイル、又は他のマシン可読ソフトウェア命令、又は構造化データとして)、コンピュータ可読媒体(たとえば、ハード・ディスク、メモリ、ネットワーク、他のコンピュータ可読媒体、又は、DVDもしくはフラッシュ・メモリ・デバイスなど、適切なドライブによって、もしくは適切な接続を介して読み取られる他のポータブル媒体品)上に記憶されて、コンピュータ可読媒体が、説明した技法のうちの少なくともいくつかを行うために、コンテンツを実行するか、又はさもなければ使用もしくは提供することが可能にされ得る。構成要素及び/又はデータ構造のうちの一部又は全部は、有形の、非一時的ストレージ媒体上に記憶され得る。システム構成要素及びデータ構造のうちの一部又は全部はまた、(たとえば、搬送波の一部として符号化されるか、又は、アナログもしくはデジタル伝搬信号の一部として含まれることによって)データ信号として、ワイヤレス・ベース及びワイヤード/ケーブル・ベースの媒体にわたることを含めて、次いで送信される、様々なコンピュータ可読伝送媒体上に記憶されてもよく、(たとえば、単一もしくは多重化アナログ信号の一部として、又は、複数の個別のデジタル・パケットもしくはフレームとしての)様々な形態を取り得る。そのようなコンピュータ・プログラム製品はまた、他の実施形態では他の形態を取り得る。したがって、本開示の実施形態は、他のコンピュータ・システム構成とともに実施され得る。
本願明細書で参照された、かつ/又は出願データ・シートにリストされた、上記の米国特許、米国特許出願公開、米国特許出願、外国特許、外国特許出願、及び非特許刊行物のすべてについては、それらの全体を本願明細書に援用する。
例示のために特定の実施形態を本願明細書で説明したが、様々な修正が本開示の趣旨及び範囲から逸脱することなく行われ得ることは、上記から諒解されよう。たとえば、本願明細書で論じたファイル同期を行うための方法及びシステムは、クライアント−サーバ・アーキテクチャ以外の他のアーキテクチャに適用可能である。また、本願明細書で論じた方法及びシステムは、異なるプロトコル、通信媒体(光、ワイヤレス、ケーブルなど)、及びデバイス(ワイヤレス・ハンドセット、電子手帳、携帯情報端末、タブレット、ポータブル電子メール・マシン、ゲーム・マシン、ページャ、GPS受信機などのナビゲーション・デバイスなど)に適用可能である。

Claims (15)

  1. クライアント・コンピューティング・システム上に存在し、かつ、前記クライアント・コンピューティング・システムの複数のファイルのデータ・コンテンツをインデックス付けする、ローカル・データ・コンテンツ・インデックスを使用して、ファイルのコンテンツを別個の及び分離したサーバ・コンピューティング・システムと同期させるための、前記クライアント・コンピューティング・システムにおいて、コンピュータによって実行するための方法において、
    前記ファイルの1つ又は複数の部分を決定するステップと、
    前記ローカル・データ・コンテンツ・インデックスへのインデックス・ルックアップを行うことによって、かつ、どのようなデータ・コンテンツが前記サーバ・コンピューティング・システム上にすでに存在するかを見いだすために前記サーバ・コンピューティング・システムに問い合わせることなしに、前記ファイルの前記決定された1つ又は複数の部分のうちのどれが、前記サーバ・コンピューティング・システム上にすでに存在すると見なされるデータ・コンテンツに対応するかを判断するステップと、
    前記ファイルの前記決定された1つ又は複数の部分に対応し、各セグメントが、データ・コンテンツ又はデータ・コンテンツへの参照のいずれかを含んでなり、前記ファイルの前記対応する部分が前記サーバ・コンピューティング・システム上にすでに存在すると見なされないデータ・コンテンツに対応すると判断されるとき、データ・コンテンツを含んでなり、かつ、前記ファイルの前記対応する部分が前記サーバ・コンピューティング・システム上にすでに存在すると見なされるデータ・コンテンツに対応すると判断されるとき、データ・コンテンツへの参照を含んでなる、1つ又は複数のセグメントからなるパッチを生成するステップと、
    前記生成されたパッチを転送し、前記サーバ・コンピューティング・システム上にすでに存在するデータ・コンテンツとともに、前記パッチから前記サーバ・コンピューティング・システム上で前記ファイルを生成させ、それによって、前記ファイルの前記データ・コンテンツ全体を転送することなしに、前記ファイルの前記コンテンツを同期させるステップと、を備える、方法。
  2. 前記生成されたパッチが、前記ファイルの前記データ・コンテンツ全体よりも少ない全データ・コンテンツを含んでなる、請求項1に記載の方法。
  3. 前記ファイルの前記1つ又は複数の部分を前記決定するステップは、
    チャンキング又はフィンガープリンティング・アルゴリズムを使用して、前記ファイルのデータ・コンテンツの1つ又は複数のチャンクを決定することからなる、請求項1又は2に記載の方法。
  4. 前記ローカル・データ・コンテンツ・インデックスが、前記クライアント・コンピューティング・システムの前記複数のファイルのためのデータ・コンテンツのチャンクのハッシュ値をインデックス付けし、前記方法は、
    前記ファイルのデータ・コンテンツの前記決定された1つ又は複数のチャンクの各々のためのハッシュ値を決定するステップと、
    前記ファイルのデータ・コンテンツの前記決定された1つ又は複数のチャンクの各々のための前記決定されたハッシュ値をルック・アップすることによって、前記ローカル・データ・コンテンツ・インデックスへの前記インデックス・ルックアップを行い、前記ファイルのデータ・コンテンツの前記決定されたチャンクが、前記クライアント・コンピューティング・システム上の別のファイル中にすでに存在するデータを参照するかどうかを判断するステップとをさらに備える、請求項3に記載の方法。
  5. 前記ファイルのデータ・コンテンツの前記チャンクが、前記クライアント・コンピューテ
    ィング・システム上の前記別のファイル中にすでに存在するデータを参照すると判断することが、前記データを前記サーバ・コンピューティング・システム上にすでに存在すると見なすために使用される、請求項4に記載の方法。
  6. データ・コンテンツへの参照を含んでなる、前記生成されたパッチの各セグメントがまた、前記参照によって参照される前記データ・コンテンツのハッシュ値をも記憶し、前記パッチの受信者が、前記データ・コンテンツへの参照を評価した結果として検索されたデータ・コンテンツのハッシュ値を計算し、前記計算されたハッシュ値を、前記セグメントに記憶された前記ハッシュ値に対して比較して、前記検索されたデータ・コンテンツの正確性を検証し得る、請求項1乃至5のいずれか1項に記載の方法。
  7. 前記パッチが、ヘッダと、その後に続く、データ・コンテンツ又はデータ・コンテンツへの参照のいずれかの1つ又は複数のセグメントとからなる、請求項1乃至6のいずれか1項に記載の方法。
  8. 前記生成されたパッチの少なくとも1つのセグメントが、前記クライアント・システムから削除されたファイルのデータ・コンテンツへの参照、及び、第1のファイルからのデータ・コンテンツへの参照のうちの少なくとも一方を含んでなり、及び、少なくとも1つのセグメントが、前記第1のファイルとは別個でありかつ分離した第2のファイルからのデータ・コンテンツへの参照を含んでなる、請求項1乃至7のいずれか1項に記載の方法。
  9. 前記生成されたパッチの前記転送を、前記パッチが生成されるときに行うこと、及び、前記生成されたパッチの各セグメントを、前記パッチが生成されるときに転送することのうちの少なくとも一方を行うことと、
    前記生成されたパッチの前記1つ又は複数のセグメント中に含まれるデータ・コンテンツのための前記参照によって参照されるすべてのファイルの指示を含んでなる、マニフェストを転送することとのうちの少なくとも一方を行う、請求項1乃至8のいずれか1項に記載の方法。
  10. 請求項1乃至9に記載の方法の少なくとも1つを行うことによって、ファイルを同期させるように、クライアント・コンピューティング・システム中のコンピュータ・プロセッサを制御するコンテンツを含んでなる、コンピュータ可読ストレージ媒体。
  11. ファイルのコンテンツを同期させるためのサーバ・コンピューティング・システム、あるいは、方法を行うことによって前記ファイルの前記コンテンツを同期させるようにサーバ中のコンピュータ・プロセッサを制御するコンテンツを備えるコンピュータ・ストレージ媒体のうちのいずれか一方において、コンピュータによって実行するための方法であって、
    請求項1乃至10に記載の方法の少なくとも1つに従って生成されるパッチであって、同期されるべき前記ファイルの1つ又は複数の部分に対応し、かつ、各セグメントがデータ・コンテンツ又はデータ・コンテンツへの参照を含んでなる、1つ又は複数のセグメントからなるパッチを、前記サーバ・コンピューティング・システムとは分離しておりかつ別個であるクライアント・コンピューティング・システムから受信するステップと、
    前記受信されたパッチの終わりが検出されるまで、前記受信されたパッチの各セグメントを処理して、新しいファイルを作成することからなり、前記処理するステップとを備え、
    前記処理するステップは、
    前記セグメントがデータ・コンテンツを含んでなるとき、前記データ・コンテンツを前記新しいファイルに追加すること、
    前記セグメントがデータ・コンテンツへの参照を含んでなるとき、前記被参照データ
    ・コンテンツの位置を特定するように試みること、及び、前記被参照データ・コンテンツの位置が特定されるとき、前記位置が特定されたデータ・コンテンツを前記新しいファイルに追加すること、及び、
    そうでない場合、前記被参照データ・コンテンツの位置が特定されないとき、前記被参照データ・コンテンツを含んでなる、前記クライアント・コンピューティング・システムからの参照ファイルのコピーを要求すること、及び、前記参照ファイルが受信されるとき、前記参照ファイル中で前記被参照データ・コンテンツの位置を特定し、前記参照ファイル中で位置が特定された前記データ・コンテンツを前記新しいファイルに追加すること、からなる、コンピュータによって実行するための方法。
  12. 前記受信されたパッチを、前記サーバ・コンピューティング・システム上のローカル・キャッシュに記憶するステップと、
    前記新しいファイルを求める要求を受信すると、前記記憶されたパッチを、別のクライアント・コンピューティング・システムに提供すること、及び
    前記記憶されたパッチが前記ローカル・キャッシュから除去された後、前記新しいファイルを求める要求が受信されるとき、前記新しいファイルの前記データ・コンテンツ全体のコピーを提供することのうちの少なくとも一方からなるステップと、をさらに備える、請求項11に記載の方法。
  13. 前記受信されたパッチが、ある期間の間に記憶され、前記期間が満了するとき、前記記憶されたパッチが前記ローカル・キャッシュから除去されることと、
    前記受信されたパッチを記憶するための前記時間期間が構成可能であることと、
    前記受信されたパッチが、アルゴリズムに従って前記ローカル・キャッシュから消去されることと、
    前記受信されたパッチを消去するための前記アルゴリズムが、最低使用頻度、最長時間未使用、又は先入れ先出しのうちの少なくとも1つであることとのうちの少なくとも1つが行われる、請求項11又は12に記載の方法。
  14. 前記新しいファイルを求める要求を、別のクライアント・コンピューティング・システムから受信するステップと、
    前記新しいファイルの前記データ・コンテンツ全体の代わりに、前記受信されたパッチを前記別のクライアント・コンピューティング・システムに提供するステップとをさらに備える、請求項11乃至13の少なくとも1項に記載の方法。
  15. 前記受信されたパッチ中に含まれるデータ・コンテンツへの任意の参照によって参照されるすべてのロケーションへの指示を含んでなる、マニフェストを受信するステップと、
    前記受信されたパッチの各セグメントを処理する前に、前記受信されたマニフェストを処理して、前記指示されたロケーションが実際に利用可能であるかどうかを判断するステップとのうちの少なくとも一方をさらに備える、請求項11乃至14のいずれか1項に記載の方法。
JP2015520728A 2013-03-04 2014-03-03 ファイル間差分コンテンツ同期 Active JP6186433B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/784,551 2013-03-04
US13/784,557 US9355116B2 (en) 2013-03-04 2013-03-04 Cross-file differential content synchronization using cached patches
US13/784,551 US9418072B2 (en) 2013-03-04 2013-03-04 Cross-file differential content synchronization
US13/784,557 2013-03-04
PCT/US2014/020023 WO2014137938A1 (en) 2013-03-04 2014-03-03 Cross-file differential content synchronization

Publications (2)

Publication Number Publication Date
JP2015528165A true JP2015528165A (ja) 2015-09-24
JP6186433B2 JP6186433B2 (ja) 2017-08-23

Family

ID=50473762

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015520728A Active JP6186433B2 (ja) 2013-03-04 2014-03-03 ファイル間差分コンテンツ同期

Country Status (4)

Country Link
EP (1) EP2965233B1 (ja)
JP (1) JP6186433B2 (ja)
AU (1) AU2014226161B2 (ja)
WO (1) WO2014137938A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328303B (zh) * 2020-09-29 2024-04-02 北京空间飞行器总体设计部 一种基于差异化算法的航天器软件在轨增量重构方法
CN114390046A (zh) * 2022-01-14 2022-04-22 深圳市瑞云科技有限公司 基于Redis数据库的异地资产文件极速传输方法及传输系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186861A1 (en) * 2003-01-17 2004-09-23 Phatak Shirish Hemant Method and system for use of storage caching with a distributed file system
JP2005044360A (ja) * 2003-07-21 2005-02-17 Microsoft Corp データのパッケージ内デルタ圧縮(intra−packetdeltacompression)のためのシステムおよび方法
WO2006001137A1 (ja) * 2004-06-24 2006-01-05 Nec Corporation データ通信システム、サーバ装置及びデータ通信方法並びにそのプログラム
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US20100306283A1 (en) * 2009-01-28 2010-12-02 Digitiliti, Inc. Information object creation for a distributed computing system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1488330B1 (en) * 2002-03-15 2014-05-07 Shinkuro, Inc. Method for forming groups
US20100318759A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Distributed rdc chunk store
US8909657B2 (en) * 2011-01-14 2014-12-09 Apple Inc. Content based file chunking

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186861A1 (en) * 2003-01-17 2004-09-23 Phatak Shirish Hemant Method and system for use of storage caching with a distributed file system
JP2006516341A (ja) * 2003-01-17 2006-06-29 タシット ネットワークス,インク. 分散ファイルシステムを伴うストレージキャッシングの使用方法およびシステム
JP2005044360A (ja) * 2003-07-21 2005-02-17 Microsoft Corp データのパッケージ内デルタ圧縮(intra−packetdeltacompression)のためのシステムおよび方法
WO2006001137A1 (ja) * 2004-06-24 2006-01-05 Nec Corporation データ通信システム、サーバ装置及びデータ通信方法並びにそのプログラム
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US20100306283A1 (en) * 2009-01-28 2010-12-02 Digitiliti, Inc. Information object creation for a distributed computing system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ATHICHA MUTHITACHAROEN, ET. AL.: "A Low-bandwidth Network File System", PROCEEDINGS OF THE EIGHTEENTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, vol. Volume 35, Issue 5, JPN7016000241, 21 October 2001 (2001-10-21), US, pages 174 - 187 *

Also Published As

Publication number Publication date
AU2014226161A1 (en) 2015-01-22
JP6186433B2 (ja) 2017-08-23
WO2014137938A1 (en) 2014-09-12
EP2965233B1 (en) 2020-01-01
AU2014226161B2 (en) 2016-05-26
EP2965233A1 (en) 2016-01-13

Similar Documents

Publication Publication Date Title
US10447780B2 (en) Cross-file differential content synchronization
US9355116B2 (en) Cross-file differential content synchronization using cached patches
US10482067B2 (en) Synchronization of shared folders and files
US20230101958A1 (en) File journal interface for synchronizing content
US10223361B2 (en) Methods and systems for restoring a data container archived at an object-based storage
JP6050343B2 (ja) 最近使用した文書のリストの自動同期
US9785646B2 (en) Data file handling in a network environment and independent file server
AU2014379431A1 (en) Content item synchronization by block
EP3340036B1 (en) Systems and methods for peer-to-peer build sharing
JP2018049653A (ja) キャッシュ管理
JP6186433B2 (ja) ファイル間差分コンテンツ同期
Eken et al. Analyzing distributed file synchronization techniques for educational data
CN115129425A (zh) 一种复制镜像的方法和装置
US20120005173A1 (en) Determining equivalence of large state repositories utilizing the composition of an injective function and a cryptographic hash function
Pham Key-value storage system synchronization in peer-to-peer environments

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161213

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170308

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170711

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170731

R150 Certificate of patent or registration of utility model

Ref document number: 6186433

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350