(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続される複数の計算装置にわたってユーザのデスクトップイメージを同期化するためのサーバ計算機システムにおけるコンピュータ実装方法であって、
１人のユーザの複数の異なる計算装置がサーバによって格納および保持される単一の統合仮想デスクトップ（ＣＶＤ）データオブジェクトとグループ内で関連付けられるＮ対１マッピングを作成して格納することであって、前記ＣＶＤデータオブジェクトは、ユーザファイル、ユーザ設定、アプリケーションソフトウェア、オペレーティングシステムおよびハードウェア依存性のソフトウェアを含む複数の層を定義する、前記Ｎ対１マッピングを作成して格納すること、
前記複数の計算装置の各々に、前記ＣＶＤデータオブジェクトの前記１つまたは複数の層を複製して、前記複数の異なる計算装置の各々において前記ＣＶＤデータオブジェクトの複製されたコピーを生成すること、
現在ユーザにより操作されている計算装置である、マスタデバイスとして指定された前記複数の計算装置のうちの１つから前記ＣＶＤデータオブジェクトの前記１つまたは複数の層に対する更新を前記サーバで受信し、前記グループ内の残りの計算装置の各々において前記ＣＶＤデータオブジェクトの複製されたコピーを更新するために前記受信した更新を前記サーバから前記グループ内の残りの計算装置に送信することによって、前記グループ内の前記複数の計算装置のすべての間で前記ユーザのデスクトップイメージの同期化を保持することを備える、方法。
【請求項２】
前記グループ内の残りの計算装置は、非アクティブデバイスとして指定され、前記サーバ上に格納された前記ＣＶＤデータオブジェクトの前記１つまたは複数の層の更新を行うことは許可されない、請求項１に記載の方法。
【請求項３】
前記複数の計算装置の各々に、前記ＣＶＤデータオブジェクトの前記１つまたは複数の層を複製することは、
前記複数の計算装置のうちの少なくとも１つのデバイスに対し、
オペレーティングシステムおよび基盤ソフトウェアを含む基本イメージをコピーすること、
前記少なくとも１つのデバイスのデバイスタイプに基づいて、前記少なくとも１つのデバイスにドライバのライブラリの一部分をコピーさせること、
ユーザデータ、ユーザプロファイル、およびユーザがインストールしたアプリケーションのうちの少なくとも１つを含むユーザコンテンツをコピーすることをさらに備える、請求項１または２に記載の方法。
【請求項４】
前記基本イメージは、前記サーバ上に格納される前記ＣＶＤデータオブジェクトの前記基本イメージの層の厳密なレプリカではないこと、および前記少なくとも１つのデバイスのハードウェアの対象となることのうちの少なくとも一方である、請求項３に記載の方法。
【請求項５】
前記複数の計算装置の各々に、前記ＣＶＤデータオブジェクトの前記１つまたは複数の層を複製することは、前記複数の計算装置の各々のマシン識別子設定の上書きを避ける、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記複数の計算装置の各々に、前記ＣＶＤデータオブジェクトの前記１つまたは複数の層を複製することは、
前記複数の計算装置のうちの少なくとも１つのデバイスに対し、
前記少なくとも１つのデバイスに、サーバが提供するアプリケーションをコピーすること、
ユーザデータ、ユーザプロファイル、およびユーザがインストールしたアプリケーションのうちの少なくとも１つを含むユーザコンテンツをコピーすることをさらに含み、
前記コピーは、前記少なくとも１つのデバイス上で既にインスタンス化されているオペ
レーティングシステムおよび基盤ソフトウェアを含む基本イメージを上書きしない、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
既にインスタンス化されている前記基本イメージは、前記少なくとも１つのデバイスを対象とするオペレーティングシステムおよび基盤ソフトウェアを含む、請求項６に記載の方法。
【請求項８】
前記複数の計算装置の各々に、前記ＣＶＤデータオブジェクトの前記１つまたは複数の層を複製すること、
前記複数の計算装置のうちの少なくとも１つのデバイスに対し、
ユーザデータ、ユーザプロファイル、およびユーザがインストールしたアプリケーションのうちの少なくとも１つを含むユーザコンテンツをコピーすることをさらに備え、
前記コピーは、前記少なくとも１つのデバイス上で既にインスタンス化されているアプリケーションならびにオペレーティングシステムおよび基盤ソフトウェアを含む基本イメージを上書きしない、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
前記グループ内の前記複数の計算装置のすべての間で前記ユーザのデスクトップイメージの同期化を保持することは、
前記ＣＶＤデータオブジェクトのユーザコンテンツ層に対する受信した更新を、前記マスタデバイスとして指定されていない前記グループ内の少なくとも１つの計算装置の前記ＣＶＤデータオブジェクトの複製されたコピーに送信すること、および
前記ＣＶＤデータオブジェクトのユーザコンテンツ層およびサーバが提供するアプリケーション層に対する受信した更新を、前記マスタデバイスとして指定されていない前記グループ内の少なくとも１つの計算装置の前記ＣＶＤデータオブジェクトの複製されたコピーに送信することのうちの少なくとも一方をさらに含む、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記マスタデバイスとして指定された前記計算装置から前記ＣＶＤデータオブジェクトのユーザコンテンツ層に対する更新を受信すると同時に、前記マスタデバイスとして指定されていない前記グループ内の前記計算装置から前記ＣＶＤデータオブジェクトの前記ユーザコンテンツ層に対する更新を受信することをさらに備える、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
前記ＣＶＤデータオブジェクトの前記１つまたは複数の層に対する前記受信した更新を前記グループ内の残りの計算装置の前記ＣＶＤデータオブジェクトの複製されたコピーにプッシュすることは、
前記グループ内の残りの計算装置でユーザファイルのライブ同期化を実行することをさらに含む、請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
前記ＣＶＤデータオブジェクトの前記１つまたは複数の層に対する前記受信した更新を前記グループ内の残りの計算装置の前記ＣＶＤデータオブジェクトの複製されたコピーにプッシュすることは、
前記グループ内の残りの計算装置で、ユーザ設定、オペレーティングシステム更新、およびアプリケーションのうちの少なくとも１つの遅延同期化を実行することをさらに含む、請求項１〜１１のいずれか一項に記載の方法。
【請求項１３】
前記複数の計算装置のうちの少なくとも１つは、仮想マシンであり、
前記複数の計算装置のうちの別のデバイスは、物理的な計算装置である、請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
非一時的なコンピュータ可読媒体であって、
請求項１〜１３のいずれか１項に記載の方法のうちの１つを実行することによって、ネットワークを介して接続される複数の計算装置にわたってユーザのデスクトップイメージを同期化するためのコンテンツを含むとともに、サーバ計算機システムに格納される非一時的なコンピュータ可読媒体。
【請求項１５】
前記複数の計算装置は、パーソナルコンピュータワークステーション、ラップトップ、モバイルデバイス、および仮想マシンのセットから少なくとも２つの異なるデバイスを含む、請求項１４に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デスクトップイメージを提供および同期化するための方法、技術およびシステムに関し、具体的には、複数の異種である可能性があるデバイスにわたってデスクトップイメージを提供および同期化するための方法、技術およびシステムに関する。
【背景技術】
【０００２】
新しい計算装置（中でも注目すべきは、タブレットコンピュータ）の人気の高まりにより、これらのデバイスを使用した、あらゆる場所からの、タブレットのユーザによる、彼／彼女の企業のコンピューティング環境へのアクセス（アプリケーション、コンテンツおよびユーザプロファイルへのアクセスを含む）に対する需要が生み出された。この要件と関連する課題はいくつかある。
【０００３】
ａ．今日のタブレットコンピュータは、圧倒的に、非ウィンドウズ（Ｗｉｎｄｏｗｓ）オペレーティングシステムを実行しているが、大部分の企業のアプリケーションは、依然として、ウィンドウズ（登録商標）（Ｗｉｎｄｏｗｓ）ベースであり、特に、パーソナルコンピュータ（「ＰＣ」）上で実行するクライアントアプリケーションである。
【０００４】
ｂ．タブレットコンピュータは、大部分が、「書き込み」能力が制限された「読み取り」デバイスとして設計される。これは、多くの企業従業員が、コンテンツを生成するための従来のウィンドウズ（Ｗｉｎｄｏｗｓ）ベースのＰＣのみならず新しいタブレットデバイス、スマートフォンおよび同様のものを含む、複数のデバイスを使用して作業できる必要があることを意味する。
【０００５】
ｃ．これらのタブレットデバイスは、通常、企業のＩＴ部門によって制御されず、企業のアンチウイルスソフトウェア、データ漏洩保護ソフトウェアおよび何らかのセキュリティ対策を提供する他のソフトウェアを実行しないため、セキュリティハザードを提示する。
【０００６】
企業環境へのタブレットコンピュータアクセスを可能にする１つの潜在的な解決法は、ユーザが「リモートデスクトッププロトコル」プログラムを介してユーザのパーソナルＰＣにタブレットを直接接続すると、（アプリケーションおよび企業データへのアクセスを含む）企業環境に接続されるようにすることができる、既存の多くのプログラムのうちの１つを使用することである。この「連鎖」モデル（chained model）は、常にオン状態であり、企業ネットワークにオンライン接続されている固定デスクトップに役立ち得るが、企業ＰＣがラップトップの場合には役立たず、ラップトップは企業ＰＣの大半を含む。デスクトップコンピュータとは異なり、ラップトップコンピュータは、使用しない時はオンにされない（ラップトップコンピュータは、通常、「スリープ」または「ハイバネート」モードにある）。その上、ラップトップおよびデスクトップは、オフィスや組織のイントラネットから離れて（例えば、自宅に）位置する場合が多く、どちらの場合もリモート接続からのアクセスが不可能である。
【０００７】
代替の手法は、パーソナルＰＣをパーソナル仮想マシンに変更することであり、パーソナル仮想マシンは、企業のデータセンタでホストされ、物理的なＰＣと同じセットのアプリケーションおよびデータを含む。これは、通常、仮想デスクトップインフラ（VDI:Virtual Desktop Infrastructure）システムなどのシステムを必要とし、同システムは、ＶＭのプールを管理し、ユーザのパーソナルＶＭにユーザをリダイレクトすることでも知られている。そのような統合仮想デスクトップを使用することで、タブレットユーザは、ユーザのＰＣへの普遍的なアクセスを得る。しかし、この手法には２つの主な欠点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
第１に、パーソナルＰＣをデータセンタに集中させることにより、ユーザは、今や、ローカルの（物理的な）ＰＣを使用して直接作業することができる場合、およびそれを希望する場合でさえ、彼女の作業環境を妥協せねばなくなる。言い換えれば、ユーザがオフィスにいて、ローカルのＰＣを使用して直接作業することができる場合でさえ、ユーザは、ユーザがリモート操作するかのように、仮想デスクトップを使用する必要がある。中央デスクトップとのあらゆる相互作用は、ネットワーク往復メッセージを伴い、したがって、待ち時間および帯域幅制約に敏感になるため、リモート作業は通常、ユーザの不満足な経験（poor user-experience）を意味する。その上、ユーザは、ラップトップおよびモバイルデバイスユーザに対する重要な考慮事項をオフライン（データセンタとの接続を切る）で作業することができない。
【０００９】
第２に、データセンタ内のすべての企業ＰＣをホストする集中型インフラのサポートに関連するコストは、演算コストと格納コストの両方の観点から、非常に高い。既存のラップトップユーザ人口に対し、ハードウェアリソースがエンドポイント（ラップトップ）に既に存在している場合、データセンタでの重複は、リソースのかなりの浪費をもたらす。
【図面の簡単な説明】
【００１０】
【図１】複製および同期化システムを使用するための環境の例示的なブロック図である。
【図２】複製および同期化システムを使用するための環境の例示的なブロック図である。
【図３】例示的な実施形態による、例示的な複製および同期化システムのアーキテクチャの例示的なブロック図である。
【図４】どのように異なるＣＶＤイメージ層をエンドポイントデバイスへのデスクトップの複製および同期化部分に使用できるかについての例示的なブロック図である。
【図５】複製および同期化システムの実施形態を実践するための計算機システムの例示的なブロック図である。
【発明を実施するための形態】
【００１１】
本明細書に記載される実施形態は、必要に応じて、デスクトップの統合コピー（centralized copy）への普遍的なアクセスを提供すると共に、可能な場合は常に、ローカルでの実行を通じたネイティブユーザ経験（native user experience）を提供するという組合せを提供するための強化されたコンピュータベースおよびネットワークベースの方法およびシステムを提供する。例示的な実施形態は、複数のデバイスにわたる、通常はデータセンタに格納される論理的なデスクトップイメージの複製（cloning）と共に、ユーザコンテンツのほぼ連続的な同期化のための効果的な方法を提供する複製および同期化システム（「ＣＳＳ」(Cloning and Synchronization System)）を提供する。これにより、ＰＣ、ラップトップおよびモバイルデバイスなどの異種である可能性があるハードウェアを用いて、いかなる数の異なるマシンとも共有される、仮想マシンおよび物理的なマシンを超えて一般化される共通デスクトップへのアクセスが可能になる。ＣＳＳは、データセンタのＣＳＳサーバおよび各対象デバイス上のＣＳＳクライアントの使用を通じて、普遍的なアクセスとローカルでの実行の利益とを組み合わせる。ＣＳＳサーバは、専用コンピュータでも、適切にプログラムされた汎用コンピュータでも、データセンタの１つまたは複数のコンピュータシステムにおいて１つまたは複数のプロセッサを制御して、ユーザのデスクトップの複製および同期化を管理する一連の論理または命令でもあり得る。ＣＳＳクライアントは、通常、対象デバイス上での複製されたデスクトップの受信および管理ならびにその後の更新の同期化を制御する一連の論理または命令を含む。
【００１２】
対象計算装置（「エンドポイント」または「エンドポイントデバイス」とも呼ばれる）は、仮想マシンでも、物理的なマシンでもあり得、その計算装置のために中央で保持される（centrally maintained）デスクトップイメージ全体のサイズより小さな場合がある、制限された物理的な格納スペースを有し得る。複製されたデスクトップは、例えば、ファイルの一部のみをダウンロードしたり、未だダウンロードされていないファイルをどのようにロードするかを認識することが可能なデバイスドライバによる「オンデマンド」アクセスで、いくつかのファイルの代わりにスタブを使用したりすることによって、相応に調整される。また、関連米国特許第８，３０１，８７４号明細書に記載されるように、これらのおよび他の遅延配送メカニズム（delayed delivery mechanisms）も使用することができる。
【００１３】
本明細書で使用される場合、「デスクトップイメージ（desktop image）」（または、単に「イメージ」）は、通常はオペレーティングシステム（ＯＳ）、アプリケーション、構成および設定のみならず、すべてのユーザデータおよびファイルも含む、対象計算装置で格納されるコンテンツ全体を実質的に含むデータおよび実行ファイルを指す。例えば、いくつかの実施形態では、デスクトップイメージは、計算装置の１つまたは複数の物理的な記憶装置（例えば、ハードディスク、ソリッドステート記憶装置および同様のものなど）に格納されたすべてのファイルを含む。いくつかの実施形態では、デスクトップイメージは、本来一時的なまたは非常駐のファイルや、中央管理を行う必要のないファイルを除く。デスクトップイメージは、圧縮または非圧縮形式でデータを格納するファイルの集合体を含み得、データは、未フォーマット（例えば、バイナリデータ、未処理のディスクブロック、未処理のデータパーティションなど）でも、様々なタイプのファイル（例えば、データファイル、ＤＬＬファイル、実行可能なファイル、様々なファイルタイプのパーソナルユーザファイル、様々なタイプの構成ファイルなど）および／または他の任意のタイプのデータ構造フォーマットとして構築されてもよい。
【００１４】
デスクトップイメージ（論理的なデスクトップイメージ）に含まれるファイルの集合体は、統合仮想デスクトップ（CVD:Centralized Virtual Desktop）またはＣＶＤオブジェクトと呼ばれる。以下でさらに説明されるように、ＣＶＤオブジェクトは、複数の層を含み、その一部またはすべては、対象デバイスのハードウェアおよびオペレーティングシステム、ならびに、情報の一部またはすべての同期化の望ましさに応じて、対象計算装置に複製することができる。例えば、異なるバージョンのオペレーティングシステム（ウィンドウズＸＰ（Ｗｉｎｄｏｗｓ  ＸＰ）およびウィンドウズ７（Ｗｉｎｄｏｗｓ  ７）など）を備えた異種のデバイスは、デスクトップイメージ情報の同期化が可能であり得る。他の状況では、同デバイスは、ＯＳレベル情報の同期化は不可能であり得るが、システムアプリケーションの同期化は可能であり得る。例示的な一実施形態では、層は、ユーザデータ、プロファイル、ユーザおよびシステム設定、ユーザアプリケーション、マシンのアイデンティティ、基本イメージ（ＯＳ、基盤ソフトウェアおよびコア・アプリケーションのうちの１つまたは複数を含む）、ドライバライブラリまたは均等物のうちの１つまたは複数を含み得る。いくつかの実施形態は、ＣＶＤの残りからドライバライブラリおよび他のハードウェア依存関係を分離し、その結果、複製された時点で、これらのハードウェア特有の態様が同期化アクティビティによって上書きされることはない。
【００１５】
関連米国特許第７，９５３，８３３号明細書は、いかなる時点でも厳密に１つの物理的なデバイスと結合することができるデスクトップの仮想表現としてのＣＶＤの使用について記載している。同明細書に記載されているシステムは、管理者がＣＶＤをあるデバイスから別の対象（エンドポイント）デバイスに「再度割り当てる」ことを可能にする。対象の計算装置は仮想マシンであり得、その場合、再度割り当ては、物理的なデバイスから仮想デバイスに対して起こり、新しい（仮想）ハードウェアへのＣＶＤの適合に必要な変換を組み込む。
【００１６】
米国特許第７，９５３，８３３号明細書に記載されるＣＶＤメカニズムによって扱われる１つの使用事例は、障害回復を前にしてビジネス継続性を提供することである。例えば、ユーザのラップトップの紛失または損傷があると、情報技術（ＩＴ）管理者は、集中型ＶＭにＣＶＤを再度割り当てることができ、これを受けて、ユーザは、リモートデスクトッププロトコルを通じて、彼女のデスクトップに瞬時にアクセスすることができる。その上、ユーザが交換用の物理的なラップトップを最終的に受け取ると、仮想マシンから新しい物理的なマシンにＣＶＤを再度割り当てし直すことができ、ユーザは、ローカルでの作業続行が認められる。このＣＶＤメカニズムによって扱われる別の使用事例は、より古いスナップショットからシステムを復元することであり、それにより、管理者は、破損したソフトウェアまたはエラーを有するデバイスを、判明している最後の動作構成を有する以前のシステム状態に修復することができる。
【００１７】
しかし、米国特許第７，９５３，８３３号明細書に記載されるメカニズムは制限される。ＣＶＤは、一度に１つの（物理的なまたは仮想）デバイスにしか割り当てることができない。デバイスとＣＶＤとの間のこの１対１マッピングは、ユーザによって使用されているデバイスは一度に本質的に１つのみ存在する障害回復使用事例に役立ち得るが、ユーザが一度に複数のアクティブデバイスを保持する事例には適用可能ではない。例えば、ユーザが論理的なデスクトップイメージを複数のエンドポイントと共有する場合、ユーザは、デバイスのいずれかから、データ、アプリケーション、設定などに対する更新を実行することがあり、ＣＶＤオブジェクトと結合されていないデバイスに行われた変更は、ＣＶＤがそのデバイスに再度割り当てられる際は常に紛失することになる。１対１マッピングの別の欠点は、ユーザがあるデバイスと別のデバイスとの間で頻繁に移行する事例（タブレットまたは他のモバイルデバイスおよびＰＣでの事例のような）では、ネットワーク（通常、広域ネットワーク）上でのデータ移動および対象デバイスのリブートからなる再度割り当て動作は、ユーザが進んで容認するよりも長い時間を要する可能性があることである。これらのシナリオは、モバイルデバイスおよびタブレットの激増ならびにＰＣとのモバイルデバイスおよびタブレットの同時使用の激増によって悪化する。
【００１８】
複製および同期化システムのアーキテクチャおよび使用
ＣＳＳアーキテクチャは、ＣＶＤを複数の対象デバイスに割り当てる１対多数のアーキテクチャを提供するため、および、複数の対象デバイスの同期化を維持するため、一般的なＣＶＤメカニズムの概念を広げる。一実施形態では、複数の対象デバイスのうちの１つは、「アクティブ」デバイスまたは「マスタ」として指定される。適用する場合、アクティブデバイスによってユーザコンテンツおよび／またはシステムコンテンツに行われた変更のみを、サーバが格納するＣＶＤに伝達する（プッシュアップする（pushed up））ことができる。次いで、同期化を維持するため、これらの変更は、他の非アクティブ対象マシンにプッシュダウンされる（pushed down）。そのように、異なる対象デバイスが新しいアクティブデバイスになると、例えば、ユーザが彼女のデバイスのうちの別のものを使用するように切り替えると、それは、既に同期化されており、最新の更新を含む。適用性は、いくつかの事例では、デバイス間の一部のタイプの同期化のみが望まれることを指す。例えば、異なるオペレーティングシステムを有するデバイスは、ＯＳレベルおよび／またはアプリケーションレベルの同期化には参加できない。
【００１９】
一般に、対象デバイスのユーザコンテンツは、ほぼ連続的に更新が維持され、「ライブ同期化（live sync）」と呼ばれるが、コンテンツの残り（例えば、ＯＳ、アプリケーション、システムソフトウェアおよび構成ファイル、ならびに、同様のもの）は、適用する場合、「遅延同期化（lazy synchronization）」ベースで同期化される。すなわち、ユーザがリブートすることを潜在的に必要とするか、または、ユーザの他の割り込みを必要とするコンテンツは、ステージングエリア（staging area）においてシステムにダウンロードおよび／または部分的に統合することができるが、ユーザにとって都合が良くなるまで、デバイス（例えば、レジストリ、ＯＳなど）に即時に統合することはできない。ＣＳＳの他の実施形態は、他の時間に同期化を実行することができ、ストリーミング、遅延またはオンデマンドタイプのベースで非ユーザコンテンツをダウンロードすることができる。ＣＳＳ同期化は、ユーザがいかなるタイプのチェックインもしくはチェックアウト手順も使用する必要なく、またはそうでなければ、同期化が起こっていることに気付くことなく、起こる。したがって、システムをリブートする時折の必要性は別として、同期化プロセスは、ユーザに比較的透過的なものである。
【００２０】
それに加えて、いくつかの実施形態では、非アクティブデバイス（アクティブ／マスタデバイスに指定されていないデバイス）は、ローカルでユーザコンテンツ（ユーザファイル、ユーザ設定および同様のものなど）の変更を行うことが許可されるが、デバイスがアクティブデバイスにならない限り、および、デバイスがアクティブデバイスになるまで、システム関連コンテンツ（ＯＳ、レジストリ設定、システムソフトウェア、ドライバおよび同様のものなど）の変更を行うことは許可されない。これらのユーザコンテンツのローカルでの変更は、以下で説明される方法で、サーバのＣＶＤイメージのプッシュ（server CVD image pushes）からの更新とマージされる。いくつかの実施形態では、非アクティブデバイスを含むデバイスのユーザは、基本イメージを含むアプリケーションの共通セットとは異なるパーソナル「ユーザがインストールした」アプリケーションを、別々の層（例えば、図４の４１１を参照）にインストールすることが許可される。これらのパーソナルユーザアプリケーションは、一般的に共有される基本イメージと並んで存在することができ、デバイスの残りとの同期化は行われない。いくつかの実施形態では、非アクティブデバイスは、より直接的な方式で、ユーザコンテンツ（のみ）の変更をサーバＣＶＤにプッシュすることが許可され、次いで、その変更は、ほぼリアルタイムで、他のデバイスのすべてに伝播される。この後者のメカニズムにより、より直接的に見られるように、ローカルでの変更を統合し、他のデバイスにプッシュすることができる。そのようなメカニズムは、特に、ユーザがタブレットまたはスマートフォンおよびＰＣなどの２つのデバイスを同時に使用する際に役立てることができる。
【００２１】
図１は、複製および同期化システムの使用の例示的なブロック図の概観である。図１は、複数の異種のエンドポイントデバイス１１０、１２０、１３０、１４０および１５０の間で、ＣＶＤ１０１として表されるデスクトップイメージを共有する環境１００を示す。現在のデスクトップイメージであるＣＶＤ１０１は、通常、他の時点におけるデスクトップを表し得る他のＣＶＤスナップショット１７０と共に、データセンタにおいて中央に格納される。ＣＶＤスナップショット１７０は、必要に応じて、異なるエンドポイントデバイスにデスクトップをバックアップおよび／または復元する能力を提供することができる。示されるように、ユーザ１６０は現在、ラップトップ１２０を動作させており、したがって、ラップトップ１２０が「アクティブ」またはマスタデバイスである。しかし、ユーザは、ＰＣ１１０上、ユーザのスマートフォンなどのモバイルデバイス１４０上およびタブレット１５０上のデスクトップを使用して作業する必要もある。モバイルデバイス１４０およびタブレット１５０は、ＲＤＰ（リモートデスクトッププロトコル）などのリモートプロトコルを使用してアクセスされるサーバ１３０によってホストされる１つまたは複数の仮想マシン１３２に接続される。ユーザ１６０がユーザファイル１２１、または、ＯＳデータ、レジストリ設定および同様のもの１２２の変更を行うと、ファイルは、プッシュ動作１０２を使用して、サーバが格納するＣＶＤイメージ１０１に移動（例えば、転送、伝達、送信など）される。次いで、これらのファイルのコピー１１１および１３１は、プッシュ動作１０３および１０４をそれぞれ使用して、他のエンドポイントに移動される、すなわち、ＣＳＳサーバ（例えば、データセンタの）からＰＣ１１０およびホスト１３０に存在するＣＳＳクライアントに移動される。このように、ＰＣ１１０およびＶＭ１３２によって使用されるデスクトップイメージは、ラップトップデバイス１２０上でユーザ１６０によって行われたデスクトップの変更と共に（変更と「同期」して）現状が維持される。エンドポイントデバイスへのＣＶＤ（デスクトップイメージ）１０１の初期の複製については、図２および３を参照して説明される。
【００２２】
いくつかの実施形態では、上記で述べられるように、ＣＳＳは、デバイスがアクティブ状態でない場合でさえも、ほぼリアルタイムで、例えばプッシュ動作１０５および１０６を使用して、サーバＣＶＤイメージ１０１にプッシュすべき（push）、ＰＣ１１０およびＶＭ１３２によるサービスを受けるデバイス（例えば、モバイルデバイス１４０およびタブレット１５０）などの非アクティブデバイスと関連付けられた、ユーザコンテンツ（ユーザファイルおよびデータなど）の変更を可能にすることができる。そのような挙動は、ユーザが複数のデバイスを同時に使用する際に特に有益であり得る。この挙動は、ＣＳＳの何らかのインスタンス化においてのみ起こり得、１対多数の同期化の実装に対して強制的なものではないため、プッシュ動作１０５および１０６は、重みの低い点線（lighter weight dashed line）を使用して示される。
【００２３】
図２は、ＣＳＳが使用できる異なるタイプの複製および同期化の一部の例示的なブロック図である。示されるＣＳＳ環境２００は、ＣＳＳサーバ２０１と、ＣＳＳサーバ２０１上で中央に格納されたＣＶＤイメージ（ＣＶＤ image）２０２を共有することを希望する４つの異なるタイプのエンドポイントデバイスとを含む。例示を目的として、ＣＶＤイメージ２０２にはウィンドウズ（Ｗｉｎｄｏｗｓ）ＯＳ  ２０４が提供され、したがって、ウィンドウズ（Ｗｉｎｄｏｗｓ）ベースのシステム上へのユーザデスクトップの呼び出しに特化するコンテンツを含む。ＣＶＤ２０２は、ＣＳＳサーバ２０１のデータリポジトリ（data repository）に（例えば、１つまたは複数の記憶装置に）オフラインで格納されるような、ユーザのパーソナルデスクトップ環境の論理的表現である。
【００２４】
ＣＶＤ２２１は、パーソナルラップトップワークステーション２２０に複製された後のインスタンス化され、キャッシュされたＣＶＤ２０２のコピーである。注目すべきは、ＰＣ用のオペレーティングシステムはウィンドウズ（Ｗｉｎｄｏｗｓ）ベースである（基準ＣＶＤと同じである）ため、ＰＣ２２０をサポートするドライバおよびデバイス２２０に特有のマシンＩＤ情報などのハードウェア依存性の態様を除いて、ＣＶＤイメージ２０２からＣＶＤ２２１全体を複製することができることである。その後、ＣＶＤ２２１のすべての層は、サーバが格納するＣＶＤ２０２と同期化することができる。
【００２５】
ＣＶＤ２１１は、ＶＭプール２１０からの少なくとも１つの仮想マシンと関連付けられた、インスタンス化され、キャッシュされたＣＶＤイメージ２０２の一部分のコピーである。具体的には、ＣＶＤ２０２が複製されると、ＣＶＤ２０２から分離された特別な基本イメージ（ＶＭ用のＯＳ２１４）は、ＶＭ特有のシステムレベルソフトウェアに干渉しないようにするため、仮想マシン用に特にインスタンス化される。その後、ＣＶＤ２１１のアプリケーションおよびユーザコンテンツ層のみがＣＶＤ２０２と同期化され、ＶＭ特有のツールが保存される。
【００２６】
ＣＶＤ２３１は、ＣＶＤ２０２の一部として格納される基準基本イメージと同じ種類のオペレーティングシステムを共有しないデバイス２３０と関連付けられるため、ＣＶＤ２３１は、ユーザコンテンツ２３２のみに限定されたＣＶＤ２０２の部分的な複製を表す。ＣＶＤ２０２からのアプリケーションおよびＯＳの同期化は、デバイス２３０の動作能力に干渉する恐れがある。したがって、ＣＶＤ２０２のアプリケーションは、複製してデバイス２３０上で実行することができない。しかし、デバイス２３０を使用して、ユーザは、ウィンドウズ（Ｗｉｎｄｏｗｓ）ＯＳおよびアプリケーションの実行が可能なＣＶＤ２０２の複製を含むＶＭプール２１０からＶＭに接続することによって、依然としてＣＶＤ２１１のウィンドウズ（Ｗｉｎｄｏｗｓ）アプリケーション２１３にアクセスすることができる。リモートアプリケーションアクセスプロトコル（ＲＤＰなど）を使用することで、デバイス２３０は、ＶＭプール２１０に接続することができ、ＣＶＤ２１１のアプリケーション（ＣＶＤ  ２０２の複製）へのアクセスを得る。この事例では、デバイス２３０は、完全なリモート仮想マシンにアクセスすることも、アプリケーション層２１３の特定のアプリケーションにアクセスするために同様のリモートプロトコルを使用する「アプリケーションスタブ」２３４を使用して特定のアプリケーションにアクセスすることもできる。また、アプリケーション層２１３のアプリケーションも、（ＣＶＤ２１１のユーザファイル２１２として複製された）複製されたＣＶＤ２０２のユーザファイル２０３にアクセスすることができる。デバイス２３０がＣＶＤ２０２のユーザファイル２０３へのアクセスのみを必要とする場合、デバイス２３０は、次の２つの方法のうちの１つで同アクセスを行うことができる。１．ウェブブラウザを有する任意のデバイスからＣＶＤファイルへの認証アクセスを提供するフロントエンドウェブサーバであるウェブポータルアクセス２０５を介するユーザのＣＶＤへの読み取り専用アクセス。このウェブポータル方法は、ＣＳＳサーバ２０１によってサポートされる。あるいは、２．デバイス２３０との直接的なファイルコンテンツ２０３の同期化。この事例では、ＣＶＤ２３１とＣＶＤ２０２との間で、完全な同期化はないが、むしろ、ユーザコンテンツの同期化のみがある。
【００２７】
いくつかの事例では、ＣＶＤ２０２に格納される完全なイメージデスクトップに存在するアプリケーション２０４のサブセットは、ＶＭプール２１０からのＶＭなどの複製されたデバイスに公開したり、モバイルデバイス２３０などのエンドポイントデバイスで使用するためにアプリケーション層２１３に格納したりすることができる。例えば管理者によって公開用に選択されると、特定のエンドポイントに対して、これらのアプリケーションのみが利用可能になる。エンドポイントデバイスのディスプレイ画面上のアイコンなど、そのようなアプリケーションを示す方法をユーザに提示することにより、ユーザは、サブセット２３４の公開アプリケーションを選択することができる。さらに、いくつかのシナリオでは、公開アプリケーションは、（ＶＭプール２１０のＶＭに透過的に）異なるエンドポイントデバイスによって提供し、サーバＣＶＤ２０２にアップロードし、モバイルデバイス２３０などの他のデバイスで使用するために公開することができる。示される事例では、公開アプリケーション２３４は、ＶＭプール２１０からのＶＭ上で実行中である。ネイティブアプリケーション２３３は、例えば、デバイス２３０と関連付けられた製造業者または第三者プロバイダによって提供されるものである。デスクトップイメージ２３１が同期化されると、ユーザコンテンツ２３２のみがＣＶＤ２０２にアップロードされるか、または、ＣＶＤ２０２からダウンロードされることに留意されたい。
【００２８】
図３は、例示的な実施形態による、例示的な複製および同期化システムのアーキテクチャの例示的なブロック図である。一実施形態では、ＣＳＳは、図１および２を参照して説明される複製および同期化を提供するように協働する１つまたは複数の機能コンポーネント／モジュールを備える。これらのコンポーネントは、ソフトウェア、ハードウェアまたはその両方の組合せで実装することができる。図３では、１つまたは複数のコンピュータシステム３０２、および、１つまたは複数の記憶装置３０４がデータセンタ３０１（ＩＴ管理の中心位置を提供する）に含まれており、ネットワーク３２０（例えば、ＷＡＮ、ＬＡＮまたは他の通信媒体）を通じて、ユーザの１つまたは複数の計算装置３１０ａ〜３１０ｃに接続され、それにより、ユーザは、共有されたデスクトップイメージを使用してタスクを実行することができる。これらの計算装置３１０ａ〜３１０ｃは、図１に示されるＰＣワークステーション、ラップトップおよびモバイルデバイスなど、異なるタイプのハードウェアであり得る。計算装置３１０ｂは、各エンドポイント計算装置３１０ａ〜３１０ｃに存在する、クライアント側のＣＳＳを備えるコンポーネントを大まかに示すため、拡大図で示されている。
【００２９】
データセンタのコンピュータシステム３０２のうちの少なくとも１つは、ＣＳＳサーバ３０３を実行し、ＣＳＳサーバ３０３は、ディスク３０６〜３０８上に格納される１つまたは複数のＣＶＤイメージ３０５を格納および管理する１つまたは複数の記憶装置３０４と通信可能に結合される。ＣＳＳサーバ３０３は、複製および同期化能力を提供するため、接続された各計算装置３１０ａ〜３１０に位置するＣＳＳクライアント（例えば、ＣＳＳクライアント３１１）と通信する。具体的には、ＣＳＳサーバ３０３は、必要に応じて、記憶装置３０４上に格納されるＣＶＤイメージ３０５をエンドポイントデバイス３１０ａ〜ｃに転送する役割を有する。また、ＣＳＳサーバ３０３は、同期化されているＣＶＤイメージ３０５の一部に相当するファイルをプッシュダウンしたり（以下でさらに説明されるように）、１つまたは複数の計算装置３１０ａによってプッシュアップされたファイルを受信したりする役割も有する。
【００３０】
各計算装置（例えば、計算装置３１０ｂ）は、ＣＳＳクライアント３１１（ソフトウェア、ハードウェアまたはその組合せ）を実行し、ＣＳＳクライアント３１１は、計算装置３１０ｂがアクティブデバイスである場合に、または、必要に応じて他の時点で、データセンタのコンピュータシステム３０２のＣＳＳサーバ３０３と通信して、複製されたＣＶＤイメージ（またはその部分）を受信したり、同期化中にプッシュダウンされたファイルを受信したり、ＣＳＳサーバ３０３にファイルをプッシュアップしたりする。例示的な一実施形態では、ＣＳＳクライアント３１１は、ＣＶＤの様々な部分のバージョン情報などのアイテムに相当する状態データ３１２や、ＣＳＳサーバ３０３から受信されたものを含む、計算装置上に存在するファイルの有無および状態を追跡するローカル管理表３１３を保持する。いくつかの実施形態では、ファイルのコンテンツが変更されたかどうかを特定するため、ファイルのシグネチャ（signature）は、ハッシュ値を使用して保持される。それに加えて、各計算装置のファイルシステム３１５は、現在ファイルシステム３１５にインストールされているファイルに対するワーキングエリア３１５ａや、統合、ダウンロードまたは同様のもののプロセス中のファイルに対するステージングエリア３１５ｂを保持する。ファイルシステム３１５によって参照されたファイルは、ディスク３１７に格納される（ディスク３１７からの読み取りおよびディスク３１７への書き込みが可能である）。これらのファイルは、計算装置３１０ｂにダウンロードされて統合されたＣＶＤイメージの層を備える。
【００３１】
本明細書に記載される例示的な実施形態は、複数のエンドポイントの間でのユーザのデスクトップイメージの共有に使用すべき複製および同期化システムを実装するため、アプリケーション、ツール、データ構造および他のサポートを提供する。説明される技術の他の実施形態は、他の目的のために使用することができる。以下の説明では、説明される技術の徹底的な理解を提供するため、データフォーマットおよびコードシーケンスなど、多くの特定の詳細が記載される。また、説明される実施形態は、本明細書に記載される特定の詳細の一部がなくとも、または、他の特定の詳細（論理の順番、異なる論理などに関する変更など）と共に、実践することができる。したがって、説明される技術および／または機能の範囲は、任意の特定のルーチン、モジュール、コンポーネントおよび同様のものを参照して説明される態様の特定の順番、選択または分解によって制限されない。また、本明細書ではある特定の用語が主に使用されるが、同等の実施形態および実施例をもたらすために他の用語を同義で使用することもできる。それに加えて、用語は、代替のスペルを有し得、代替のスペルについて明確に述べても述べなくともよく、そのようなすべての用語の変形例が含まれることを意図する。
【００３２】
図３によって例示されるＣＳＳアーキテクチャは、デバイスにアクセスする必要なく、リモート操作でユーザのデバイスのトラブルシューティングを行うこと含む様々な使用事例を可能にする。ＣＳＳの複数デバイス同期化モデルによってサポートされる追加の使用事例は、以下のシナリオを含む。
【００３３】
ａ．普遍的なアクセスのための（例えば、タブレットコンピュータから）、物理的なデスクトップまたはラップトップと、固定された常にオンライン状態の仮想マシン（ＶＭ）との間の物理環境から仮想環境への（P2V:Physical to Virtual）同期化。
【００３４】
ｂ．物理的なデスクトップ／ラップトップと、オンデマンドのまたは一時的なＶＭとの間のＰ２Ｖ同期化。この能力は、デスクトップへの緊急時のアクセスに役立ち、常にオンライン状態のＶＭ（関連コストを生み出す）を必要としないが、むしろ、管理者、データセンタまたは同様のものが、オンデマンドでＶＭを始動し、通常オフラインで格納されるＶＭのディスクイメージと共にそれをロードすることを必要とする。
【００３５】
ｃ．Ｐ２Ｖ集中型トラブルシューティング  ヘルプデスク技術者または他の専門家は、ユーザの物理的なリモートマシンにアクセスする必要なく、集中型仮想マシン上の論理的なデスクトップイメージのコピーを複製し、デスクトップのトラブルシューティングを行うことができる。修復された時点で、変更は、ユーザの物理的なリモートマシン上の物理的なコピーと同期化することができる。
【００３６】
ｄ．ラップトップおよびデスクトップなどの複数の物理的なマシン間の物理環境から物理環境への（P2P:Physical to Physical）同期化。この同期化は、２つを超えるマシンを伴い、「Ｎ」個の複製を包含し得る。
【００３７】
ｅ．ユーザの職場のデスクトップとユーザの自宅のＶＭとの間のＰ２Ｖ同期化。これにより、ユーザは、ユーザのパーソナルマシン上でホストされる仮想マシンを使用して、ユーザの職場のデスクトップを自宅で複製することができ、ユーザは、パーソナルマシンと職場のマシンを同時に実行することができる。
【００３８】
ｆ．選択されたディレクトリのユーザファイルのみの同期化。この事例では、ＣＶＤのユーザコンテンツ層のみが同期化される。ＣＶＤ層の残りは同期化されない。また、デバイスが同じオペレーティングシステムを共有しない事例（例えば、マック（Ｍａｃ）ＯＳデバイスとウィンドウズ（Ｗｉｎｄｏｗｓ）デバイス）でも、このメカニズムを使用することができる。
【００３９】
ｇ．複数のユーザにわたるユーザファイルの共有。ユーザは、他のユーザが共有ファイルにアクセスできるように、他のユーザが共有ディレクトリからファイルにアクセスすることに対する許可を定義することができる。これは、ファイルサーバ上での共有と同様であり、ファイルバージョンの履歴の維持および共有データ、スナップショット、オフライン作業のための物理的なデバイスへの自動同期化などの保護という追加の利益を伴う。
【００４０】
複製および同期化動作
ＣＳＳアーキテクチャは、２つの新しい動作、すなわち、複製および同期化を使用して、ＣＶＤ概念を広げて、異種である可能性がある複数のデバイスを結合することを達成する。
【００４１】
複製（ＣＶＤ、新しいデバイス）
複製動作は、指定された一般的なＣＶＤオブジェクトを取り入れ、指定された新しいデバイスにＣＶＤオブジェクトを複製する。各ＣＶＤは、１つまたは複数のエンドポイントデバイスと結合される。複製動作の終了時、ＣＶＤは、指定されたＣＶＤによって管理される結合されたデバイスのグループに新しいデバイスを追加する（例えば、関連付ける、特定する、指定するなど）。
【００４２】
複製動作は、エンドユーザが開始することも、管理者が開始することもできる。前者の事例では、エンドユーザがセルフサービス動作を動作する。彼女は、新しいデバイスを導入し、新しいデバイス上に複製および同期化クライアント（ＣＳＳクライアント）をインストールし、彼女の認証情報を提供し、次いで、彼女のデスクトップを表すＣＶＤに対する複製動作を開始する。後者の事例では、管理者（ＩＴ被指名人など）がエンドユーザの代わりに動作を起動する。
【００４３】
各デバイスは、最大で１つのＣＶＤグループに属することができ、ＣＶＤグループは、Ｎ個のデバイスからなる。しかし、ＣＶＤは、デバイスに依存せず、特定のハードウェアから分離されることに留意されたい。デバイス特有の態様は、デバイスのインスタンスオブジェクト（device instance object）で保持される。
【００４４】
この文脈では、「複製」という用語は、機能上同一だが、オリジナルとはわずかに異なり得るイメージを指す。複製は、アプリケーション（ユーザがインストールしたアプリケーションと中央で管理されるアプリケーションの両方）、データおよびＯＳの同じセットを含むが、指定されたデバイスの基盤となるハードウェアに基づいてインストールされた異なるドライバを有し得る。複製は、異なるマシンインスタンスとして、異なるマシン識別子およびネットワークアドレスなどの異なるアイデンティティ（distinct identity）、異なるＯＳライセンス番号などを有する。
【００４５】
上記で述べられるように、ＣＶＤは、複数の層（コンポーネント）を備える。各層は、特定の方法で複製される。例示的な一実施形態では、ＣＶＤは、以下の層を備える。
・ユーザファイル
・ユーザ設定およびプロファイル情報
・マシンアイデンティティ（ＩＤ）
・ユーザがインストールしたアプリケーションを含むアプリケーションソフトウェア
・インフラストラクチャおよびシステムレベルソフトウェア（および潜在的なコア・アプリケーション）を含むオペレーティングシステム
・デバイスドライバおよび関連ソフトウェアを含むハードウェア依存性のソフトウェア
複製論理と同期化論理の両方とも、複製されている層に特有であるため、ＣＶＤイメージをこれらの層に分離することは、様々な複製動作の成功に重要である。
【００４６】
複製の一般概念は、オペレーティングシステムの非依存性である。その上、ＣＶＤは、異なるオペレーティングシステムを有する複数のデバイスによって共有することができるが、この事例では、同期化は、ユーザファイルおよびユーザ設定に限定される。同じＣＶＤを共有する異なるオペレーティングシステムに対応するため、ユーザファイルは、ディレクトリツリーで適正にマッピングされ、ユーザ設定は、必要に応じて、選択的に変換される。例えば、マイクロソフトのウィンドウズ（Microsoft Windows）のデバイス上のウェブブラウザのお気に入りは、アップルコンピュータのマック（Apple Computer Mac）のデバイス上の好適で適正な場所と同期化される。
【００４７】
ユーザファイル
ユーザファイルは、ＣＶＤのユーザファイルを、指定された対象デバイス上に存在するユーザファイルとマージすることによって、「複製」される。事実上、複製動作により、サーバが格納するＣＶＤおよび新しいデバイスからのすべてのファイルの共用体を含む（ローカル）ＣＶＤが作成される。ＣＶＤと指定されたデバイスとの間でコンフリクト（conflict）がある（すなわち、名前および位置は同じだが、コンテンツが異なるファイルがある）事例では、コンフリクトファイルの第２のコピー（「コピー」を末尾に付け加える）が生成され、並べて維持され、ユーザに通知が提示され、その通知を受けて、コピーのうちの１つを削除するかまたは両方のコピーを維持することによって、コンフリクトを解決することができる。
【００４８】
このマージを実行するためのメカニズムについては、ユーザコンテンツの同期化に関してさらに詳細に説明される。
ユーザ設定
デフォルトでは、ＣＶＤ設定は、対象デバイス上の設定を上書きし、それら設定を交換する。しかし、複製の範囲にユーザ設定を含まない「部分的な」複製を定義することが可能である。
【００４９】
マシンＩＤ
ＣＶＤのマシンＩＤ設定（マシン名、ＩＰアドレス、ＯＳライセンスなどを含む）は、対象デバイスにマッピングされない（すなわち、デバイスは、それ自体のマシンＩＤを保存する）。これは、同じ名前の２つのマシンを有することで起こり得るネットワーク衝突を避けるために重要である。しかし、これらの設定の一部は、復元動作に役立てることができる。
【００５０】
アプリケーションおよびシステム
デフォルトでは、ＣＶＤのこれらの層は、対象デバイスを上書きする。ＯＳおよびアプリケーションセットのその場交換（in-place replacement）を実行するための１つのプロセスについては、米国特許第８，３０１，８７４号明細書に記載されている。大まかに言えば、新しい情報は、対象デバイスのステージングエリアにダウンロードされる。特別な「ピボット論理（pivot logic）」が、デバイスの第１のブートの間に実行する唯一のプロセスとして実行されるクライアントソフトウェアによって提供される。次いで、このピボット論理は、ステージングエリアから動作ファイルシステムにファイルを移動し、必要に応じてファイルを削除することによって、ＯＳの「原子スイッチ（atomic switch）」を実行する。初期のピボット演算が完了すると、ピボット論理は、次いで、デバイスの第２のブートを実行して、コンポーネントの移動または統合を終了する。
【００５１】
複製プロセスの終了時、ハードウェア特有のソフトウェアを除いて、システムおよびアプリケーションソフトウェアの新しいセットは、すべてのＣＶＤ複製にわたって同一であることに留意されたい。
【００５２】
ハードウェア依存性の取り扱い
異なるハードウェアを有する２つのデバイスに対処するため、ＣＳＳは、ドライバライブラリをサポートし、ドライバライブラリは、イメージの残りから分離され、関連ハードウェア特有のドライバを有する１つのハードウェアタイプにつき１つのフォルダを含む。複製動作を実行する際、ＣＳＳサーバは、例えばＣＳＳサーバに格納される一致規則（matching rule）に基づいて、対象ハードウェアのタイプを自動的に検出し、関連ドライバフォルダのみを、イメージの残りと共に送信する。対象エンドポイントのハードウェアタイプの自動検出により、複製および同期化プロセスの自動化が可能になり、その結果、エンドユーザによるセルフサービス方式での同プロセスの実行が可能になる。
【００５３】
ドライバ「パッケージ」のフォルダを有するドライバライブラリは、各オペレーティングシステムに対して利用可能なツールまたはインストールできるパッケージにドライバファイルを配置する専用ツールを使用して、異なるオペレーティングシステムに対して実装することができる。例えば、ウィンドウズ（Ｗｉｎｄｏｗｓ）ＯＳの場合、マイクロソフト展開ツールキット（Microsoft Deployment Toolkit）などの公的に利用可能なツールにより、開発者は、各ドライバに対する完全なインストールパッケージを組み立てることができる。一部のドライバは、インストールに「．ｉｎｆファイル」を使用し、他のドライバは、ＯＳへのインストールに異なる方法を必要とする。
【００５４】
あるいは、ＣＳＳサーバは、複製プロセスの間、すべてのドライバソフトウェアを「ｆａｔ」ドライバイメージに組み込み（基本イメージの残りから分離されるまたは分離されない）、ドライバイメージ部分全体を転送させることができる。次いで、ＣＳＳクライアントは、新しいデバイスにどのドライバが必要かおよび／または適用可能かを認識し、複製されたＯＳにドライバをインストールさせる必要があろう。
【００５５】
別の例示的な実施形態では、ＣＳＳがどのドライバが必要かを認識する代わりに、ＣＳＳは、ＰｎＰをトリガし、ＯＳに対してすべてを設定して、どのドライバを使用するかを見出す。適正なドライバが既に対象イメージにインストールされている場合、ＣＳＳは、不要なインストールを避けるため、ドライバを再インストールしなくともよい。
【００５６】
図４は、どのように異なるＣＶＤイメージ層をエンドポイントデバイスへのデスクトップの複製および同期化部分に使用できるかについての例示的なブロック図である。状況に応じて、上記で詳述されるように、（ハードウェア依存性の取り扱いを除いて）フルイメージ（full image）を複製することができる。この状況は、完全な複製／同期化シナリオ４０１に示されている。ここでは、ユーザコンテンツ（ユーザデータ、プロファイル、ユーザがインストールしたアプリケーション）４１１、ＩＴ提供アプリケーション４１２および基本イメージ４１３（ＯＳ、基盤ソフトウェアなど）を含むフルイメージが新しいデバイスに複製される。（対象デバイスに対する復元動作は、複製と同様に実行される。）新しいデバイスに必要とされるドライバを含むドライバライブラリ４１６は、インストールされた時点で同期化されないため、フルイメージ４１０の残りから分離されるものとして示されている。
【００５７】
いくつかの事例では、ハードウェア層ばかりではなく、ＯＳ層もまた、システムの残りから分離し、基本ＯＳ層の上方のアプリケーション層のみを複製することが望ましい場合がある。例えば、そのデバイスのみに適用可能であるが、ハードウェア特有のものかまたはドライバベースのものかを特定できない何らかの低レベルのソフトウェアが存在し得、したがって、同ソフトウェアは、新しい／対象デバイスでのみ存在するはずである。一例は、「仮想マシンツール」、すなわち、仮想マシンでうまく動作するために必要なアプリケーションの共通のセットであり、物理的なデバイスから仮想対象デバイスにイメージを複製する際に取り除くべきではなく、同様に、仮想対象デバイスから物理的なデバイスに複製する際に適用すべきではない。
【００５８】
これらの事例に対し、ＣＳＳは、「リベース（rebase）」シナリオ４０２として示される部分的な複製／復元を提供する。ここでは、ユーザコンテンツ（ユーザデータ、プロファイル、ユーザがインストールしたアプリケーション）４２０およびＩＴ提供アプリケーション４２１が新しい／対象デバイスに複製（または復元）される。具体的には、ＣＳＳは、管理者が「基本イメージ（base image）」４２２を定義することを可能にし、「基本イメージ（base image）」４２２は、新しいデバイスと一致するリーンオペレーティングシステムイメージ（lean operating system image）を含み、イメージの残りから分離される。ＯＳイメージに加えて、基本イメージ４２２は、取り除くことも（例えば、復元の際）複製することもするべきではない低レベルのシステムソフトウェアを含み得る。この方法を使用することで、新しい／対象デバイスは、複数デバイスの同期化の目的のために使用できるようになる前に、適用された基本層で初期化される。基本イメージ４２２が適用された時点で、ＣＳＳ複製論理は、基本層の上方の層（例えば、ユーザコンテンツ４２０およびアプリケーション４２１）のみを複製し、次いで、それらの層は、（完全なシステム複製で行うように、システム層を上書きする代わりに）対象基本層とマージされる。また、このタイプの複製の一例は、図２のＶＭプールに対するＣＶＤ２１１に関しても示される。
【００５９】
リーンＯＳの基本イメージを含む基本イメージは、望む限り少ないまたは多くのコンポーネントと共に、対象ハードウェアに対するＯＳがインストールされる（またはそうでなければ、クリーンなイメージ（clean image）を見つけることができる）基準マシンを設定し、ＣＳＳクライアントをインストールし、次いで、結果として得られる基本イメージを捕捉および格納することによって、ＣＳＳでの使用に対して形成することができる。基本イメージは、同様の方式で更新することができる。
【００６０】
リーンＯＳの基本層の上方の層のマージは（ウィンドウズ（Ｗｉｎｄｏｗｓ）ＯＳベースのＣＶＤの事例では）、ウィンドウズ（Ｗｉｎｄｏｗｓ）特有のファイルシステム、レジストリおよびいくつかの入力ファイル／データベース（ｉｎｆｉｌｅ／ｄａｔａｂａｓｅ）オブジェクトのスマートマージによって実行することができる。具体的には、（非ユーザがインストールした）アプリケーション層のスマートマージは、ＤＬＬおよびアプリケーションの更新、削除、ダウングレードや、既存のリソースの共有や、ウィンドウズ（Ｗｉｎｄｏｗｓ）レジストリの更新などを必要とする場合がある。ドライバのマージも同様に取り扱われる。一部の変更は、特に、リブート（reboot）が必要な場合や、ローカルデスクトップイメージの部分の交換にピボット論理が使用される場合は、最初に、図３のステージングエリア３１５ｂなどのステージングエリアにダウンロードまたは統合される。
【００６１】
いくつかの実施形態では、例えばウィンドウズ（Ｗｉｎｄｏｗｓ）ＶＳＳユーティリティを使用するスナップショットイメージを使用して、マージプロセスを支援する。
基本層ＢＩ１を有するデバイスＤ１によって更新されたアプリケーション層ＡＬ１を、それ自体の基本層ＢＩ２を有する別のデバイスＤ２にマージすると、以下の論理が適用される。
【００６２】
・Ｄ２のＣＳＳクライアントは、Ｄ１のすべてのファイルの管理表（manifest）をダウンロードし、ＢＩ２のＣＳＳサーバからのＤ１のシステム・レジストリ・ハイブ（system registry hive）は、対象デバイスには追加されない（管理表およびレジストリ・ハイブは、ＢＩ１とＡＬ１の両方を含む）。
【００６３】
・以下のように、Ｄ２のダウンロードされたファイル管理表およびレジストリ・ハイブを修正して、「マージされたイメージ」を作成する。
１．ＢＩ１に存在し、ＢＩ２には存在しないエントリは取り除かれる。
【００６４】
２．ＢＩ２に存在するエントリ（ポリシーによって定義することができる特定のエントリを除く）は既存のエントリの上部に追加される。
・Ｄ２のローカルファイルシステムは、Ｄ２上に作成されたＶＳＳスナップショットを使用してスキャンされ、Ｄ２のファイルのローカルの管理表を作成する。
【００６５】
・Ｄ２のＣＳＳクライアントは、マージされたファイル管理表とローカルの管理表のデルタを計算し、「デルタ管理表」を作成する。
・Ｄ２のＣＳＳクライアントは、デルタ管理表内のＤ２では利用可能ではないファイルを、専用保護ディレクトリであるステージングエリアにダウンロードする。また、マージされたレジストリ・ハイブもステージングエリアに入れる。
【００６６】
・また、ＣＳＳクライアントは、Ｄ２をブートする前に、特定のマージ動作も実行する。これらの動作は、「シム（shim）」によって実装され、ウィンドウズ（Ｗｉｎｄｏｗｓ）特有のデータベースのマージおよびアプリケーションコンフリクトの取り扱いに対する役割を有する。
【００６７】
・次いで、ＣＳＳクライアントは、ブートするようにマシンに指示し、ブート時間ＣＳＳアプリケーション（「ピボット」動作）を実行して、ファイルおよびマージされたレジストリ・ハイブをステージングエリアから所定の位置に移動させ、ＡＬ１およびＢＩ２を有する計算されたマージイメージを含むようにＤ２のローカルファイルシステムを配置する。
【００６８】
・ブート後、ＣＳＳクライアントは、ポストブート（post-boot）「シム」を実行し、オンライン方式でいかなる追加のウィンドウズ（Ｗｉｎｄｏｗｓ）データベースもマージすることによって、マージ動作を完了することができる。
【００６９】
上記で述べられるように、いくつかの事例では、「シム」の使用を通じて、特別な追加論理を使用することができる。シムは、実行システムにおいて定義された事象の前後に実行される論理／命令を含むコード・ハンドラである。シムは、システムへの異なるフック（hook）と関連付けられ、始動、プレアップロード（pre-upload）、プレピボットブート（pre-pivot boot）の際など、あるＣＳＳ事象の発生の際に実行される。アクティブシムは、ポリシーを介して構成され、実行システムに動的にロードすることができる。アクティブシムを使用して、基本イメージに対する更新のマージ、ドライバおよび同様のもののロードに対する特別な取り扱い、ならびに、異なるオペレーティングシステムバージョンへの移行などを支援することができる。また、シムは、２つの異なるオペレーティングシステムバージョンのマージを取り扱うこともでき、同マージは、ファイルシステムおよびレジストリの単なるマージ以上のものを伴う場合がある。
【００７０】
例えば、例示的な一実施形態では、ウィンドウズ（Ｗｉｎｄｏｗｓ）を使用すると、ソフトウェアシムが実行され、アプリケーションプログラムの追加および取り除きが行われ、レジストリが適正に更新される。より具体的には、ウィンドウズ（Ｗｉｎｄｏｗｓ）は、インストールされたアプリケーションのリストをレジストリに維持する。現時点で実行されている同期化動作が既存のアプリケーションをより新しいバージョンと交換するものであれば、特別な取り扱いが必要とされ、その理由は、単に新しいキーを追加することによって新しいレジストリエントリをマージすることは、アプリケーションの１つのバージョンを更新されたバージョンに交換する代わりに、同じプログラムの複数のバージョンをもたらすためである。この問題を解決するため、ＣＳＳシムは「プレブート」事象にフックされ、その結果、ＣＳＳは、ステージングエリアで単純なマージ（naive merge）を実行し、次いで、デバイス・リブートが起こる前に２つのアプリケーションバージョンをクリーンアップすることができる。コンフリクトがあれば、オリジナルの基本イメージのコンテンツが優勢となる。
【００７１】
他の例として、シムを使用して、アプリケーションのライセンス関連のレジストリ・キーを更新するか、または、ウィンドウズ（Ｗｉｎｄｏｗｓ）レジストリの特別なＣＳＳレジストリ値を提供し、ＣＳＳによって制御される特別なフォルダにＯＥＭ提供ドライバをプレロードすることによって同ドライバをマージし、要望に応じて、ＣＳＳドライバストア全体（entire CSS driver store）をダウンロードし（ローカルの基本イメージに既にインストールされているドライバを混乱させることなく）、ブートプロセスの関連時間にウィンドウズ（Ｗｉｎｄｏｗｓ）のＡＰＩを使用してネットワークコンポーネントをレジストリにインストール／マージすることおよび同様のことを行うことができる。
【００７２】
以下は、２つのウィンドウズ（Ｗｉｎｄｏｗｓ）インスタンスおよび含まれるアプリケーションを適正にマージするため、ＣＳＳクライアントによって使用される主要なマージメカニズムのリストである。
【００７３】
・ウィンドウズ（Ｗｉｎｄｏｗｓ）ドライバストアをマージするためのシム
・（ファイアウォール、ＶＰＮに対する）ウィンドウズ（Ｗｉｎｄｏｗｓ）ネットワークコンポーネントをマージするためのシム
・追加／削除プログラムデータベースをマージおよび重複除外するためのシム
・ＷＭＩリポジトリをマージするためのシム
・アプリケーション特有のライセンス（例えば、オフィス２０１０（Ｏｆｆｉｃｅ  ２０１０））を取り扱うためのシム
・ウィンドウズ（Ｗｉｎｄｏｗｓ）比較データベースをマージするためのシム
・マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）のヘルプデータベースをマージするためのシム
・選択されたレジストリ値の単純ではない（non-naive）レジストリ・マージ
・ウィンドウズ（Ｗｉｎｄｏｗｓ）マシン（主にポリシーベースの）からハードウェア特有の識別子を抽出するための論理
・ウィンドウズ（Ｗｉｎｄｏｗｓ）マシン（主にポリシーベースの）から一時的なログデータをフィルタリングするための論理
・コンフリクトの際に、ＰＥファイル（例えば、ＤＬＬ）の最も高いバージョンを選択するための論理
・ユーザがインストールしたアプリケーションによって必要とされるＰＥファイルを保存するための論理
・ウィンドウズ（Ｗｉｎｄｏｗｓ）マシンのマージの際に、ユーザ設定およびデータの上書きを避けるための論理
・アプリケーションレベルとモジュールレベルの両方においてアプリケーションコンフリクトを検出して避けるための報告ツール（例えば、ＤＬＬ）
いくつかの事例では、例えば、新しい／対象デバイスのオペレーティングシステムおよびアプリケーションが、リベース用に作成されたリーンＯＳの基本イメージ（lean OS base image）と完全に異なる場合、ＣＳＳは、図２のＣＶＤ２３１に関して説明されるように、ユーザコンテンツの複製は提供しないが、同期化のみを提供することができる。これらの事例に対し、ＣＳＳは、ユーザコンテンツ４３０のみを同期化するユーザコンテンツ同期化シナリオ４０３を提供する。ユーザコンテンツの第１の同期化は、サーバＣＶＤに格納されたユーザコンテンツをデバイス上に既に存在するいかなるユーザコンテンツともマージするため、それ自体の複製は必要ない。あるいは、ＣＶＤのユーザファイルが、指定された対象デバイス上に存在するユーザファイルとマージされる場合、ユーザコンテンツ層の複製は、上記で指定されるように実行することができる。
【００７４】
いくつかの事例では、ＣＳＳによって提供されるテンプレートの基本イメージから新しいＶＭを迅速に提供するため、ＣＶＤ層化アーキテクチャを活用することが可能である。テンプレートの基本イメージは、ＶＭインフラストラクチャにプッシュダウンし、「リンクされた複製」としてＶＭインフラストラクチャによって保持することができ、「リンクされた複製」により、仮想化インフラストラクチャは、ストレージリソースを最小限に使用して、新しいＶＭにイメージを非常に素早く回転させることができる。すなわち、基本イメージの１つのコピーのみがＶＭグループに対して保持される。次いで、ＣＳＳは、リンクされた複製能力を使用して複製された基本イメージをＣＶＤの上層にオーバーレイすることができ、ＣＶＤの上層は、ＣＳＳメカニズムを使用して複製され、アプリケーションおよび潜在的なユーザコンテンツを含む。
【００７５】
同期化
デバイスが複製された時点で、ＣＳＳは、その後、「同期アップ（Sync Up）」または「同期ダウン（Sync Down）」などの１つまたは複数の同期化動作を使用して、すべてのＮ個の複製の同期化を保持することに対する責任を有する。様々な実施形態では、システムは、連続的で透過的な完全マシン／完全プロファイル双方向同期化をサポートする。ここでは、双方向は、サーバＣＶＤに対する更新が、アクティブデバイスのプッシュされた更新によって、または、別のデバイスもしくはＣＳＳサーバからのサーバＣＶＤに対する更新によって起こり得るという概念を指す。
【００７６】
例示的な実施形態の目的のため、以下の事実が想定される。
・ユーザは、通常、一度に１つのデバイスを使用して作業するが、時折、複数のデバイス（例えば、デスクトップとスマートフォン）を並行して使用することができる。
【００７７】
・各ユーザは、少数のデバイスを有する。
・アクティブデバイス間の転送は、１日に最高で数回起こることが予想される。
・デバイスの使用を「終えた」際にそのことをシステムに通知するようにエンドユーザに要求することは不可能である。
【００７８】
・同期化方法は、ＣＶＤを共有するすべてのデバイスが常に接続されていることを想定することはできない。例えば、ラップトップは、その同期化を終了する前にオフラインになる場合がある。ここでは、接続されるとは、ＣＳＳサーバへの接続を指し、「オンライン」（例えば、インターネットで通信している）かどうかに関係ない。
【００７９】
・ユーザが同じ複製セットから新しいデバイスに切り替える際（同じＣＶＤと結合されるデバイス）、ユーザは、最小遅延で素早く、新しいデバイスを使用して作業し始めることができるはずである。
【００８０】
これらの考慮事項を考慮に入れると、例示的なＣＳＳ同期化方法は、以下の通り機能する。
いかなる時点においても、ＣＶＤデバイスグループからの１つのデバイスが「アクティブ」または「マスタ」デバイスとして示される。デバイスは、ユーザが積極的にそのデバイス上で作業していることをＣＳＳが検出した時点で、ＣＳＳがアクティブな役割をデバイスに割り当てることによってアクティブ状態になる。ＣＳＳは、マウスの動きやキーボードアクティビティを含む相互作用を検出する（例えば、特定する、決定する、モニタするなど）ことによって、ユーザが積極的に作業していることを検出することができる。ログインを検出したり、デバイスハードウェアタイプに関するヒューリスティクス（heuristics）を使用したりするなどの他の方法も使用することができる。ＣＳＳクライアントは、頻繁にまたは定期的に、そして、連続的にさえ、そのようなアクティビティをモニタすることができる。いくつかの実施形態では、デバイス間でのアクティブな役割の激しい行き来（thrashing back and forth）を避けるため、新しいデバイスに切り替える前にある時間閾値を通過する必要がある。一実施形態では、アクティブな役割を有するデバイスは、サーバＣＶＤへの変更のアップロード（任意の層から）が認められた唯一のデバイスである。この実施形態によれば、アクティブデバイスは、ＣＳＳクライアントを通じて、サーバＣＶＤへの、デバイスで行われたローカルでの変更の定期的なアップロードを実行する。
【００８１】
非アクティブデバイス（アクティブな役割が割り当てられていないデバイス）は、ＣＶＤのサーバコピーに対する更新を実行しないが、オンライン状態の場合は、そのＣＳＳクライアントを通じて、アクティブデバイスによって行われた更新を受信する。更新のこのプロアクティブなプッシュ（proactive push）は、非アクティブデバイスがアクティブ状態になり、完全に更新されるのに要する時間を削減する。ＣＳＳは、非アクティブデバイスがローカルで「システムレベル」（基本イメージ、アプリケーション層など）変更を実行すること（新しいアプリケーションをインストールする、オペレーティングシステムを更新するなど）を阻止する。例示的な実施形態は１つのデバイスのみがユーザによって積極的に使用されていると想定したため、この制限は容認可能である。しかし、非アクティブデバイスは、依然として、デバイス上でローカルにユーザファイルおよびデータを更新することができ、その場合、この実施形態によれば、複数のデバイスはサーバコピーに対して同時更新を実行しないが、ＣＳＳは、ユーザファイルの変更を実行する複数のデバイスに対処できなければならない。むしろ、ローカルでの更新は、非アクティブデバイスが後にアクティブ状態になると、サーバＣＶＤとマージされる。サーバＣＶＤからプッシュダウンされた更新は、以下で説明されるように、マージされて、ローカルでの変更と他のデバイスによって行われた変更の両方が保存される。
【００８２】
別の実施形態では、アクティブデバイスがコンテンツに対する更新を実行したり、他のデバイスがユーザコンテンツに対する更新を実行したりするのと同時に、非アクティブデバイスは、ユーザコンテンツに対してのみ行われたローカルでの変更の定期的な更新を実行することができる。この後者の構成は、複数のデバイスを同時に使用することができることを想定する実施形態において役立つ。しかし、ＣＳＳサーバは、ロックメカニズムまたは他の何らかの特徴を使用して、例えば、連続的に保存された順番で、更新を実行することによって、サーバＣＶＤに対する更新を同期化する必要がある。アクティブデバイス（またはＣＳＳサーバ）のみがサーバＣＶＤに対する更新をプッシュすることができる場合は、この複雑さは不要である。
【００８３】
例示的な一実施形態では、以下の同期化論理がＣＳＳによって適用される。
定常状態では、デバイスＤ２がアクティブデバイスである場合、Ｄ２上のＣＳＳクライアントは、Ｄ２が更新を行ったかどうかを定期的にチェックし、ＣＳＳサーバと通信することによって、ＣＶＤのサーバコピーにデルタ（変更されたファイル）をアップロードする。ＣＳＳクライアントは、ユーザファイルとシステムファイルに対して異なるアップロード頻度を使用できることに留意されたい（例えば、ユーザファイルは、「今すぐ同期化」ポリシーの対象となり得るが、アプリケーション／システムファイルは、定期的に更新することができる）。また、アプリケーション／システムファイルに対しては、ある時点におけるスナップショットは、通常、一貫性を保証するために取り入れられるが、ユーザファイルに対しては、スナップショットの必要性はない（ユーザファイルは、以下で説明されるように、マージされる）ことも留意されたい。ＣＶＤと結合されたデバイスグループ内の別のデバイス（例えば、Ｄ１）がオンライン状態であれば、Ｄ１は、サーバＣＶＤ上のコンテンツがＤ１が有するバージョンより新しいかどうかを定期的にチェックし、そうである場合、同期ダウン動作をトリガすることになる。以下で説明されるように、非同期ダウン動作は、異なる層では異なる方法で機能し得る。
【００８４】
一例として、ユーザがデバイスＤ１に近づき、Ｄ１を使用して作業することを望んでいると想定する。以前、ユーザは、デバイスＤ２上で作業していたため、Ｄ２がアクティブデバイスとしてマークされていた。現段階において、Ｄ１上で実行中のＣＳＳクライアントは、Ｄ１上のユーザとの対話処理（user interaction）を検出し、アクティブな役割をＤ１に切り替えることを望んでいる。以下の工程がＣＳＳによって実行される。
【００８５】
１．Ｄ１のスナップショットのアップロード。この工程は、同期化が望ましくない結果をもたらす場合に、同期化動作以前の状態にＤ１を復元できることを保証する。
２．Ｄ２の同期アップ：以前にアクティブデバイスであったＤ２が接続されていれば、Ｄ２は、すべての保留中の変更をＣＶＤのサーバコピーと同期化する（例えば、Ｄ２上のＣＳＳクライアントは、同期アップを実行する）。多くの事例では、Ｄ２デバイスＣＶＤは、アクティブデバイスがＣＶＤに対して実行する定期的更新により、既にサーバＣＶＤに同期されていることに留意されたい。また、ＣＳＳは、データ重複除外方法を使用して、更新のチェックおよび転送を迅速に行い、システムレベル・インジケータを使用して、新しいアプリケーションがインストールされたかどうかを特定することも留意されたい。最終的に、Ｄ２によるアップロードは、ＣＶＤの新しいスナップショットを作成し、したがって、回復目的のために使用される、Ｄ１によって行われるアップロードとは衝突しないことに留意されたい。
【００８６】
３．Ｄ１の同期ダウン。Ｄ１は、サーバＣＶＤからデルタ更新をダウンロードする。デルタ更新は、変更されたファイルを指す。
同期アップを実行している間、ＣＳＳは、ネットワーク上でのデータの移動を最適化する技術を使用することができる。例えば、以下の技術を使用することができる。
【００８７】
同期アップ
１．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、システム状態を捕捉し、潜在的な修正を特定し、それらの修正をデルタ（Delta）１に置く（place）。
【００８８】
２．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、潜在的な修正に対するシグネチャを計算し、潜在的な修正に対するシグネチャを現ＣＶＤシグネチャと比較し、変更されたファイルを特定し、それらの変更されたファイルをデルタ２に置く。
【００８９】
３．デルタ２内のユニークな各ファイルＦに対し、
ａ．このエンドポイントかまたは他のエンドポイントによってファイルＦが既に同期化されているかどうかチェックする。
【００９０】
ｂ１．同期化されている場合、同期アップを省略し、ＣＳＳサーバ上に論理参照を作成する。
ｂ２．同期化されていない場合、ファイルＦの各ブロックＢに対し、
このエンドポイントかまたは他のエンドポイントによってブロックＢが既に同期化されているかどうかチェックする（例えば、他のファイルの一部として）。
【００９１】
同期化されている場合、特定のブロックに対する同期アップを省略し、ＣＳＳサーバ上でローカルにデータをコピーする。
同期化されていない場合、ブロックデータを転送する。
【００９２】
４．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、同期アップを完了し、変更されたファイルをＣＶＤの新しいバージョンとして格納する。
【００９３】
同期ダウン
１．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、システム状態を捕捉し、潜在的な修正を特定し、それらの修正をデルタ１に置く。
【００９４】
２．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、潜在的な修正に対するシグネチャを計算し、潜在的な修正に対するシグネチャを現在のＣＶＤシグネチャと比較し、変更されたファイルを特定し、それらの変更されたファイルをデルタ２に置く。
【００９５】
３．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、最後の同期時点以降にＣＶＤに対して実行された同時修正のリストをＣＳＳサーバから要求する。
【００９６】
４．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、表１で説明されるコンフリクト解決表に従ってどのファイルおよびバージョンが「取得される（win）」かを計算し、それらのファイルおよびバージョンをデルタ３に置く。
【００９７】
５．デルタ３内のユニークな各ファイルＦに対し、
ａ．このエンドポイントによってファイルＦが既に同期化されているかどうかチェックする。
【００９８】
ｂ１．同期化されている場合、同期ダウンを省略し、ローカルにデータをコピーする。
ｂ２．同期化されていない場合、ファイルＦの各ブロックＢに対し、
このエンドポイントによってブロックＢが既に同期化されているかどうかチェックする（例えば、他のファイルの一部として）。
【００９９】
同期化されている場合、特定のブロックに対する同期ダウンを省略し、ローカルにデータをコピーする。
同期化されていない場合、ブロックデータを転送する。
【０１００】
６．エンドポイントデバイス（エンドポイントデバイス上で実行中のＣＳＳクライアント）は、同期ダウンを完了し、必要ならば、リブートする。
同期アップおよび同期ダウン動作は、ユーザファイル、ユーザ設定およびシステム＆アプリケーションを含む、ＣＶＤ層または要素のいずれに対する更新も含み得ることに留意されたい。しかし、ダウンロードはすべての層に対して実行されるが、システムはユーザファイルの変更とシステム／アプリケーションレベルの変更とを区別するため、実行システムで変更を同期化する実際の動作は、あらゆる同期化動作に対して実行されるわけではない。システム／アプリケーションレベルの変更は、遅れて実行することができるが、ユーザコンテンツレベルの変更は、ほぼリアルタイムで取り入れることができる。
【０１０１】
具体的には、ＣＳＳは、様々なタイプのファイルに対して、以下の同期化を実行する。
・ユーザファイルのライブ同期化
ＣＳＳは、ユーザファイルの「ライブ同期化」を実行する。すなわち、ファイルは、複製動作に対するものと同じ方法に従ってマージされる。ユーザファイルのマージについては、表１を参照して説明される。
【０１０２】
・ユーザ設定の遅延同期化
この同期化動作は、エンドポイントデバイス上での変更を適用するため、「ユーザログオフ／ログオン」シーケンスを必要とする。したがって、待ち時間およびエンドユーザの混乱を低減するため、同期化動作は、ユーザ設定が行われるのを待つことはない。後の時点で、ユーザ設定が変更されれば、ユーザは、ダイアログボックス、バルーン、ポップアップウィンドウなどのユーザインタフェース制御を通じてなど、新しいユーザ設定を適用するため、場合によりログオフおよびログオンを行うように求められ得る。ユーザ設定を複製する事例と同様に、ユーザ設定の同期化は、新しいアクティブデバイスの設定で、非アクティブデバイスの設定を上書きすることを伴う。
【０１０３】
・システムおよびアプリケーションの変更の遅延同期化
この同期化動作は、デバイスの再起動を必要とする。したがって、この動作もまた延期される。ユーザは、引き続き作業することができ、システム変更を適用するため、そのような変更が起こった場合、何らかの時点でシステムを再起動するように促されることがある。再起動の際、デバイスは、以前のイメージと異なり得る更新されたイメージコピーを含むことに留意されたい。具体的には、ユーザコンテンツの同期化が変更をマージする間、システムおよびアプリケーションの同期化は、複製動作に関して説明されるように、既存のローカルコピーを上書きする。例えば、完全な復元の場合、ドライバ層以外のすべての層が上書きされ、アプリケーションレベルの復元（リベース動作）の場合、ドライバライブラリおよび基本イメージ（ＯＳ）層が保存され、すべてのアプリケーションが上書きされる。
【０１０４】
システム提供アプリケーション（および、完全な復元の場合、オペレーティングシステム）の変更が起こらなかった場合にシステムレベルでの不要な同期化を除外するため、ＣＳＳは、ソース（サーバＣＶＤ）上のアプリケーションリストと対象デバイス上のアプリケーションリストが同一かどうかをチェックし、同一である場合、ＣＳＳは、システムレベルの同期化を全く実行しない。このヒューリスティックは、ＣＳＳがシステムファイルにおける各変更に対する不要な同期化を行うのを防ぐ。
【０１０５】
・ハードウェア依存性の要素またはマシン識別子は同期化されない。
・以前のアクティブデバイスは同期アップされない。
その最新のシンクアップ動作を実行する前に以前のアクティブデバイス（この例では、Ｄ２）がオフラインとなった事例を扱うため、技術が提供される。この事例では、システムに対して行われた変更は、それ以降Ｄ１によってシステムに行われた変更との互換性を有さない場合は、失われることがあるというリスクがある。しかし、プロトコル中の第１の工程は、Ｄ１（以前のアクティブデバイス）のスナップショットをアップロードする工程を伴うため、ユーザは、望まれる場合は、Ｄ１によってシステムに行われた変更を元に戻すことができる。
【０１０６】
複製動作と同期化動作の両方に対するユーザファイルのライブ同期化は、ユーザコンテンツに関連するローカルファイルを、サーバＣＶＤで知られている変更されたユーザファイルとマージすることによって実行される。一実施形態では、変更されたユーザファイルは、ユーザコンテンツを示すサーバＣＶＤイメージのエリアとユーザコンテンツを示すローカルＣＶＤイメージのエリアとの違い（「デルタ」）を演算することによって、ＣＳＳによって決定される。ユーザコンテンツを示すＣＶＤイメージのエリアは、「Ｕエリア」と呼ばれ、図４ではＵエリア４１４として示される。（Ｍエリアまたはマシンエリアは、ＣＶＤイメージ全体からＵエリアを差し引いたものであり、図４ではＭエリア４１５として示される。）「管理表」またはファイルのリストは、サーバＣＶＤおよび各ローカルＣＶＤに対して保持される。それに加えて、最後にアップロードされた管理表は、ＣＳＳクライアントによって維持される。ライブ同期化の場合、検討するデルタは、Ｕエリアに関するサーバＣＶＤ管理表とローカル管理表との違いである。
【０１０７】
各デバイス上のＣＳＳクライアントは、例えば図３の状態データ３１２内のローカルＭエリアの現在のバージョンおよびローカルＵエリアの現在のバージョンを追跡する。ＣＳＳサーバは、ＣＶＤイメージ全体に対する単一のバージョンを保持する。しかし、いくつかの実施形態では、ＣＳＳサーバは、ユーザコンテンツとイメージの残りに対して別々のバージョン番号を保持する。非アクティブデバイス上では、ライブマージ動作（live merge operation）は、ローカルＵバージョンがＣＳＳサーバのＣＶＤバージョンより低い（古い）場合に起動される。アクティブデバイス上では、ライブマージ動作は、サーバＣＶＤに対するファイルのリストとローカルＣＶＤに対するファイルのリストとの違いがＵエリア内のファイルに関与する（例えば、Ｍエリアに対する変更は行われていない）場合にのみ起動される。
【０１０８】
一実装形態によれば、Ｕエリアのデルタが決定された後、Ｕエリアのデルタによって指定されたファイルは、ＣＳＳクライアントによって、ローカルデバイスのステージングエリア（例えば、図３のステージングエリア３１５ｂ）にダウンロードされる。ファイルは、通常、優先順位で（例えば、米国特許第８，３０１，８７４号明細書に記載されるものなどのストリーミング優先メカニズムまたは他の優先メカニズムに従って）ダウンロードされる。次いで、表１に従って、（ＣＳＳサーバのＣＶＤ管理表からの）これらのファイルの各々のシグネチャは、ローカル管理表の対応するファイルのシグネチャ（それが存在する場合）や、このデバイスによってアップロードされた最後の管理表の対応するファイルのシグネチャ（それが存在する場合）と比較され、（ファイルアクションごとの）ファイルの配置が決定される。ファイルのシグネチャは、例えば、コンテンツを表すユニークなハッシュ値を演算するため、任意の公知のメカニズムを使用して演算することができる。大まかに言えば、表１によって扱われた配置は、異なる２つのファイルが、結果として得られるマージされたＵエリアに並んで共存することを保証する。各ファイルの決定は、通常、ファイルをダウンロードした直後に実行されるが、そのような決定は、異なる時間に行うことも可能である。ステージングエリアのファイルがマージされた時点で、ＣＳＳクライアントは、サーバＣＶＤバージョンと等しくなるように、ローカルＵエリアのバージョンを更新する。
【０１０９】
【表１】
0005976840.tif 000002
表１では、「ローカル」列は、ローカル管理表によって特定されたファイルのシグネチャを指す。「最後にアップロード」列は、このデバイスによってＣＳＳサーバにアップロードされた最後の管理表によって特定されたファイルのシグネチャを指す。「サーバ」列は、ＣＳＳサーバのＣＶＤ管理表によって特定されたファイルのシグネチャを指す。「０」エントリは、ファイルが存在しないことを意味する。「１」、「２」または「３」エントリは、理論上は、異なるシグネチャを指定する。
【０１１０】
いくつかの実施形態では、デバイスのネイティブオペレーティングシステムによってサポートされたネイティブスナップショットは、ダウンロードするべきもの（デルタ）に関する決定における支援に使用することができる。例えば、ＶＳＳツールは、ウィンドウズ（Ｗｉｎｄｏｗｓ）においてこの目的のために使用することができる。また、いくつかの実施形態では、デルタ内のユーザファイルのすべてをステージングエリアに予めロードし、次いで、それらユーザファイルのすべてを１つずつ処理する代わりに、配置のために各ファイルのシグネチャをチェックし、次いで、別々のダウンロード要求を各ファイルに対して生成することができる。他の実施形態では、ファイルが変更されたかどうかを決定するため、ファイルの「最後に修正」タイムスタンプがファイルシグネチャの代わりに使用される。また、いくつかの実施形態では、マージを実行する間、基本イメージ更新などの他のアクティビティを一時的に却下することができる。また、２つの（またはそれ以上の）デバイスが同じファイルへの変更を行っている場合は、ファイルを重複させて新しい名前で保存する回数に対する限度を設定することが重要になり得る。
【０１１１】
いくつかの実施形態では、複数の（非アクティブ）デバイスからサーバＣＶＤへのほぼ連続的な更新は、ユーザデータに対してサポートされる。すなわち、非アクティブデバイスのみならずアクティブデバイスも、アクティブ設計を指定する必要なく、サーバＣＶＤのユーザコンテンツの更新が許可される。この設計は、図１に示される動作１０５および１０６によって実施される。このシナリオでは、２つのデバイスが同時にアップロードを試みていることをＣＳＳが検出すると、ＣＳＳは、それらのうちの１つを拒否するように選択し得る。拒否されたデバイスは、最終的に、サーバＣＶＤバージョンがローカルバージョンより高いことを検出し、ユーザコンテンツのライブ同期化アクション（およびＵエリアマージ）を実行する。
【０１１２】
通常は遅延同期化動作を使用する、非アクティブデバイスへのシステムおよびアプリケーション変更の同期化は、例えば状態データエリア３１２において、ローカルＣＶＤに対して格納されたＭエリアの現在のバージョンがサーバＣＶＤバージョンより低い（古い）場合に起こる。それに加えて、いくつかの実施形態では、ＣＳＳクライアントは、この同期化プロセスに従事する前に、大幅な変更が起こったことを検出する。例えば、ＣＳＳクライアントは、サーバＣＶＤのアプリケーションのリストがローカルＣＶＤアプリケーションリストおよび保留中のアプリケーションリストと異なることを決定することができる（それらの変更はステージエリアに格納されるが、未だ統合されていない）。他の例として、ＣＳＳクライアントは、かなりの量のレジストリユーザ設定が変更されたこと、ユーザプロファイルが追加または除去されたこと、ＩＴ管理者がこの同期化動作を要求していること、ローカルＣＶＤ上のＭエリアが更新されているのはこれが初めてであることなどを決定することができる。
【０１１３】
この同期化動作（Ｍエリアの同期ダウン）は、図３のステージングエリア３１５ｂなどのステージングエリアに対し、Ｍエリアのシステムのみの復元を行うことによって実行される。この復元動作は、以前にステージングエリアにロードされたが、未だシステムと統合されていないいかなるファイルも考慮に入れて取得する。ダウンロードが完了した時点で、ＣＳＳクライアントは、更新が可能であることをユーザに通知する。例えば、ＣＳＳクライアントは、ダイアログボックス、ポップアップウィンドウ、テキストメッセージまたはユーザに提示される同様のものなどのユーザインタフェース制御を引き起こすことができる。次いで、ユーザは、システムを再起動（リブート）して変更を適用するか、または、それらを無視するかを自由に行う。次いで、ＣＳＳクライアントは、主な事象ループに戻り、ＣＶＤ情報を調査して、次のアクションを決定する。いくつかの実施形態では、リブートするための時間は、多量の時間が経過した際に最新の更新を実施するために使用される。また、Ｍエリアのシステムのみの復元を使用する代わりに、ＣＳＳは、例えば、上記で論じられるシムを使用して、基本イメージ層にＭエリアの「クリーンアップ」を適用することを選択することができる。
【０１１４】
ユーザによって２つ以上のデバイスが同時に使用されている場合、ＣＳＳは、上記で説明されるＵエリアのライブマージを使用した、重みの低いユーザコンテンツ同期化の簡易な展開の方が、ＣＶＤ層の残りの同期化の維持より理にかなっていると決定することができる。そのような事例では、ＣＳＳは、アクティブデバイスと非アクティブデバイスとの違いを見極める必要はない。
【０１１５】
また、ＣＶＤの複製および／または同期化のプロセスにおいて、ＣＳＳは、デバイスがサーバＣＶＤのコピーのコンテンツの格納に十分なディスクスペースを有さないことを検出することができる。そのような事例では、ＣＳＳは、エンドポイントが、常駐するイメージのほんの一部（最大で対象デバイスのディスクサイズまで）のみを使用して動作したり、コンテンツの一部を「残したり」できるようにするキャッシュモード能力をサポートすることができる。常駐しないコンテンツへのアクセスをユーザが必要とする場合は、ＣＳＳは、ＣＶＤのサーバコピーからオンデマンドのそのコンテンツをフェッチし、エンドポイントデバイスから最近アクセスされていないファイルを立ち退かせる。立ち退きは、ファイルシステムからファイルを削除し、そのファイルを「オフライン」ファイルと交換することを伴う場合があり、それにより、ファイルに対するスタブがファイルシステムに維持されるが、ファイルコンテンツは実際には格納されない。ユーザがオフラインであるファイルへのアクセスの要求を行うと、システムは、その要求を妨害し、サーバからオンデマンドのファイルをフェッチする。
【０１１６】
複製および同期化動作を迅速に行うため、ＣＳＳは、同期化を完了する前にあらかじめすべてのコンテンツを同期化しなければならないというよりむしろ、オンデマンドでコンテンツの一部をストリーミングする能力をサポートする。コンテンツの大半はユーザによってまれにしかアクセスされないが、同期化コンテンツの量が非常に大きなものであり得るため、これは、ユーザコンテンツの複製および同期化に対して特に重要である。したがって、ＣＶＤプロファイルの一部として、より一般的に使用されるファイルのプロファイルを維持することによって、ＣＳＳは、一般的に使用されるファイルの小さな「作業セット」を決定し、新しい（または同期化）デバイスに対してそれらのセットのみをストリーミングすることができる。この方法は、複製および同期化動作の高速完了を促進することになる。作業セットが同期化された時点で、ファイルの残りを、オンデマンドでまたはバックグラウンドで、新しい／更新されたデバイスに配送することができる。
【０１１７】
ＣＳＳを実装するための計算装置
複製および同期化に対して本明細書に記載される技術は、１つまたは複数の専用計算装置によって実装することができる。専用計算装置は、技術を実行するために配線接続することも、技術を実行するように持続的にプログラムされた１つまたは複数の特定用途向け集積回路（ASIC:application-specific integrated circuit）またはフィールドプログラマブルゲートアレイ（FPGA:field programmable gate array）などのデジタル電子デバイスを含むことも、ファームウェア、メモリ、他の記憶装置またはそれらの組合せにおいてプログラム命令に従って技術を実行するようにプログラムされた１つまたは複数の汎用ハードウェアプロセッサを含むこともできる。また、そのような専用計算装置は、技術を達成するために、カスタム配線論理、ＡＳＩＣまたはＦＰＧＡをカスタムプログラミングと組み合わせることもできる。専用計算装置は、デスクトップコンピュータシステム、携帯用のコンピュータシステム、ハンドヘルドのデバイス、ネットワークデバイス、または、技術を実装するために配線および／もしくはプログラム論理を組み込む他の任意のデバイスであり得る。
【０１１８】
図５は、複製および同期化システムの実施形態を実施するための計算機システムの例示的なブロック図である。計算機システム５００は、１つまたは複数のサーバおよび／またはクライアント計算機システムを備え得、分散された場所に広げることができる。それに加えて、示される各ブロックは、特定の実施形態に応じて適切に、１つまたは複数のそのようなブロックを表すことも、他のブロックと組み合わせることもできる。その上、ＣＳＳの様々なブロックは、標準（例えば、ＴＣＰ／ＩＰ）または専用のプロセス間通信メカニズムを使用して互いに通信し合う１つまたは複数のマシン上に物理的に存在し得る。
【０１１９】
計算機システム（またはコンピュータシステム）５００は、情報を伝達するためのバス５０２または他の通信メカニズムと、処理情報のためにバス５０２と結合されるハードウェアプロセッサ５０４とを含む。ハードウェアプロセッサ５０４は、例えば、汎用マイクロプロセッサであり得る。
【０１２０】
また、コンピュータシステム５００は、プロセッサ５０４によって実行されるべき情報および命令を格納するためにバス５０２と結合されたランダムアクセスメモリ（RAM:random access memory）または他の動的記憶装置などのメインメモリ５０６も含む。また、メインメモリ５０６は、プロセッサ５０４によって実行されるべき命令を実行する間、一時的な変数または他の中間情報を格納するために使用することもできる。そのような命令は、プロセッサ５０４がアクセス可能な非一時的な記憶媒体に格納される場合、コンピュータシステム５００を、命令で指定された動作を実行するようにカスタム化された専用マシンにする。
【０１２１】
コンピュータシステム５００は、プロセッサ５０４のための静的情報および命令を格納するためにバス５０２と結合された読み取り専用メモリ（ROM:read only memory）５０８または他の静的記憶装置をさらに含む。磁気ディスクまたは光ディスクなどの記憶装置５１０は、情報および命令を格納するために提供され、バス５０２と結合される。
【０１２２】
コンピュータシステム５００は、コンピュータユーザに情報を表示するために、バス５０２を介して、ブラウン管（CRT:cathode ray tube）などのディスプレイ５１２と結合することができる。英数字および他のキーを含む入力デバイス５１４は、プロセッサ５０４に情報およびコマンド選択を伝達するために、バス５０２と結合される。別のタイプのユーザ入力デバイスは、プロセッサ５０４に方向情報（direction information）およびコマンド選択を伝達するため、および、ディスプレイ５１２上でのカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向示キーなどのカーソル制御５１６である。この入力デバイスは、通常、２つの軸、すなわち、第１の軸（例えば、ｘ）および第２の軸（例えば、ｙ）における２自由度を有し、それにより、デバイスは、平面における位置を指定することができる。
【０１２３】
コンピュータシステム５００は、コンピュータシステムと組み合わせてコンピュータシステム５００を専用マシンにするかまたはそのようにプログラムする、カスタム化された配線論理、１つもしくは複数のＡＳＩＣもしくはＦＰＧＡ、ファームウェアおよび／またはプログラム論理を使用して、本明細書に記載される技術を実装することができる。一実施形態によれば、本明細書の技術は、メインメモリ５０６に含まれる１つまたは複数の命令の１つまたは複数のシーケンスをプロセッサ５０４が実行することに応答して、コンピュータシステム５００によって実行される。そのような命令は、記憶装置５１０または他のコンピュータ可読媒体５０９などの別の記憶媒体からメインメモリ５０６に読み取ることができる。メインメモリ５０６に含まれる命令のシーケンスの実行により、プロセッサ５０４は、本明細書に記載されるプロセス工程を実行する。代替の実施形態では、配線回路は、ソフトウェア命令の代わりにまたはソフトウェア命令と組み合わせて使用することができる。
【０１２４】
「記憶媒体」という用語は、本明細書で使用される場合、特定の方式でマシンに動作を行わせるデータおよび／または命令を格納するいかなる非一時的な媒体も指す。そのような記憶媒体は、不揮発性媒体および／または揮発性媒体を含み得る。不揮発性媒体は、例えば、記憶装置５１０などの光または磁気ディスクを含む。揮発性媒体は、メインメモリ５０６などの動的メモリを含む。記憶媒体の一般的な形態は、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープまたは他の任意の帯磁データ記憶媒体、ＣＤ−ＲＯＭ、他の任意の光学データ記憶媒体、孔パターンを有する任意の物理的な媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、他の任意のメモリチップまたはカートリッジを含む。
【０１２５】
記憶媒体は、伝送媒体とは異なるが、伝送媒体と共に使用することができる。伝送媒体は、記憶媒体間での情報の伝達に参加する。例えば、伝送媒体は、バス５０２を備えるワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。また、伝送媒体は、電波および赤外線データ通信の間に生成されるものなどの音波または光波の形態を取ることができる。
【０１２６】
様々な形態の媒体は、実行のためにプロセッサ５０４に、１つまたは複数の命令の１つまたは複数のシーケンスを運ぶことに関与し得る。例えば、命令は、最初は、リモートコンピュータの磁気ディスクまたはソリッドステートドライブで運ぶことができる。リモートコンピュータは、命令を動的メモリにロードし、モデムを使用して、電話回線上で命令を送信することができる。コンピュータシステム５００にローカル設置されたモデムは、電話回線上でデータを受信し、赤外線送信機を使用してデータを赤外線信号に変換することができる。赤外線検出器は、赤外線信号で運ばれるデータを受信することができ、適切な回路は、バス５０２上にデータを置くことができる。バス５０２は、メインメモリ５０６にデータを運び、プロセッサ５０４は、メインメモリ５０６から命令を回収して実行する。メインメモリ５０６によって受信された命令は、場合により、プロセッサ５０４による実行の前または後に、記憶装置５１０上に格納することができる。
【０１２７】
また、コンピュータシステム５００は、バス５０２と結合される通信インタフェース５１８も含む。通信インタフェース５１８は、ローカルネットワーク５２２に接続されるネットワークリンク５２０と結合する双方向データ通信を提供する。例えば、通信インタフェース５１８は、統合デジタルサービス通信網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデム、または、対応するタイプの電話回線にデータ通信接続を提供するためのモデムであり得る。別の例として、通信インタフェース５１８は、互換性を有するＬＡＮにデータ通信接続を提供するためのローカルエリアネットワーク（ＬＡＮ）カードであり得る。また、ワイヤレスリンクも実装することができる。任意のそのような実装形態では、通信インタフェース５１８は、様々なタイプの情報を表すデジタルデータストリームを運ぶ電気、電磁または光信号を送信および受信する。
【０１２８】
ネットワークリンク５２０は、通常、１つまたは複数のネットワークを通じて他のデータデバイスにデータ通信を提供する。例えば、ネットワークリンク５２０は、ローカルネットワーク５２２を通じて、ホストコンピュータ５２４への接続またはインターネットサービスプロバイダ（ＩＳＰ）５２６によって動作されるデータ機器への接続を提供することができる。これを受けて、ＩＳＰ  ５２６は、現在では一般的に「インターネット」５２８と呼ばれるワールドワイドパケットデータ通信ネットワークを通じて、データ通信サービスを提供する。ローカルネットワーク５２２とインターネット５２８は両方とも、デジタルデータストリームを運ぶ電気、電磁または光信号を使用する。コンピュータシステム５００へおよびコンピュータシステム５００からデジタルデータを運ぶ様々なネットワークを通じる信号、ネットワークリンク５２０上の信号および通信インタフェース５１８を通じる信号は、伝送媒体の例示的な形態である。
【０１２９】
コンピュータシステム５００は、ネットワーク、ネットワークリンク５２０および通信インタフェース５１８を通じて、メッセージの送信およびプログラムコードを含むデータの受信を行うことができる。インターネットの例では、サーバ５３０は、インターネット５２８、ＩＳＰ  ５２６、ローカルネットワーク５２２および通信インタフェース５１８を通じて、アプリケーションプログラム用に要求されたコードを送信することができる。
【０１３０】
受信されたコードは、受信された際、および／または、後の実行のために記憶装置５１０もしくは他の不揮発性記憶装置に格納された際に、プロセッサ５０４によって実行することができる。
【０１３１】
前述から、例示を目的として特定の実施形態が本明細書で説明されてきたが、本開示の精神および範囲から逸脱することなく、様々な変更を行うことができることが理解されよう。例えば、本明細書で論じられる複製および同期化を実行するための方法およびシステムは、ウィンドウズ（Ｗｉｎｄｏｗｓ）アーキテクチャ以外の他のアーキテクチャに適用可能である。また、本明細書で論じられる方法およびシステムは、異なるプロトコル、通信媒体（光学、ワイヤレス、ケーブルなど）およびデバイス（ワイヤレスハンドセット、電子手帳、携帯情報端末、携帯用のＥメールマシン、ゲームマシン、ポケットベル（登録商標）、タブレット、モバイルデバイス、および、ＧＰＳ受信機などのナビゲーションデバイスなど）にも適用可能である。
【０１３２】
本明細書に含まれるヘッダは、整理のみを目的とし、いかなる方法でも本開示を限定することを意図しない。
【図１】
0005976840.tif 000003
【図２】
0005976840.tif 000004
【図３】
0005976840.tif 000005
【図４】
0005976840.tif 000006
【図５】
0005976840.tif 000007