(57)【要約】      （修正有）【課題】ピアツーピアコンピューティング環境におけるデータ同期サービスの提供。【解決手段】選択されたデータオブジェクトが、選択されたコンピューティングデバイス上にコピーされる。各デバイス上のサービスが、変更に関してデータオブジェクトを監視する。変更が検出された場合、サービスは、変更通知をその他のデバイスに送信して、その他のデバイスがデータオブジェクトの自らのコピーを更新することができるようにする。ユーザは、データオブジェクトの最新バージョンを取得することが分かっていて、任意のデバイスからデータオブジェクトにアクセスすることができる。ユーザは大きいファイルをすべてのデバイス上に記憶する費用を被るの代わりに、いくつかのデバイス上のファイルを「ゴースト化」し、ファイル全体ではなく、メタデータだけを記憶する。ユーザは、ゴーストを介してファイルにアクセスする。【選択図】図１ｂ
2004265418.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピューティングデバイス上で前記第１のコンピューティングデバイス上の第１のデータオブジェクトに対する変更を第２のコンピューティングデバイス上の第２のデータオブジェクトに対する変更と同期させるための方法であって、
前記第１のデータオブジェクトと前記第２のデータオブジェクトの間で同期を構成するステップと、
変更に関して前記第１のデータオブジェクトを監視するステップと、
前記第１のデータオブジェクトが変更された場合、前記第１のデータオブジェクトに対する前記変更の通知を前記第２のコンピューティングデバイスに伝送するステップと、
前記第２のデータオブジェクトに対する変更の通知を聴取するステップと、
前記第２のデータオブジェクトに対する変更の通知が受信され、かつ前記受信された変更が前記第１のデータオブジェクトに対して適切である場合、前記受信された変更を前記第１のデータオブジェクトに適用するステップとを含むことを特徴とする方法。
【請求項２】
同期を構成するステップは、前記第１のコンピューティングデバイスと同期させる許可に関して前記第２のコンピューティングデバイスを調べるステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
同期を構成するステップは、前記第１のコンピューティングデバイスと前記第２のコンピューティングデバイスの間における通信のための暗号化パラメータをセットアップするステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１のデータオブジェクトと前記第２のデータオブジェクトの間で同期を構成するステップは、前記第１のデータオブジェクトと前記第２のデータオブジェクトを同一の状態にするステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記第１のデータオブジェクトと前記第２のデータオブジェクトを同一の状態にするステップは、
前記第１のデータオブジェクトのデータが前記第２のデータオブジェクトのデータより新しい場合、または前記第２のデータオブジェクトが存在しない場合、前記第１のデータオブジェクトのコピーを前記第２のコンピューティングデバイスに伝送するステップと、
前記第２のデータオブジェクトのデータが前記第１のデータオブジェクトのデータより新しい場合、または前記第１のデータオブジェクトが存在しない場合、前記第２のコンピューティングデバイスから前記第２のデータオブジェクトのコピーを受信し、前記第２のデータオブジェクトの前記受信されたコピーから前記第１のデータオブジェクトを更新するステップとを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記第１のデータオブジェクトは、第１のフォルダであり、
前記第２のデータオブジェクトは、第２のフォルダであり、
前記第１のデータオブジェクトと前記第２のデータオブジェクトを同一の状態にするステップは、
前記第１のフォルダ内に含まれる各第３のデータオブジェクトに関して、前記第３のデータオブジェクトを前記第２のフォルダ内の対応する第４のデータオブジェクトと同一の状態にするステップと、
前記第２のコンピューティングデバイスからデータオブジェクトのコピーを受信し、前記第１のフォルダ内で対応するデータオブジェクトが存在しないそれぞれの受信されたコピーに関して、前記受信されたコピーから前記第１のデータフォルダ内で新しいデータオブジェクトを生成するステップとを含むことを特徴とする請求項４に記載の方法。
【請求項７】
変更に関して前記第１のデータオブジェクトを監視するステップは、前記第１のコンピューティングデバイス上でファイルシステムに対する呼出しを代行受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
変更に関して前記第１のデータオブジェクトを監視するステップは、第１のファイルの属性が変更されたこと、前記第１のファイル内のデータが変更されたこと、前記第１のファイルが移動されたこと、および前記第１のファイルが削除されたことから成るグループから選択された変更に関して前記第１のファイルを監視するステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
変更に関して前記第１のデータオブジェクトを監視するステップは、第１のフォルダが変更されたこと、前記第１のフォルダ内で第３のデータオブジェクトが生成されたこと、前記第１のフォルダが移動されたこと、および前記第１のフォルダが削除されたことから成るグループから選択された変更に関して前記第１のフォルダを監視するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
変更に関して前記第１のフォルダ内の第３のデータオブジェクトを監視するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
変更に関して第３のデータオブジェクトを監視するステップは、前記第３のデータオブジェクトの属性が変更されたこと、前記第３のデータオブジェクト内のデータが変更されたこと、前記第３のデータオブジェクト内で第４のオブジェクトが生成されたこと、前記第３のデータオブジェクトが移動されたこと、および前記第３のデータオブジェクトが削除されたことから成るグループから選択された変更に関して前記第３のデータオブジェクトを監視するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第３のデータオブジェクトが変更された場合、前記第３のデータオブジェクトに対する前記変更の通知を前記第２のコンピューティングデバイスに伝送するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記第３のデータオブジェクトが変更された場合、前記第３のデータオブジェクトに対する変更が前記第２のコンピューティングデバイス上の変更と同期させられるべきかどうかを調べ、前記第３のデータオブジェクトに対する変更が同期させられるべき場合、前記第３のデータオブジェクトに対する前記変更の通知を前記第２のコンピューティングデバイスに伝送するステップをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１４】
前記第１のデータオブジェクトを監視するステップは、第１のゴーストを監視するステップを含み、
前記受信された変更は、前記受信された変更が、前記第２のデータオブジェクトの属性が変更されたこと、前記第２のデータオブジェクトが移動されたこと、および前記第２のデータオブジェクトが削除されたことから成るグループから選択されている場合、前記第１のゴーストに対して適切であることを特徴とする請求項１に記載の方法。
【請求項１５】
前記第１のデータオブジェクトを監視するステップは、前記第１のデータオブジェクトの変更時刻を前記第２のデータオブジェクトの変更時刻と比べるステップを含むことを特徴とする請求項１に記載の方法。
【請求項１６】
前記第２のコンピューティングデバイスに伝送するステップは、シリアル通信線、パラレル通信線、ローカルエリアネットワーク、イントラネット、モデムリンク、およびインターネットから成るグループから選択された通信媒体を介して伝送するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１７】
前記変更の通知を伝送するステップは、ＸＭＬ形式に設定された通知を伝送するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１８】
前記第１のデータオブジェクトに対する変更の通知が伝送された場合、前記伝送された変更を前記第２のデータオブジェクトに適用することに関して前記第２のコンピューティングデバイスからのステータス情報を調べるステップと、
前記第２のデータオブジェクトに対する変更の通知が受信された場合、前記受信された変更を前記第１のデータオブジェクトに適用することに関してステータス情報を前記第２のコンピューティングデバイスに提供するステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１９】
前記第１のデータオブジェクトに対する提案の変更を代行受信するステップと、
前記提案の変更が前記第２のコンピューティングデバイスに対して不測の効果をもたらす可能性がある場合、前記可能な不測の効果について前記第１のコンピューティングデバイスのユーザに警報を出すステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項２０】
前記第１のデータオブジェクトは、第１のフォルダであり、
前記第２のデータオブジェクトは、第２のフォルダであり、
前記提案の変更は、第３のデータオブジェクトを前記第１のフォルダ内から前記第１のフォルダの外部の第１の場所に移動することを含み、
ユーザに警報を出すステップは、前記提案の変更が、前記第２のコンピューティングデバイス上で前記第１のコンピューティングデバイスの前記第１の場所に対応する第２の場所に新しいデータオブジェクトを生成することなく、前記第２のフォルダ内の前記第３のデータオブジェクトに対応する第４のデータオブジェクトを削除することになるという警報を出すステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記第１のデータオブジェクトは、第１のフォルダであり、
前記第２のデータオブジェクトは、第２のフォルダであり、
前記提案の変更は、第３のデータオブジェクトを前記第１のフォルダの外部の場所から前記第１のフォルダ内に移動することを含み、
ユーザに警報を出すステップは、前記提案の変更が、前記第１のコンピューティングデバイス上の前記第１の場所に対応する前記第２のコンピューティングデバイス上の第２の場所で第４のデータオブジェクトを削除することなく、前記第２のフォルダ内で前記第３のデータオブジェクトに対応する新しいデータオブジェクトを生成することになるという警報を出すステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２２】
前記第１のデータオブジェクトに対する変更の通知を収集するステップと、
スケジュール、通知を伝送するための前記第１のコンピューティングデバイスの可用性、および通知を受信するための前記第２のコンピューティングデバイスの可用性から成るグループから選択された基準により前記収集された通知を前記第２のコンピューティングデバイスに伝送するステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項２３】
前記第２のコンピューティングデバイスとの同期を一時停止するコマンドを受信すると、前記第１のデータオブジェクトに対する変更の通知を収集し、同期を再開するコマンドが受信されるまで前記第２のコンピューティングデバイスに前記通知を伝送しないステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項２４】
前記第１のデータオブジェクトと第３のコンピューティングデバイス上の第３のデータオブジェクトの間の同期を構成するステップと、
前記第１のデータオブジェクトが変更された場合、前記第１のデータオブジェクトに対する前記変更の通知を前記第３のコンピューティングデバイスに伝送するステップと、
前記第３のデータオブジェクトに対する変更の通知を聴取するステップと、
前記第３のデータオブジェクトに対する変更の通知が受信された場合、前記受信された変更を前記第１のデータオブジェクトに適用するステップとをさらに含むことを特徴とする請求項１に記載の方法。
【請求項２５】
第１のコンピューティングデバイス上の第１のデータオブジェクトに対する変更を第２のコンピューティングデバイス上の第２のデータオブジェクトに対する変更と同期させるための方法を前記第１のコンピューティングデバイス上で行うための命令を含むコンピュータ可読媒体であって、
方法は、
前記第１のデータオブジェクトと前記第２のデータオブジェクトの間で同期を構成するステップと、
変更に関して前記第１のデータオブジェクトを監視するステップと、
前記第１のデータオブジェクトが変更された場合、前記第１のデータオブジェクトに対する前記変更の通知を前記第２のコンピューティングデバイスに伝送するステップと、
前記第２のデータオブジェクトに対する変更の通知を聴取するステップと、
前記第２のデータオブジェクトに対する変更の通知が受信され、かつ前記受信された変更が前記第１のデータオブジェクトに対して適切である場合、前記受信された変更を前記第１のデータオブジェクトに適用するステップとを含むことを特徴とする媒体。
【請求項２６】
第１のコンピューティングデバイス上で前記第１のコンピューティングデバイス上の第１のデータオブジェクトに対する変更を第２のコンピューティングデバイス上の第２のデータオブジェクトに対する変更と同期させるための方法であって、
前記第１のデータオブジェクトと前記第２のデータオブジェクトの間で同期を構成するステップと、
変更に関して前記第１のデータオブジェクトを監視するステップと、
前記第１のデータオブジェクトが変更され、かつ前記変更が前記第２のデータオブジェクトに対して適切である場合、前記第１のデータオブジェクトに対する前記変更の通知を前記第２のコンピューティングデバイスに伝送するステップと、
前記第２のデータオブジェクトに対する変更の通知を聴取するステップと、
前記第２のデータオブジェクトに対する変更の通知が受信され、かつ前記受信された変更が前記第１のデータオブジェクトに対して適切である場合、前記受信された変更を前記第１のデータオブジェクトに適用するステップとを含むことを特徴とする方法。
【請求項２７】
前記第２のデータオブジェクトは、ゴーストであり、
前記第１のデータオブジェクトに対する前記変更は、前記変更が、前記第１のデータオブジェクトの属性が変更されたこと、前記第１のデータオブジェクトが移動されたこと、および前記第１のデータオブジェクトが削除されたことから成るグループから選択されている場合、前記ゴーストに対して適切であることを特徴とする請求項２６に記載の方法。
【請求項２８】
第１のコンピューティングデバイス上の第１のデータオブジェクトに対する変更を第２のコンピューティングデバイス上の第２のデータオブジェクトに対する変更と同期させるための方法を前記第１のコンピューティングデバイス上で行うための命令を含むコンピュータ可読媒体であって、
方法は、
前記第１のデータオブジェクトと前記第２のデータオブジェクトの間で同期を構成するステップと、
変更に関して前記第１のデータオブジェクトを監視するステップと、
前記第１のデータオブジェクトが変更され、前記変更が前記第２のデータオブジェクトに対して適切である場合、前記第１のデータオブジェクトに対する前記変更の通知を前記第２のコンピューティングデバイスに伝送するステップと、
前記第２のデータオブジェクトに対する変更の通知を聴取するステップと、
前記第２のデータオブジェクトに対する変更の通知が受信され、かつ前記受信された変更が前記第１のデータオブジェクトに対して適切である場合、前記受信された変更を前記第１のデータオブジェクトに適用するステップとを含むことを特徴とする媒体。
【請求項２９】
データオブジェクト同期を構成するためのシステムであって、
同期のためのデータオブジェクトを選択すること、データオブジェクトの選択を解除すること、同期のための第２のコンピューティングデバイスを選択すること、第２のコンピューティングデバイスの選択を解除すること、第２のコンピューティングデバイスとの同期のためのスケジュールを設定すること、第２のコンピューティングデバイスとの同期を一時停止すること、第２のコンピューティングデバイスとの同期を再開すること、およびデータオブジェクトの同期ステータスを報告することから成るグループから選択されたオプションを第１のコンピューティングデバイスのユーザに提示するインターフェースと、
前記ユーザのデータオブジェクト同期選択を実施するためのデータオブジェクトシンクロナイザと、
選択された第２のコンピューティングデバイスに同期情報を通信するための通信機構とを含むことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピューティングデバイスの間でデータを共用することに関し、より詳細には、ピアコンピューティングデバイスの間で共用されるデータを同期させることに関する。
【背景技術】
【０００２】
今日の活動的な生活様式において、人々は、しばしば、複数のコンピュータを使用している。中小企業、ならびに多くの家庭さえ、敷地の全体に配置され、ローカルエリアネットワーク（ＬＡＮ）を介して互いに接続されたコンピュータを有している。ラップトップ、ならびにパーソナルデジタルアシスタントなどのより小さいコンピューティングデバイスが、一日に通常の個人が使用する可能性があるコンピュータの数を増やしている。
【０００３】
コンピューティングデバイスのこの普及は、疑いのない利点を提供する一方で、特定のデータファイルに対するアクセスを求めている個人を苛立たせる可能性がある。例えば、世帯は、利便性のために複数のコンピュータを有しているが、一部のファイルが、あるコンピュータだけからアクセス可能であり、他のファイルが、別のコンピュータだけからアクセス可能である場合、利便性が失われる。また、個人は、同一ファイルの複数のバージョンに直面した場合、すぐに混乱させられる。例えば、中小企業の従業員が、自分のデスクトップコンピュータから自分のラップトップにドキュメントをコピーする。従業員は、移動している間、ラップトップ上でドキュメントを更新する。他の従業員は、そのドキュメントの最新バージョンをどこで見付けるかを知らない。実際、数名の従業員が自分たちの作業を協調させることなくドキュメントを更新するにつれ、ドキュメントの複数の矛盾するバージョンが、その企業全体に広がる可能性がある。通常、個人は、ファイルがどこにあるかに関わらず、またその時点でどのコンピュータを自分が使用しているかに関わらず、特定のデータファイルの最新バージョンにアクセスすることを望む。
【０００４】
より大きな企業は、この問題に対処しはじめている。データファイルが、中央サーバ上に記憶される。許可されたユーザ自身のコンピューティングデバイスが、マイクロソフトの「クライアントサイドキャッシング（ＣＬＩＥＮＴ−ＳＩＥＤ  ＣＡＳＨＩＮＧ）」のようなサービスを使用することにより、中央サーバ上に存在するデータファイルに対するアクセスを要求する。セキュリティをより高くするため、企業は、重要なデータファイルのコピーをそれぞれが記憶するいくつかの中央サーバを有することが可能である。中央サーバは、互いの間で協調して、１つのサーバが保守の理由でアクセス不可能である場合でも、データファイルが常に利用可能であることを確実にする。管理の点からは、集中データストレージにより、データアクセスセキュリティを実施する仕事、大量のデータを記憶するのに十分なハードウェアを提供する仕事、およびデータを定期的にバックアップする仕事が軽減される。ユーザの視点では、集中ストレージは、ユーザが、データファイルをどこで見付けるかを常に知っていること、データファイルが基本的に常に利用可能であること、およびファイルの最新バージョンがユーザに提示されるファイルであることを意味する。
【０００５】
ただし、集中データストレージには費用がともなう。中央サーバは、ユーザ自身のコンピュータの費用に加えての費用に相当する（ｒｅｐｒｅｓｅｎｔ）。中央サーバ環境を構成し、管理することは、通常、中小企業において、または世帯主の間では、しばしば、見られない特殊な専門技術を必要とする。これらのより小型の環境における人々は、費用の考慮を理由に、または送風機の雑音を理由に、サーバが常時、稼動されていることにしばしば反対する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上に鑑みて、本発明は、中央サーバの財務上および管理上の費用を被ることなく集中データストレージの利点を提供する。ピアツーピアコンピューティング環境では、コンピューティングデバイスは、互いに通信してデータに対するアクセスを提供し、データに対する変更を同期させて、最新バージョンがユーザに提示されるようにする。
【課題を解決するための手段】
【０００７】
選択されたデータオブジェクト（ファイルまたはフォルダ）が、選択されたコンピューティングデバイス上にコピーされる。それぞれの選択されたデバイス上で実行されているデータ同期サービスが、一部の実施形態では、デバイスのファイルシステムに対する呼出しを代行受信することにより、選択されたデータオブジェクトを変更に関して監視する。変更が検出された場合、データ同期サービスは、その変更の通知をその他のデバイスに送り、その他のデバイスが、そのデータオブジェクトの自らのコピーを更新することができるようにする。したがって、データオブジェクトのコピーが、すべての選択されたデバイス上で同期しているように保たれる。ユーザは、自分がデータオブジェクトの最新バージョンを取得することを知っており、選択されたデバイスのいずれからもデータオブジェクトにアクセスすることができる。あるデバイスが一時的に利用できない場合、それでも別のデバイスから最新バージョンにアクセスすることができる。
【０００８】
選択されたデバイスが、更新通知を送受信するのに常に利用できるわけではない可能性がある。そうである場合、他のデバイスは、自らの更新通知を記憶し、そのデバイスが利用可能になるのを待つ。ユーザが自分のラップトップを自宅ＬＡＮに接続した場合など、そのデバイスがグループに再び加わった際、そのデバイスは、その他のデバイス上に記憶されているデータオブジェクトと同期していないデータオブジェクトのバージョンを保持している可能性がある。データ同期サービスは、選択されたデータオブジェクトの最新バージョンがどこに記憶されているかを自動的に判定する。次に、そのバージョンが、古いバージョンを有するデバイスに送信される。
【０００９】
音声クリップまたはビデオクリップなどの一部のファイルは、非常に大きい可能性がある。すべてのコンピューティングデバイス上にそのようなファイルを記憶する費用を負う代わりに、ユーザは、いくつかのデバイス上でそのファイルを「ゴースト化する（ｇｈｏｓｔ）」ことを選択することができる。ゴースト化デバイス（ｇｈｏｓｔｉｎｇ  ｄｅｖｉｃｅ）は、そのファイル全体ではなく、そのファイルに関するメタデータ（ファイルの名前およびバージョン日付などの）だけを記憶する。それでも、ユーザは、ゴーストを介してそのファイルにアクセスすることができる。すなわち、アクセス要求は、実際のコンテンツを保持するデバイスに送られ、次に、そのコンテンツが、あたかもローカルで記憶されているかのようにユーザに提供される。
【００１０】
特許請求の範囲が、本発明の特徴を詳細に記載しているが、本発明、ならびに本発明の目的および利点は、添付の図面と併せて受け取られるべき以下の詳細な説明からよく理解することができる。
【発明を実施するための最良の形態】
【００１１】
同様の符号が同様の要素を指している図面を参照すると、本発明が、適切なコンピューティング環境において実施されているのが示されている。以下の説明は、本発明の実施形態に基づいており、本明細書で明示的に説明しない代替の実施形態に関して方法を限定するものと受け止めてはならない。
【００１２】
以下の説明では、本発明は、特に明記しない限り、１つまたは複数のコンピューティングデバイスによって行われる作用（ａｃｔ）、ならびに動作の記号表現に関連して説明する。このため、ときとして、コンピュータによって実行されるものとして述べるそのような作用および動作には、データを構造化された形態で表わす電気信号のコンピューティングデバイスの処理ユニットによる操作が含まれる。この操作は、データを変換し、またはコンピューティングデバイスのメモリシステム内の場所でデータを保持し、これにより、当分野の技術者にはよく理解されている仕方でデバイスの動作が再構成されるか、または別の形で変更される。データが保持されるデータ構造は、データのフォーマットによって定義される特定の特性を有するメモリの物理域である。ただし、本発明を以上の文脈で説明するが、以下に説明する様々な作用および動作は、ハードウェアでも実施することが可能であることが当分野の技術者には認められるとおり、限定することを意図するものではない。
【００１３】
本発明は、ピアコンピューティングデバイス間でデータ同期サービスを提供する。図１ａは、例示的な環境１００を示している。通常、環境１００は、自宅または中小企業を表わす。環境１００には、３つのコンピューティングデバイスＡ１０２、コンピューティングデバイスＢ１０４、およびラップトップ１０６が存在する。ラップトップ１０６は、可搬であるので、環境１００を容易に離れ、後に戻ることができる。この可能性により、以下に説明するデータ同期に関するある厄介な問題がもたらされる。本発明では、以上３つのデバイス１０２、１０４、および１０６は、これらのデバイスのいずれも他のデバイスに対して制御を行使しないということで、「ピア」である。代わりに、以上のデバイスは、以下に説明するような技術を使用して、協調して共用データが同期しているように保つ。
【００１４】
図１ａの３つのピアコンピューティングデバイス１０２、１０４、および１０６は、ＬＡＮ１０８を介して互いに通信する。共用環境１００においてコンピューティングデバイス間でデータ同期情報をトランスポートするための標準の通信プロトコルが存在する。コンピューティングデバイスＢ１０４は、３つすべてのコンピューティングデバイス１０２、１０４、および１０６によって共用されるインターネット１１０に対するリンクも提供する。インターネット１１０は、本発明のデータ同期サービスが、遠隔で接続されたデバイス間でも行われることが可能であることを示すために図１ａに示している。遠隔データ同期は完全に可能であるが、一部の状況では、同期を行うのに必要とされる通信時間が増大することが、同期環境１００に遠隔デバイスを含めることをユーザに思いとどまらせる可能性がある。
【００１５】
本発明は、環境１００においてデバイス間のデータ同期を容易にするが、環境１００の外部のデバイスがデータ同期情報にアクセスすることを防止することも重要である。ＬＡＮ１０８が無線である場合、または環境１００が、インターネット１００に対する遠隔接続などの遠隔接続を含む場合、セキュリティの問題は、より差し迫ったものとなる。これらの場合、許可されていないデバイスがデータ同期情報を聴取しているかどうかを知ることは困難である。
【００１６】
図１ｂは、図１ａのデータ同期環境１００の例示的な実施形態の構造上の詳細を示している。コンピューティングデバイスＡ１０２のファイルシステム１１２内には、２つのフォルダ、Ａ１１１４およびＡ２１１６が存在する。フォルダＡ１１１４のコンテンツ全部が、コンピューティングデバイスＢ１０４のファイルシステム１１２内で対応する（ｃｏｕｎｔｅｒｐａｒｔ）フォルダＢ１１２４と同期され、ラップトップ１０６のファイルシステム１３０内で対応するフォルダＣ１１３２と同期される。同期とは、対応するフォルダＡ１１１４、Ｂ１１２４、およびＣ１１３２のいずれか１つの内部のデータオブジェクト（ファイルまたはフォルダ、あるいはデータベース内のテーブルなどのファイルの一部分でも）に対するあらゆる変更が、その他のフォルダの中で反復されることを意味する。例えば、コンピューティングデバイスＢ１０４のユーザが、ローカルのサブフォルダ１２６の１つの中で新しいファイルを生成する。新しいフォルダのコピーが、次に、コンピューティングデバイスＡ１０２上、およびラップトップ１０６上の対応するサブフォルダの中で自動的に生成される。別の例として、ラップトップ１０６のユーザが、ファイルＣ１１３６を更新し、その変更が、対応するファイルＡ１１１８およびＢ１１２８に自動的に伝播する。したがって、ユーザは、以上３つのコンピューティングデバイスのいずれかにログインし、データが最後に更新された時点でユーザがどこでログインしていたかに関わらず、同期されたデータオブジェクトの最新バージョンを常に取得することができる。
【００１７】
三叉の（ｔｈｒｅｅ−ｈｅａｄｅｄ）データ接続１３８により、３つのコンピューティングデバイス１０２、１０４、および１０６のいずれも、データ同期サービスに対して排他的な制御を行使しないことが示されている。逆に、各デバイスが、自らのローカルファイルに行われた変更を他の２つのデバイス上の対応するファイルに行われた変更と同期させる。
【００１８】
２つの異なる趣のデータ同期が存在する。「フルコピー（ｆｕｌｌ−ｃｏｐｙ）同期」と呼ばれる第１のデータ同期では、協調するそれぞれのコンピューティングデバイス上に同期されたファイルの完全なコピーが存在する。図１ｂでは、異なるコンピューティングデバイス上のファイルおよびフォルダには、異なる符号が付けられていることに留意されたい。例えば、コンピューティングデバイスＡ１０２上のファイルＡ１１１８が、ラップトップ１０６上のファイルＣ１１３６と同期される。同期により、これら２つのファイルが、いくつかの点で、あたかも１つのファイルであるかのように振舞うようになる。しかし、これらのファイルは、現実には別個のファイルであり、まるごと別々のコンピューティングデバイス上に記憶される。これらのファイルは、各コンピューティングデバイス上で記憶スペースをとり、他方のコンピューティングデバイスがアクセス可能ではない場合でも、一方のコンピューティングデバイス上でアクセスされることが可能である。もちろん、他方のデバイスがアクセス可能ではないシナリオでは、他方のデバイスが再びアクセス可能になるまで、ファイルに対する変更を同期させることは、可能ではない。（そのようなアクセス不可能である期間などの後に同期をセットアップすることについては、図３ａのステップ３０８に関連して以下に説明している。）
【００１９】
以上に説明した状況は、「ゴースト化された同期」と呼ばれる第２の趣のデータ同期には当てはまらない。コンピューティングデバイスＡ１０２上のフォルダＡ２１１６内の非常に大きいファイル１４０を考慮されたい。この非常に大きいファイル１４０は、ビデオクリップまたは大きいデータベースであることが可能である。ユーザは、ラップトップ１０６にログインした際にその非常に大きいファイル１４０にアクセスすることを所望するが、そのファイルのコピーをローカルで記憶することの並外れた費用を負うことを望まない。代わりに、「ゴースト」ファイル１４２がラップトップ１０６上で生成される。このゴースト１４２は、非常に大きいファイル１４０の完全なコンテンツを含まない。最低限では、ゴーストファイル１４２は、ホストコンピューティングデバイスＡ１０２上の非常に大きいファイル１４０に対するリファレンスだけを含む。ただし、ゴーストファイル１４２は、非常に大きいファイル１４０と同期され、したがって、ラップトップ１０６上のユーザは、ゴーストファイル１４２を介して非常に大きいファイル１４０にアクセスすることができる。ユーザは、非常に大きいファイル１４０のコンテンツを変更することを所望する場合、あたかも非常に大きいファイル１４０に対して直接に作業を行っているかのように、ラップトップ１０６上でその変更を行うことができる。すると、変更は、ゴーストファイル１４２を介してコンピューティングデバイス１０２に送られ、非常に大きいファイル１４０自体に適用される。したがって、ラップトップ１０６のユーザは、非常に大きいファイル１４０の同期されたコピーがラップトップ１０６上に存在するかのように、非常に大きいファイル１４０を読み取り、変更することができる。
【００２０】
フルコピー同期の場合とは異なり、ホストコンピューティングデバイスＡ１０２が一時的にアクセス不可能である場合、ラップトップ１０６のユーザは、ゴーストファイル１４２を介して非常に大きいファイル１４０にアクセスすることができない。このゴースト化のケースでも、二又の（ｔｗｏ−ｈｅａｄｅｄ）データ接続１４４により、各コンピューティングデバイスＡ１０２およびラップトップ１０６が、ローカルで行われた変更、非常に大きいファイル１４０またはゴーストファイル１４２のどちらかに行われた変更をそれぞれ、他方のコンピューティングデバイスと同期させることが示されている。
【００２１】
以上２つの趣のデータ同期、フルコピー同期とゴースト化同期は、いくつかの仕方で混ぜ合わせることができる。フルコピー同期のためにフォルダがセットアップされる一方で、そのフォルダ内のファイルがフルコピーから除外され、代わりにゴースト化される。フォルダが、２つのコンピューティングデバイスの間でフルコピー同期され、第３のコンピューティングデバイスに対してゴースト化されることが可能である。ゴーストは、ファイルの名前、ファイルのサムネール表示などの遠隔ファイルのいくつかの属性またはメタデータのコピーをローカルで含むことが可能である。次に、それらの属性に対する変更が、フルコピーのファイルに対する変更が同期されるのと同じやり方で同期され、他方、ファイルの大部分に対する変更は、ゴースト化によって同期される。
【００２２】
図１ａ，図１ｂのコンピューティングデバイスＡ１０２、コンピューティングデバイスＢ１０４、およびラップトップ１０６は、任意のアーキテクチャであることが可能である。図２は、本発明をサポートする例示的なコンピュータシステムを全体的に示すブロック図である。図２のコンピュータシステムは、適切な環境の一例に過ぎず、本発明の使用または機能の範囲に関して何ら限定を示唆するものではない。また、コンピューティングデバイス１０２が、図２に例示した構成要素のいずれか１つ、またはいずれかの組合せに関連する依存性、または要件を有していると解釈すべきでもない。本発明は、多数の他の汎用または特殊目的のコンピューティング環境またはコンピューティング構成で機能する。本発明で使用するのに適した周知のコンピューティングシステム、コンピューティング環境、およびコンピューティング構成の例には、パーソナルコンピュータ、サーバ、ハンドヘルドデバイスまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ならびに以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境が含まれるが、以上には限定されない。最も基本的な構成では、コンピューティングデバイス１０２は、通常、少なくとも１つの処理ユニット２００、およびメモリ２０２を含む。メモリ２０２は、揮発性（ＲＡＭなどの）、不揮発性（ＲＯＭまたはフラッシュメモリなどの）、あるいはこの２つの何らかの組合せであることが可能である。この最も基本的な構成を図２に破線２０４で示している。コンピューティングデバイス１０２は、追加の機構および機能を有することが可能である。例えば、コンピューティングデバイス１０２は、磁気ディスクおよび磁気テープ、ならびに光ディスクおよび光テープを含むが、以上には限定されない追加のストレージ（取外し可能なストレージおよび取外し不可能なストレージ）を含むことが可能である。そのような追加のストレージを図２に取外し可能なストレージ２０６および取外し不可能なストレージ２０８で示している。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するために任意の方法または技術で実装された揮発性の媒体および不揮発性の媒体、取外し可能な媒体および取外し不可能な媒体が含まれる。メモリ２０２、取外し可能なストレージ２０６、および取外し不可能なストレージ２０８はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク、他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、他の磁気記憶デバイス、ならびに所望の情報を記憶するのに使用することができ、デバイス１０２がアクセスすることができる任意の他の媒体が含まれるが、以上には限定されない。任意のそのようなコンピュータ記憶媒体が、デバイス１０２の一部であることが可能である。デバイス１０２は、デバイスが他のデバイスと通信することを可能にする通信チャネル２１０も含むことが可能である。通信チャネル２１０は、通信媒体の例である。通信媒体は、通常、搬送波などの変調されたデータ信号で、または他のトランスポート媒体でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実現し、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号内に情報を符号化するように特性の１つまたは複数が設定された、または変更された信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。本明細書で使用する「コンピュータ可読媒体」という用語には、記憶媒体と通信媒体がともに含まれる。コンピューティングデバイス１０２は、キーボード、マウス、ペン、音声入力デバイス、タブレット、タッチ入力デバイスなどの入力デバイス２１２も有することが可能である。また、ディスプレイ（タッチ入力デバイスと一体になっていることが可能な）、スピーカ、およびプリンタなどの出力デバイス２１４も含まれることが可能である。以上すべてのデバイスは、当技術分野で周知であり、本明細書で詳述する必要はない。
【００２３】
図３ａおよび３ｂは、ピアツーピアコンピューティング環境１００におけるデバイスＡ１０２、デバイスＢ１０４、およびラップトップ１０６が、互いの間でデータを同期させるために従う手続きの例を示している。この流れ図は、データ同期サービスのすべての実施形態に含められる必要はないオプションを含んでいる。
【００２４】
実際の同期が開始する前に、同期が、図３ａのステップ３００で構成される。ステップ３０２で許可が調べられる。いくつかのデバイスだけが環境１００に加わるように招かれ、それらのデバイスは、自らの身元を証明するようにさせられなければならない。環境１００内部でも、いくつかのデバイスは、他のデバイスとは異なる特権を有する。データ同期が完全に対称的になることを防止する特権をセットアップすることができる。例えば、１つのデバイス上のユーザが、ファイルに変更を入力することができないようにされるが、そのユーザのデバイスは、他のデバイス上で行われた変更を受け入れる。別の例として、セキュリティのために、フォルダの構造に影響を与える変更が、ローカルコンピューティングデバイスのユーザだけから受け入れられることが可能である。
【００２５】
ステップ３０４で、同期情報を伝送する通信に関するパラメータがセットアップされる。例えば、同期情報は、他の通信が不当に遅延されることがないように、可用な総帯域幅のあるパーセンテージに制限されることが可能である。
【００２６】
ステップ３０６はオプションである。最も単純なケースでは、同期のための厳密なスケジュールは存在しない。すなわち、同期されたデータオブジェクトに対する変更が検出された時点で、その変更の通知が、すべての対応するコンピューティングデバイスに即時に送られる。この単純な方法によって生成されるデータトラフィックの量は、複数のコンピューティングデバイスが一斉に使用中である場合、同期環境１００内で利用できる通信帯域幅を圧倒する可能性がある。これを防止するため、ローカルのコンピューティングデバイス上で変更を待ち行列に入れて、スケジュールどおりにだけ送信することができる。この種のスケジュール設定により、情報伝送速度の変動が均一にされる。さらに、送信する前に変更通知の待ち行列を検査して、ある変更により、待ち行列の中の別の変更が無効化される場合、そのより早期の通知を待ち行列から除去して、伝送される変更情報の総量を減らすことができる。簡明にするため、図３ａおよび３ｂの流れ図は、通知の待ち行列化について述べていない。
【００２７】
最後に、ステップ３０８が、継続した同期サービスを開始する前に、同期されるべきデータオブジェクトを同一の状態にする。このステップは、特に、１つのコンピューティングデバイスが同期環境１００のその他のメンバからアクセス不可能であった場合に、重要である。例えば、ユーザが、出張にラップトップ１０６を携行して、ラップトップ１０６上に記憶されている自身の仕事ファイルを更新する。出張中、ラップトップ１０６は、その他のコンピューティングデバイスＡ１０２およびコンピューティングデバイスＢ１０４と通信していない。ユーザが出かけている間、そのユーザの夫が、コンピューティングデバイスＡ１０２上で夫婦の社交カレンダ（ｓｏｃｉａｌ  ｃａｌｅｎｄｅｒ）を更新する。ユーザは、戻ってくると、自分のラップトップ１０６をデータ同期環境１００に再接続する。ラップトップ１０６上のユーザの仕事ファイルは、その他のコンピューティングデバイス上の対応するファイルよりも新しいため、ステップ３０８で、その対応するファイルが、ラップトップ１０６のファイルから更新される。同様に、ラップトップ１０６上の社交カレンダのコピーも、コンピューティングデバイスＡ１０２から更新される。ステップ３０８は、コンピューティングデバイス全体がアクセス可能になるには至らない場合でも、呼び出されることが可能である。例えば、ユーザが、ラップトップ１０６を携行する代わりに、単にコンピューティングデバイスの１つから取外し可能なディスクを持っていくことを決める。ディスクが戻され、再びデータ同期環境１００の一部になった際、ステップ３０８により、ディスク上のデータオブジェクトが、環境１００のその他の部分と同期される。ステップ３０８が完了した時点で、環境１００におけるすべてのアクセス可能なデバイス上の同期されたデータオブジェクトが最新になっている。
【００２８】
ステップ３０８は、図３ａおよび３ｂに描いた実施形態において非常に役立つ。その例示的なサービスは、変更が見られた際にはいつでもトリガされる（以下に説明する図３ａのステップ３１２、および図３ｂのステップ３２０参照）。したがって、前述した移動中のラップトップ１０６の例を使用すると、ステップ３０８なしでは、同期されていない社交カレンダは、ラップトップ１０６が環境１００に再び加わった際に自動的に同期するようにされない。代わりに、その社交カレンダは、ラップトップ１０６が環境１００の一部であるときに、ユーザが社交カレンダにさらなる変更を行った際に、また変更を行った場合にだけ同期される。
【００２９】
ただし、他の実施形態では、ステップ３０８の作業は、継続したデータ同期サービスから分離されない。一部の実施形態は、同期されたデータオブジェクトの最新の変更の時刻を監視する。その時刻が、対応するデータオブジェクトの最新の変更時刻から大幅に異なる場合、より新しいバージョンにより、古いバージョンが置き換えられなければならない。この実施形態では、前述した例を使用すると、ラップトップ１０６の仕事ファイルと、コンピューティングデバイスＡ１０２上およびコンピューティングデバイスＢ１０４上の対応するファイルの間における不一致、ならびにコンピューティングデバイスＡ１０２の社交カレンダとラップトップ１０６上の社交カレンダの間における不一致が、通常の事の成り行きで気付かれる。特別なステップ３０８は必要ない。この代替の実施形態を理解すること、または実施することは、図３ａおよび３ｂの変更によってトリガされる実施形態の場合よりも決して難しいことではない。ただし、複数の代替の実施形態を混ぜ合わせることによって混乱の可能性が高まるのを避けるため、以下の説明は、変更によってトリガされる実施形態を中心に扱う。
【００３０】
構成が完了すると、継続したデータ同期サービスは、次の２つの主な部分から構成される。すなわち、第１に、ローカルの変更を捕捉し、変更を遠隔デバイスに送ること、第２に、遠隔の変更の通知を受信し、その変更をローカルで適用することである。例示のため、図３ａおよび３ｂは、以上２つの部分が、１回の処理ループ内で順次に行われるのを示しているが、多くの他の実施形態が可能である。例えば、各部分が、別個のプロセスであること、または１つのプロセスの中のスレッドであることが可能である。また、各部分は、常時、実行されること、イベントトリガ時に実行されること、明示的なユーザ呼出し時に実行されること、またはタイマから周期的に行われることも可能である。以上の代替の実施形態のすべてをセットアップするのに使用される方法は、当技術分野で周知であり、さらに説明することはしない。
【００３１】
ステップ３１２が、同期のために構成されているデータオブジェクトであるローカルのデータオブジェクトの変更を探すことにより、継続したデータ同期サービスの第１の主な部分を開始する。変更が見られた場合、その変更の通知が、図３ｂのステップ３１４で対応するコンピューティングデバイスに送られる。一部の実施形態では、コンピューティングデバイスの１つが、「変更通知クリアリングハウス（ｃｌｅａｒｉｎｇ  ｈｏｕｓｅ）」としてセットアップされる。その他のデバイスは、自らの変更をクリアリングハウスに送るだけであり、クリアリングハウスにより、通知がすべての他のデバイスに転送されることが確実にされる。前述した着想（ステップ３０６に関連する）の変更形態では、クリアリングハウスが、受信された変更通知を比較し、同期されたデータオブジェクトの最終状態に対して全く効果を有さない変更通知を選んで除くことが可能である。クリアリングハウスにより、通信がより効率的になることが可能であるが、クリアリングハウスは、データ同期環境１００のマスタにはならないことに留意されたい。データ同期は、ピアツーピアプロセスであることに変わりない。
【００３２】
変更通知自体、いくつかの形態をとることが可能である。小さいファイルに関して完全に十分である変更通知の単純な実施形態は、ファイルの識別子、および変更されたファイルのコンテンツ全部を含む。より大きいファイルに関しては、変更通知により、単に最終結果だけではなく、ファイルにどのように変更が行われるべきかが特定されるより高度なクリアリングハウスシステムを使用することができる。
【００３３】
一部の実施形態では、最低限のゴーストファイルは、削除された場合、移動された場合、または名前が変更された場合にだけ変更を生じさせる。他のあらゆる変更は、ユーザがゴーストファイルにローカルでアクセスすることによって生じるにしても、遠隔のホストファイル上で生じる。
【００３４】
ステップ３１６により、ユーザ、またはデータ同期サービス自体が、伝送された変更のステータスを調べることが可能になる。ステータス情報は、鈍い応答の問題をデバッグする際に、また同期パラメータをリセットするために役立つ可能性がある。ユーザがコンピューティングデバイスをシャットダウンさせること、またはそれ以外でコンピューティングデバイスをデータ同期環境１００から取り去ることを選択した場合、ステータス情報を検査し、同期が完了するまでシャットダウンを一時停止させることができる。
【００３５】
一部の変更は、警報をトリガする可能性がある。例として、図１ｂに描いたファイルシステムレイアウトを考慮されたい。コンピューティングデバイスＡ１０２が、ファイルＡ１１１８をフォルダＡ１１１４からフォルダＡ２１１６に移動するものと想定する。他の２つのコンピューティングデバイスとのフォルダＡ２１１６の同期が全くセットアップされていないため（フォルダＡ２１１６内の非常に大きいファイル１４０は、ラップトップ１０６上のゴーストファイル１４２と同期されているが、これは、フォルダＡ２自体を同期させることとは異なる）、データ同期サービスには、この移動はファイルＡ１１１８の削除に見える。変更通知が送信された場合、Ａ１の対応するファイル、コンピューティングデバイスＢ１０４上のファイルＢ１１２８、およびラップトップ１０６上のファイルＣ１１３６の削除がもたらされる。これは、ユーザが意図していたことではない可能性があり、したがって、移動が完了する前に、コンピューティングデバイスＡ１０２上のユーザに警報が送られ、以上の可能な不測の結果をユーザに知らせ、それが意図されていることであるかどうかを尋ねる。
【００３６】
ステップ３１８ないし３２４は、継続したデータ同期サービスの第２の主な部分を表わしている。遠隔の同期されたデータオブジェクトに対する変更の通知が、ステップ３１８および３２０で受信される。ステップ３２２で、その変更が適切である場合、遠隔データオブジェクトのローカルの対応物にその変更が適用される。この最後の条件には、いくつかの理由が存在する。例えば、遠隔デバイスのユーザが、データオブジェクトに対して読取り専用アクセスを有し、したがって、変更は無効であり、適用されるべきではない。別の例として、ローカルのデータオブジェクトが遠隔の変更されたデータオブジェクトのゴーストである場合、多くの可能な変更が適用されるべきではない。変更がゴースト化されたファイルのコンテンツに対するものであったとすると、その変更をローカルで適用することにより、遠隔のホストファイルのコンテンツに対する別の変更が実際に生じさせられることになる。その変更が、遠隔ホスト上で認識されることが可能であり、通知が、ゴースト化デバイスに再び送信されることになる。結果は、よくても、無用なトラフィックであり、場合により、変更通知の永久ループである。ただし、通常のフルコピーのシナリオでは、ほとんどの変更は適切であり、受信されたとおり適用される。
【００３７】
受信された変更のステータスが、ステップ３１６のステータス検査の対応物として作用するステップ３２４で送られる。
【００３８】
複数のユーザが、変更のためにデータオブジェクトに同時にアクセスすることができる場合、そのユーザが、矛盾する更新を行う可能性がある。１つの解決策は、単に、このシナリオが生じるのを許さないことである。一度に１名のユーザだけが、データオブジェクトに書込みアクセスを有することを許すための周知の技術が存在する。その技術は、一度に１名のユーザだけが、対応する１組の同期されたデータオブジェクトのいずれか１つに書込みアクセスを有することを許すように容易に変更される。他の解決策も存在する。ファイルに関して、最後の書き手の変更だけが、すべての対応するデータオブジェクトに対して実施され、あるいは、矛盾が検出された場合、その変更が一時中止状態に（ｉｎ  ａｂｅｙａｎｃｅ）に保たれ、いずれの変更が実施されるべきかがユーザに尋ねられる。２つのフォルダが競合する名前で生成されている場合、一方が要求されたとおりに生成され、他方に固有サフィックスが与えられることが可能である。ほとんどのケースでは、ユーザが矛盾を解決することができるように、矛盾がユーザに知らされる。
【００３９】
図４は、図３ａおよび３ｂに関連して前述したデータ同期サービスの実施形態をサポートする例示的なシステムを示している。図４で名前の付いた機能のいくつかは、通常のオペレーティングシステムによって一般的に提供されるサービスを表わすことを意図している。特定の名称は重要ではなく、本発明は、いずれの特定のオペレーティングシステムにも限定されない。
【００４０】
コンピューティングデバイス１０２のユーザモードにおいて、１つまたは複数のアプリケーションプログラム４００が実行されている。ユーザの指示の下で、これらのアプリケーションプログラム４００が、同期されたデータオブジェクトを変更する。変更は、ファイル名変更を実施する、または新しいフォルダを生成するファイルシステムマネージャなどのオペレーティングシステムユーティリティから来ることも可能である。簡明にするため、それらのユーティリティは図示していない。データ同期サービス４０２は、アプリケーションプログラム４００に対して動作するのと同じ仕方でユーティリティに対しても動作する。
【００４１】
変更がフルコピーの同期されたデータオブジェクトに向けられている場合、その変更は、ローカルデータオブジェクトに対して実施される。これが、アプリケーションプログラム４００と、入力／出力マネージャ４０８と、ファイルドライバ４１０と、ローカルストレージドライバ４１２と、ファイルシステムＡ１１２と、そして最後にファイルシステムＡ１１２内の目標データオブジェクトとを結ぶデータフローによって示されている。データフロー４０６を介して、データ同期サービス４０２が変更に気付く。サービス４０２は、適宜、変更されたデータオブジェクトに対応するデータオブジェクトをホストするコンピューティングデバイスに送る変更通知を生成する。データ同期サービス４０２は、入力／出力マネージャ４０８、ファイルシステムドライバ４１０、および通信チャネル２１０などのオペレーティングシステムの機構を使用してメッセージを送信する。図４では、通信チャネル２１０が、遠隔デバイスとの通信のためにインターネット１１０に接続しているのが示されている。図１ａに描いたシナリオでは、通信チャネル２１０は、コンピューティングデバイスＢ１０４およびラップトップ１０６と通信するためにＬＡＮ１０８にも接続している。
【００４２】
ローカルの同期されたデータオブジェクトがゴーストファイルである場合、アプリケーションプログラム４００を起点とする多くの変更は、入力／出力マネージャ４０８を経由するデータフローを辿って、例えば、ファイルシステムＡ１１２に行くことがない。代わりに、それらの変更は、データ同期サービス４０２へのデータフロー４０６をだけを辿り、通信チャネル２１０から送出される。
【００４３】
遠隔デバイスから変更通知を受信するデータ同期サービス４０２の反対の方向も、同じ要素を使用する。変更通知は、通信チャネル２１０を介して受信され、データ同期サービス４０２まで転送される。その変更を実施することが適切であるとサービス４０２が判定した場合、変更は、アプリケーションプログラム４００によって使用されるのと同じデータフローを辿る。すなわち、入力／出力マネージャ４０８を経由してファイルシステムドライバ４１０に行き、次にローカルストレージドライバ４１２に行き、最後にファイルシステムＡ１１２および目標データオブジェクトに行く。
【００４４】
図３ａのステップ３０８に関連して前述したのは、変更時にトリガされないデータ同期サービス４０２の実施形態である。代わりに、この実施形態は、同期されたデータオブジェクトの変更時刻を監視する。この場合、データフロー４０６は必要なく、データ同期サービス４０２は、タイマ、または他のイベントによって呼び出される。サービス４０２は、呼び出されると、コンピューティングデバイスＡ１０２上の同期されたデータオブジェクトの変更時刻をデータ同期環境１００内の他のコンピューティングデバイス上の対応するデータオブジェクトの時刻と比較し、前述したとおり、図示したオペレーティングシステムユーティリティを使用して適切な処置を行う。
【００４５】
図５ａおよび５ｂの流れ図は、データ同期を開始するための例示的な方法を示している。コンピューティングデバイスＡ１０２上のユーザが、コンピューティングデバイスＢ１０４を使用して自分のローカルフォルダＡ２１１６の同期を開始することを所望する。図５ａのステップ５００で、ＡＰＩ（アプリケーションプログラムインターフェース）ＩＦｉｌｅＲｅｐｌｉｃａｔｉｏｎＭａｎａｇｅｒ−＞ＦｉｎｄＲｅｐｌｉｃａＢｙＰａｔｈ（フォルダＡ２のパス名，．．．）により、フォルダＡ２１１６が既に同期されているかどうかが調べられる。既に同期されている場合、ＡＰＩは、同期を表わすセットに対するポインタを戻す。この例では、フォルダＡ２１１６は、まだ同期されていないものと想定する。
【００４６】
ステップ５０２のＡＰＩ  ＩＦｉｌｅＲｅｐｌｉｃａｔｉｏｎＭａｎａｇｅｒ−＞ＣｒｅａｔｅＲｅｐｌｉｃａＳｅｔ（「マイピクチャ（Ｍｙ  Ｐｉｃｔｕｒｅｓ）」，．．．）が、同期セットオブジェクトを生成する。このオブジェクトをコンピューティングデバイスＡ１０２上で使用してフォルダＡ２１１６の同期を管理する。同期セットオブジェクトには、固有識別子（ＧＵＩＤ）と、ＧＵＩＤよりもユーザフレンドリな名前、すなわち、「マイピクチャ」がともに割り当てられる。図３ａのステップ３０４および３０６に関連して前述したような同期パラメータが、デフォルトに設定される。ＡＰＩは、後続のステップで使用されるＩＦｉｌｅＲｅｐｌｉｃａＳｅｔインターフェースに対するポインタを戻す。
【００４７】
ステップ５０４で、ＡＰＩ  ＩＦｉｌｅＲｅｐｌｉｃａＳｅｔ−＞ＡｄｄＭｅｍｂｅｒ（コンピューティングデバイスＡ１０２，．．．）が呼び出されて、コンピューティングデバイスＡ１０２が、「マイピクチャ」同期セット、および対応するフォルダを保持するデバイスのセットに追加される。いくつかの検査が最初に行われる。すなわち、ユーザは同期をセットアップすることを許可されているか、フォルダＡ２１１６は存在するか、ユーザは、フォルダＡ２１１６に対して必要な読取り許可および書込み許可を有するか、「マイピクチャ」同期セットは、既存の同期セットと矛盾するか、同期をサポートするのに十分なディスクスペースが利用可能であるかの検査が行われる。以上の検査のすべてに合格した場合、ＡＰＩは、同期サービス４０２によって内部で使用される（変更通知のデバッグを行うためや変更通知を記憶するためなどに）フォルダをセットアップし、ＦｉｌｅＲｅｐｌｉｃａＭｅｍｂｅｒを初期設定し、データ同期サービス４０２を初期設定する（サービス４０２が、別の同期セットのために既に実行されているのでない限り）。
【００４８】
次に、ステップ５０６で、ＡＰＩ  ＩＦｉｌｅＲｅｐｌｉｃａＳｅｔ−＞ＡｄｄＭｅｍｂｅｒ（コンピューティングデバイスＢ１０４，．．．）が呼び出される。これにより、コンピューティングデバイスＢ１０４上でステップ５０８が開始され、このステップは、そのデバイス上でデータ同期サービス４０２を初期設定することから始まる（サービス４０２が既に実行されていない限り）。ＡＰＩは、コンピューティングデバイスＢ１０４にクエリを行い（場合により、遠隔手続き呼出しを使用することにより）、許可について調べ、コンピューティングデバイスＢ１０４上のフォルダＡ２１１６の対応物が既に同期されているかどうかを確かめる。許可は、コンピューティングデバイスＡ１０２のユーザを詐称する（ｉｍｐｅｒｓｏｎａｔｅ）ことにより、ユーザが、コンピューティングデバイスＢ１０４上で適切な許可を有するかどうかを確かめることによって調べられる。すべての検査に合格した場合、別のＦｉｌｅＲｅｐｌｉｃａＭｅｍｂｅｒオブジェクトが初期設定される。
【００４９】
ステップ５０６および５０８は、フォルダＡ２１１６の同期された共有に加わるあらゆる他のコンピューティングデバイスに対して繰り返される。このプロセスが１つのデバイス上で失敗した場合、コンピューティングデバイスＡ１０２上の初期設定プロセスは、ステップ５１０で、ＡＰＩ  ＩＦｉｌｅＲｅｐｌｉｃａＳｅｔ−＞ＲｅｍｏｖｅＭｅｍｂｅｒ（ＭｅｍｂｅｒＧＵＩＤ，．．．）を呼び出して、同期セットに既に成功裡に入れられているあらゆる遠隔デバイスを除去することにより、プロセス全体を中途終了させることを選択することができる。
【００５０】
ステップ５１２で、ＡＰＩ  ＩＦｉｌｅＲｅｐｌｉｃａＳｅｔ−＞ＰｕｂｌｉｓｈＣｏｎｆｉｇｕｒａｔｉｏｎ（．．．）が、「マイピクチャ」の同期されたコピーをホストするデバイスのすべてに構成情報を送る。ステップ５１４で受信されるこの情報は、コンピューティングデバイスＡ１０２のユーザを再び詐称することによって記憶される。
【００５１】
最後に、ステップ５１６で、「マイピクチャ」に対する変更が同期される。図３ａおよび３ｂが、ステップ５１６の一実施形態の詳細を提示している。
【００５２】
図５ａおよび５ｂの流れ図は、データ同期を初期設定ための内部動作を提示している。図６は、この初期設定をセットアップするためにユーザが呼び出す外部インターフェースを提示している。例示的なスクリーンショット６００は、ここで「ｆｏｏ」と呼ばれるローカルコンピューティングデバイス上のフォルダのプロパティを構成するためのタブを有する。このフォルダを他のデバイス上の対応するフォルダと同期させるために、選択されたタブが使用される。ユーザが、このフォルダを同期させるラジオボタンを選択された際、図５ａのステップ５００ないし５０４（または等価のステップ）が呼び出されることが可能である。対応するデバイスのリスト６０２が示され、ユーザは、このリストにデバイスを追加すること（図５ａのステップ５０６に対応する）、またはデバイスを除去すること（ステップ５１０）ができる。
【００５３】
本発明の原理を適用することができる多くの可能な実施形態に鑑みて、図面に関連して本明細書で説明した実施形態は、例示することだけを意図し、本発明の範囲を限定するものと受け取られるべきでないことを認識されたい。例えば、本発明の趣旨を逸脱することなく、例示した実施形態の構成および詳細を変更できることが、当分野の技術者には認められよう。本発明は、ソフトウェアモジュール、またはソフトウェア構成要素に関して説明したが、これらは、ハードウェア構成要素によって等価に置き換えることが可能であることが、当分野の技術者には認められよう。したがって、本明細書で説明する本発明は、特許請求の範囲の範囲に含まれる可能性があるすべてのそのような実施形態、および等価形態を企図している。
【図面の簡単な説明】
【００５４】
【図１ａ】ＬＡＮを介してデータを共用する３つのピアコンピューティングデバイスを示すブロック図である。
【図１ｂ】図１ａのコンピューティングデバイス間で共用される同期されたデータオブジェクトを示すブロック図である。
【図２】本発明をサポートする例示的なコンピュータシステムを全体的に示す概略図である。
【図３ａ】本発明によるデータ同期サービスのための例示的な方法を示す流れ図である。
【図３ｂ】本発明によるデータ同期サービスのための例示的な方法を示す流れ図である。
【図４】本発明によるデータ同期サービスを提供する例示的なシステムを示す概略図である。
【図５ａ】２つのコンピューティングデバイス間で同期を構成し、開始するための例示的な方法を示す流れ図である。
【図５ｂ】２つのコンピューティングデバイス間で同期を構成し、開始するための例示的な方法を示す流れ図である。
【図６】データ同期サービスを構成するための例示的なユーザインターフェースを示すスクリーンショットである。
【符号の説明】
【００５５】
１００  コンピューティング環境
１０２、１０４、１０６  コンピューティングデバイス
１１２  ファイルシステム
１１４、１１６、１２４、１３２  フォルダ
１１８、１２８、１３６、１４０  ファイル
１２０、１２６、１３４  サブフォルダ
１２２、１３０  ファイルシステム
１４２  ゴーストファイル
【図１ａ】
2004265418.tif 000003
【図１ｂ】
2004265418.tif 000004
【図２】
2004265418.tif 000005
【図３ａ】
2004265418.tif 000006
【図３ｂ】
2004265418.tif 000007
【図４】
2004265418.tif 000008
【図５ａ】
2004265418.tif 000009
【図５ｂ】
2004265418.tif 000010
【図６】
2004265418.tif 000011