(57)【特許請求の範囲】
【請求項１】
モバイルデバイスデータをクラウドストレージに格納するための方法であって、その方法は、
ユーザーの第１のモバイルデバイスが、前記第１のモバイルデバイスに関連するデータを前記クラウドストレージにバックアップするための所定のコンディションを検出すること、
前記所定のコンディションを検出することに応答して、前記第１のモバイルデバイスによりホストされた複数のサードパーティアプリケーションについて複数の単一のファイルを生成するための動作を自動的に実施すること
を含み、前記第１のモバイルデバイスによりホストされた前記複数のサードパーティアプリケーションの各サードパーティアプリケーションについて実施される動作のセットは、
前記第１のモバイルデバイス上に格納されたそれぞれのサードパーティアプリケーションに関連するデータを前記第１のモバイルデバイスが識別することであって、前記それぞれのサードパーティアプリケーションに関連するデータがバイナリデータおよびメタデータを含み、前記バイナリデータは、前記それぞれのサードパーティアプリケーションの設定、前記それぞれのサードパーティアプリケーションの履歴、および前記それぞれのサードパーティアプリケーションのコンテンツを含み、前記バイナリデータは、前記それぞれのサードパーティアプリケーションのメタデータと分離されており、かつ異なる形式を有している、前記識別すること、
前記第１のモバイルデバイスが、前記それぞれのサードパーティアプリケーションのバイナリデータおよびメタデータを、前記それぞれのサードパーティアプリケーションの単一のファイルに集約すること、
前記それぞれのサードパーティアプリケーションの単一のファイルを前記クラウドストレージ内のアップロードサーバーにバックアップすることであって、前記それぞれのサードパーティアプリケーションの前記バイナリデータは、前記それぞれのサードパーティアプリケーションのメタデータから分離され、前記クラウドストレージの第１のクラウドストレージロケーションに格納されることになっており、前記それぞれのサードパーティアプリケーションの前記メタデータは、前記第１のクラウドストレージロケーションの付加された別個のストレージアドレスで更新され、前記クラウドストレージの第２のクラウドストレージロケーションに格納されることになっている、前記バックアップすること
を含み、
前記複数のサードパーティアプリケーションの複数の単一のファイルは、前記複数のサードパーティアプリケーションの各サードパーティアプリケーションのバイナリデータおよびメタデータを前記ユーザーの第２のモバイルデバイスに後でリストアするために、前記クラウドストレージに格納されている、方法。
【請求項２】
前記それぞれのサードパーティアプリケーションのバイナリデータは、前記それぞれのサードパーティアプリケーションについての全データを含む、請求項１に記載の方法。
【請求項３】
前記第１のモバイルデバイスは、前記それぞれのサードパーティアプリケーションに関連するデータをバックアップするかどうかを、
前記第１のモバイルデバイスに格納された前記それぞれのサードパーティアプリケーションに関連する格納されたバイナリデータを識別すること、
前記それぞれのサードパーティアプリケーションに関連する以前にバックアップされたバイナリデータを識別すること、
前記格納されたバイナリデータと前記以前にバックアップされたバイナリデータとの間の差を計算すること、
前記差を閾値と比較すること
により判定する、請求項１または２に記載の方法。
【請求項４】
前記差が前記閾値以上である場合、前記第１のモバイルデバイスは、前記それぞれのサードパーティアプリケーションに関連するデータをバックアップすることを決定する、請求項３に記載の方法。
【請求項５】
前記第１のモバイルデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、前記複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての前記対応するバイナリデータおよび前記対応するメタデータは、１回のアップロードで前記第１のモバイルデバイスからバックアップされる、請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
前記それぞれのサードパーティアプリケーションに関連するデータは、送信前に前記第１のモバイルデバイス上で完全には複製されずに、直接ストリームされる、請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記所定のコンディションは、所定のアップロードスケジュールを含む、請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記所定のコンディションは、前記それぞれのサードパーティアプリケーションによって報告される前記それぞれのサードパーティアプリケーションのデータへの変更の検出を含む、請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
前記所定のコンディションは、前記第１のモバイルデバイスが前記第１のモバイルデバイスのユーザーからバックアップ要求を受信することを含む、請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
前記単一のファイルは、「．ｔａｒ」ファイルタイプを有する、請求項１に記載の方法。
【請求項１１】
前記サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む、請求項１乃至１０のいずれか１項に記載の方法。
【請求項１２】
前記第２のクラウドストレージロケーションへの参照を前記第１のモバイルデバイスにおいて受信することをさらに含む、請求項１乃至１１のいずれか１項に記載の方法。
【請求項１３】
バックアップされた前記バイナリデータおよび前記メタデータは、前記クラウドストレージへのアクセスを有するユーザーインタフェースを介してユーザーがアクセス可能である、請求項１乃至１２のいずれか１項に記載の方法。
【請求項１４】
前記バイナリデータおよび前記更新されたメタデータが前記第２のモバイルデバイスにダウンロードされることにより、前記第１のモバイルデバイス上の前記サードパーティアプリケーションのデータが第２のモバイルデバイス上のサードパーティアプリケーションのデータと同期化される、請求項１乃至１３のいずれか１項に記載の方法。
【請求項１５】
前記バイナリデータおよび前記メタデータは、前記クラウドストレージ内のアップロードサーバーに送信され、前記アップロードサーバーは、前記バイナリデータを前記第１のクラウドストレージロケーションに書き込み、前記更新されたメタデータを書き込みのために前記第２のクラウドストレージロケーションに送信する、請求項１乃至１４のいずれか１項に記載の方法。
【請求項１６】
前記アップロードサーバーは、前記第２のクラウドストレージロケーションから前記更新されたメタデータを読み出して前記第２のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記更新されたメタデータを送信する、請求項１５に記載の方法。
【請求項１７】
請求項１乃至１６のいずれか１項に記載の方法を実行するためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
一般に、本開示は、データをクラウドストレージにバックアップし、データをクラウドストレージからモバイルデバイスにリストアするためのシステムおよび方法に関する。
【背景技術】
【０００２】
グローバルな使用パターンがモバイルデバイスのコンテンツ消費、作成および管理に移行するにつれて、モバイルデバイスの使用が増加している。しかしながら、モバイルデバイスはデータ格納に関して貧弱なプラットフォームである。モバイルデバイスは、容易に損傷するか、または動作不能になり、結果的にローカルに格納されたコンテンツやデータが失われることがしばしばある。モバイルデバイスに欠陥が生じた後のアクセス不能なデータおよびコンテンツは、不十分または技術的に非効率的なデータバックアップ機能を含む技術的な理由による可能性がある。
【０００３】
さらに、モバイルデバイスのユーザーは、デバイスを頻繁にアップグレードする。新たなデバイスの設定では、アプリケーションのデータや関連する設定が失われるため、ユーザーエクスペリエンスの妨げとなることがよくある。これにより、ユーザーは新たなデバイスを最初からセットアップする必要があり、多数のユーザー入力が必要になり、新たなデバイスのユーザーインタフェースコンポーネントの負荷が増加する可能性がある。さらに、ユーザーが新たなデバイスを最初から作成するように要求すると、テキストメッセージ、写真、アプリケーションの設定、セキュリティ設定または他の適切なサードパーティアプリケーションデータなど、サードパーティアプリケーションに関連する重要なデータが失われる可能性がある。既存のバックアップ技術は、サードパーティアプリケーションデータの特定のアスペクトのみをバックアップするキーと値のペアの使用に依存することがしばしばある。サードパーティアプリケーションをクライアントデバイスにリストアするためにキーと値のペアを使用すると、アプリケーションの設定がリストアされるが、サードパーティアプリケーションの追加のコンテンツはリストアされない可能性がある。このように、設定をバックアップしてキーと値のペアとして格納したサードパーティアプリケーションは、ユーザーの設定に従ってサードパーティアプリケーション環境をリストアすることになるが、サードパーティアプリケーションは、ユーザーによるサードパーティアプリケーションにおいて作成あるいは格納されたサードパーティアプリケーションコンテンツを失うこととなる。さらに、既存のシステムでは、サードパーティアプリケーションの開発者にサードパーティアプリケーションをバックアップを許可するように特別に設定するように要求するか、ユーザーにバックアップを選択するか、または手動でバックアップを開始するように要求する可能性がある。
【発明の概要】
【０００４】
サードパーティアプリケーションに関連するデータのバックアップおよびリストアをより効率的かつ信頼性の高いものにするために、アプリケーション毎をベースにアプリケーションデータのクラウドストレージへの全データバックアップのためのシステムおよび方法が開示されている。全データバックアップは、サードパーティアプリケーションに関連する全てのデータを含み、そのデータは、セキュリティ設定、環境、アプリケーション履歴、ユーザープリファレンス、アプリケーションコンテンツなどの設定に関連する全てのバイナリデータおよびメタデータ、およびサードパーティアプリケーションを実行するか、またはサードパーティアプリケーション環境を作成したりするために使用されるサードパーティアプリケーションに関連する他のデータを含む。結果として、全データバックアップの効率改善の一例は、必要なすべてのデータをバックアップおよびリストアするのに必要なユーザー入力の数を減らすことであり、このことは、デバイスのユーザーインタフェースコンポーネントに対する負荷を軽減する。モバイルデバイスのディスプレイによって利用される電力は、モバイルデバイスの総エネルギー使用量のかなりの部分を占めることがあり、したがって、ディスプレイがアクティブである時間を短縮することは、電力消費を低減させる結果となり得、バッテリ電力の使用を最小限に抑えることが重要であるモバイルデバイスの場合、特に有利である。データバックアップは、バックアップが行われるべきであると決定されたときに、クライアントデバイスのバックアップフレームワークによって定期的に開始されてもよい。各アプリケーションに関するサードパーティアプリケーションデータは、クラウドストレージのロケーションにアップロードされる。特に、サードパーティアプリケーションデータは、バイナリデータおよびメタデータの２つの形式のデータを含み得る。この場合、バイナリデータは、メタデータとは別個に格納されてもよい。バイナリデータのストレージロケーションを含む識別子は、メタデータに付加されて、付加されたメタデータがバイナリデータのクラウドストレージアドレスへの参照を含むようにしてもよい。バイナリデータとメタデータは、プロパティが異なり、かつ最適なストレージソリューションが異なり得る。例えば、バイナリデータストレージは、大量のデータを格納するための手段と、バイトの迅速な連続読み取りアクセスとを必要とする。バイナリストレージは、検索可能であっても検索可能でなくてもよく、またそうでなければインデックス付けされていてもされていなくてもよい。メタデータストレージは、階層関係を形成し、かつ関連するフォルダおよびファイルにわたる所有権データなどのメタデータの伝播を形成するとともに、非バイナリデータの迅速な格納に関連する機能を有する。メタデータストレージはまた、格納されたメタデータを検索するための手段を含み、かつ予想されるユーザーインタフェース応答時間をサポートするために、そのような検索を迅速に処理するように設けられている。
【０００５】
ユーザーがサードパーティアプリケーションデータをクライアントデバイスにリストアすることを望む場合、ユーザーは、サードパーティアプリケーションデータをクラウドストレージからクライアントデバイスにリストアするデバイスリストアプロセスを開始することができる。サードパーティアプリケーションデータは、設定とコンテンツの両方を含む全データバックアップからリストアされるため、データの損失が低減する。サードパーティアプリケーション、アプリケーション環境、およびサードパーティアプリケーションコンテンツはバックアップからリストアされ、新たなデバイスへのシームレスな移行が実現される。クラウドストレージに格納された全データバックアップからリストアすることで、インストールされたアプリケーション、設定、オプションで写真、テキスト、オーディオファイルまたはビデオファイルなどの追加のコンテンツを含め、デバイスを以前のデバイスと同じ状態に戻すことができる。
【０００６】
一態様において、サードパーティアプリケーションデータをクラウドストレージに格納するための方法は、クライアントデバイスに格納されたサードパーティアプリケーションに関連するデータをクラウドストレージサーバーにアップロードすることを決定することを含む。サードパーティアプリケーションに関連するデータは、バイナリデータとメタデータの両方を含む。この方法はさらに、サードパーティアプリケーションのバイナリデータを第１のクラウドストレージロケーションに格納することを含む。第１のクラウドストレージロケーションはストレージアドレスを有し、メタデータは、そのストレージアドレスを含むように更新される。そしてこの方法は、更新されたメタデータを第１のクラウドストレージロケーションとは異なる第２のクラウドストレージロケーションに格納することを含む。
【０００７】
いくつかの実施形態において、サードパーティアプリケーションのバイナリデータは、サードパーティアプリケーションについての全データを含む。いくつかの実施形態において、クライアントデバイスは、クライアントデバイスに格納されているサードパーティアプリケーションに関連する格納されたバイナリデータを識別することによって、データをアップロードするかどうかを決定する。いくつかの実施形態において、クライアントデバイスは、サードパーティアプリケーションに関連する以前にアップロードされたバイナリデータもまた識別し、格納されたバイナリデータと以前にアップロードされたバイナリデータとの間の差を計算する。クライアントデバイスは、その差を閾値と比較する。差が閾値以上である場合、クライアントデバイスは、サードパーティアプリケーションに関連するデータをアップロードすることを決定する。
【０００８】
いくつかの実施形態において、クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられる。各サードパーティアプリケーションについての対応するバイナリデータおよび対応するメタデータは、１回のアップロードでクライアントデバイスからアップロードされる。いくつかの実施形態において、サードパーティアプリケーションに関連するデータは、データのダウンロード前にクライアントデバイス上で完全には複製されない。いくつかの実施形態において、クライアントデバイスは、所定のアップロードスケジュールに基づいてサードパーティアプリケーションに関連するデータをアップロードすることを決定する。いくつかの実施形態において、クライアントデバイスは、サードパーティアプリケーションによって報告されるサードパーティアプリケーションへの変更の検出に基づいてサードパーティアプリケーションに関連するデータをアップロードすることを決定する。いくつかの実施形態において、クライアントデバイスは、クライアントデバイスのユーザーからバックアップ要求を受信したときに、サードパーティアプリケーションに関連するデータをアップロードすることを決定する。
【０００９】
いくつかの実施形態において、クライアントデバイスは、サードパーティアプリケーションのバイナリデータおよびメタデータを単一のファイルに集約し、そのファイルをクラウドストレージ内のアップロードサーバーに送信するように構成される。アップロードサーバーは、バイナリデータをメタデータから分離し、第１のクラウドストレージロケーションに格納するためにバイナリデータを送信し、更新されたメタデータを取得するために第１のクラウドストレージロケーションのストレージアドレスをメタデータに付加し、更新されたメタデータを第２のクラウドストレージロケーションに格納するために送信するように構成される。
【００１０】
別の態様において、クライアントデバイスへのサードパーティアプリケーションデータのリストアを提供するための方法は、サードパーティアプリケーションに関連するデータをクライアントデバイスに提供するかどうかを決定することを含む。サードパーティアプリケーションに関連するデータは、ストレージアドレスを有する第１のクラウドストレージロケーションに格納されたバイナリデータと、第２のクラウドストレージロケーションに格納されたメタデータとを含む。この方法はさらに、メタデータを使用して第１のクラウドストレージロケーションのストレージアドレスを決定することと、第１のクラウドストレージロケーションからクライアントデバイスにバイナリデータを提供することとを含む。
【００１１】
いくつかの実施形態において、サードパーティアプリケーションのバイナリデータは、サードパーティアプリケーションについての全データを含む。いくつかの実施形態において、クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納する。複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての対応するバイナリデータは、１回のダウンロードでクライアントデバイスにダウンロードされる。いくつかの実施形態において、クライアントデバイスは、クライアントデバイスのユーザーからリストア要求を受信したときに、サードパーティアプリケーションに関連するデータをダウンロードすることを決定する。いくつかの実施形態において、サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む。いくつかの実施形態において、クライアントデバイスは第１のクライアントデバイスであり、バイナリデータおよび更新されたメタデータは第２のクライアントデバイスにダウンロードされて、第１のクライアントデバイス上のサードパーティアプリケーションデータが第２のデバイス上のサードパーティアプリケーションデータと同期化される。
【００１２】
いくつかの実施形態において、バイナリデータおよびメタデータは、クラウドストレージ内のダウンロードサーバーに送信され、ダウンロードサーバーは、第１のクラウドストレージロケーションにバイナリデータを以前に書き込んでおり、かつ第２のクラウドストレージロケーションに書き込むためにメタデータを以前に送信している。いくつかの実施形態において、ダウンロードサーバーは、第２のクラウドストレージロケーションから更新されたメタデータを読み出して第２のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスにメタデータを以前に送信している。いくつかの実施形態において、別のサードパーティアプリケーションに関連するデータは、第３のクラウドストレージロケーションに格納されたメタデータを含み、かつバイナリデータを含んでいない。いくつかの実施形態において、サードパーティアプリケーションデータのリストアをクライアントデバイスに提供するための方法は、別のサードパーティアプリケーションに関連するデータをクライアントデバイスに提供するかどうかを決定することと、別のサードパーティアプリケーションに関連するメタデータを、第３のクラウドストレージロケーションに格納された一組のキーと値のペアとして識別することと、一組のキーと値のペアをクライアントデバイスに提供することも含む。
【図面の簡単な説明】
【００１３】
【図１】例示的な一実施形態による、クラウドストレージサービスにデータをアップロードするためのシステムのブロック図である。
【図２】例示的な一実施形態による、データアップロードプロセスを実行するために協働するように構成されたクライアントデバイスおよびサーバーのブロック図である。
【図３】例示的な実施形態による、サードパーティアプリケーションデータをアップロードする例示的な方法を示すブロック図である。
【図４】例示的な実施形態による、クラウドストレージシステムからサードパーティアプリケーションデータをデバイスにリストアするための例示的な方法を示すブロック図である。
【図５】例示的な一実施形態による、クラウドストレージにサードパーティアプリケーションデータを格納するための方法のフローチャートである。
【図６】例示的な一実施形態による、サードパーティアプリケーションデータのクライアントデバイスへのリストアを提供するための方法のフローチャートを示す。
【発明を実施するための形態】
【００１４】
本開示の上記および他の特徴は、その本質およびその様々な利点を含めて、以下の詳細な説明を添付の図面と併せて考察することで、より明らかとなるであろう。
本明細書で説明するシステムおよび方法の全体的な理解を提供するために、クライアントデバイス上のサードパーティアプリケーションデータのバックアップおよびリストアのためのシステムを含む特定の実施形態をここで説明する。しかしながら、当業者であれば、本明細書に記載されたシステムおよび方法は、対象となるアプリケーションに適切となるように適合および変更されてもよく、本明細書に記載されたシステムおよび方法は、他の適切なアプリケーションにおいて採用されてもよく、そのような他の追加および変更はその範囲から逸脱するものではないことを理解されたい。一般に、本明細書で説明されるコンピュータ化されたシステムは、ハードウェア、ファームウェア、およびソフトウェアで構成されたコンピュータ、マイクロプロセッサ、論理デバイスまたはプロセッサなどの、１つまたは複数のコンピュータ化された方法を実行する処理デバイスを含む１つまたは複数のエンジンを含むことができる。
【００１５】
本明細書で説明するように、本開示は、サードパーティアプリケーションに関連する全データのバックアップを実行するシステムおよび方法を提供する。サードパーティアプリケーション設定に関連するキーと値のペアの代わりに、設定、履歴、およびコンテンツを含むサードパーティアプリケーションに関連する全データがクラウドストレージにアップロードされる。サードパーティアプリケーションに関連するバイナリデータとメタデータは、クラウドストレージにアップロードすることでバックアップされる。サードパーティアプリケーションに関するメタデータには、ファイル名、サイズ、パスコードまたは識別番号、ファイルの履歴、ディスクリプション、サードパーティアプリケーションが設計されたオペレーティングシステムの現在のバージョン、およびその他の静的メタデータが含まれる。サードパーティアプリケーション固有のデータに加えて、他のファイルおよびデータも同様の方法でバックアップされ得る。そのようなデータは、メモリカード、ＳＤカード、ダウンロードフォルダ、または個々のアプリケーションデータに関連付けられていない他のデータレポジトリを含むことができる。さらに、クラウドストレージにバックアップされるこれらのファイルおよびその他のファイルおよびデータは、クラウドベースのファイルストレージシステムのユーザーインタフェースにおいて完全に操作可能かつ可視のファイルとしてユーザーに公開される可能性がある。
【００１６】
サードパーティアプリケーションデータのバックアップは、所定のスケジュールに従って、またはサードパーティアプリケーションデータに変更がある場合に発生し得る。例えば、所定のスケジュールは、１日に１回、１週間に１回、１ヶ月に１回、または任意の他の適切な頻度等、一定間隔ごとにサードパーティアプリケーションデータのバックアップを要求する。別の例として、サードパーティアプリケーションデータに対して少なくとも閾値量の変更が加えられたと判定されたときに、自動的にバックアップが開始されてもよい。特に、サードパーティアプリケーションデータに対する変更は、内部サードパーティアプリケーションのデータベース又は設定に対する変更を含み得る。いくつかの実施形態において、サードパーティアプリケーションに対する変更は、アプリケーションに関連するフォルダに記録される。これらの変更にクライアントデバイスのバックアップフレームワークがアクセスして、アップロードが必要かどうかを決定し得る。
【００１７】
いくつかの実施形態において、クライアントデバイスは、ユーザーがバックアップに関連する設定をカスタマイズすることを可能にするように構成することができる。例えば、クライアントデバイスが携帯電話である場合、携帯電話がセルラーネットワークに接続されているときに、そうすることでユーザーのデータプランにおいてデータを消費するために、携帯電話がサードパーティアプリケーションデータをクラウドストレージにアップロードすることは望ましくないことがある。この場合、クライアントデバイスは、モバイルデバイスが無線インターネットのネットワークのような高速で信頼性の高い、および／または安価なネットワークに接続されているときにのみバックアップを実行するように構成することができる。あるいは、ユーザーは、セルラーネットワークを介してバックアップを可能にするための１つまたは複数のオプションを選択してもよい。バックアップは、複数のサードパーティアプリケーションに関して必要なバックアップがグループ化され、複数のサードパーティアプリケーションに対するすべてのアップロードがアップロードセッション中に順番に実行されるように構成することができる。サードパーティアプリケーションデータが変更されると、複数のサードパーティアプリケーションに対して複数の必要なバックアップが継続的に発生することもある。バックアップは、モバイルデバイスが電源に接続されているとき、または夜間などのアイドル時またはピーク時以外の使用時など、特定のデバイス要件が満たされたときにのみに発生するように構成することもできる。
【００１８】
図１は、データをクラウドストレージサービスにアップロードするためのシステム１００のブロック図を示す。このシステムは、クライアントデバイス１０１、アプリケーション１０２ａ、１０２ｂ（一般に、アプリケーション１０２）、クラウドストレージ１０３、第１のクラウドストレージロケーション１０４、および第２のクラウドストレージロケーション１０６を含む。クライアントデバイス１０１は、関連するデータを含む複数のサードパーティアプリケーションを含む。データは、バイナリデータおよびメタデータの両方を含み得る。クライアントデバイスは、アップロードが行われるべきであるということを決定する。アップロードが行われるべきであるという決定は、ユーザーアクション、時限アップロード、またはユーザーが開始したか、または開始していないサードパーティアプリケーションおよびアプリケーションデータへの変更に基づくアップロードによってトリガされてもよい。クライアントデバイス１０１は、サードパーティアプリケーションのバイナリデータおよびメタデータをクラウドストレージ１０３に送信する。サードパーティアプリケーションのバイナリデータは、第１のクラウドストレージロケーション１０４に格納され、サードパーティアプリケーションのメタデータは、クラウドストレージ１０３内の第２のクラウドストレージロケーション１０６に格納される。
【００１９】
データアップロード
図２は、協働してデータアップロードプロセスを実行するように構成されたシステム２００のブロック図である。システム２００は、クライアントデバイス２０１上の（例えば、「クライアント側」上の）バックアップフレームワーク２０８、バックアップトランスポート２１０、およびサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃと、サーバー２１６上（例えば、「サーバー側」上の）バックアップサーバー２１８、アップロードサーバー２２４、クラウドストレージサービス２０３、およびメタデータストレージ２２６を含む。クライアントデバイス２０１は、電話またはタブレットのようなモバイルデバイスを含むことができる。クライアントデバイス２０１は、本明細書ではしばしばモバイルデバイスであると説明されているが、当業者であれば、本開示のシステムおよび方法は、デスクトップコンピュータ、ラップトップ、または任意の他の適切なコンピューティングデバイスを含む任意の数のコンピューティングデバイス上のアプリケーションデータをバックアップおよびリストアを実行するのに適用可能であることは理解されるであろう。クライアントデバイス２０１は、バイナリバックアップモジュール２０９を含むバックアップフレームワーク２０８と通信するサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃに関連するデータを格納する。バックアップフレームワーク２０８は、バックアップトランスポート２１０と通信する。バックアップフレームワーク２０８は、デバイスメモリ内に存在し、かつ所定のスケジュールを参照することによって、またはアプリケーションデータの変化の検出に応答して、サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃがバックアップを必要とするかどうかを決定するように構成される。バックアップフレームワーク２０８は、バイナリアプリケーションデータとサードパーティアプリケーションデータの以前のバックアップとを比較して、データに変更があるかどうかを判定できるように構成されている。これは、チェックサム計算によって、またはアプリケーション変更フォルダに記録されているアプリケーションの変更があるかどうかを判定することによって達成することができる。
【００２０】
クライアントデバイス２０１がバックアップの必要性があると判定した後、バイナリバックアップモジュール２０９は、アップロードされるアプリケーションデータを単一のファイルにアーカイブし、そのファイルをバックアップトランスポート２１０に送信する。図２におけるバックアップトランスポート２１０は、様々なバックアップ方法が使用できる２つの異なるデータタイプを含む。特に、図２に示すように、バックアップトランスポートは、キーと値のペア部２１３と、バイナリデータを含む全データバックアップ部２１２とを含む。一般に、本開示の範囲から逸脱することなく、他の適切なデータタイプを使用することができる。アプリケーションデータがバックアップフレームワーク２０８からバックアップトランスポート２１０に送信された後、クライアントデバイス２０１は、アップロードプロセスを開始するためにサーバー２１６を呼び出す。
【００２１】
図２に示すように、サーバー２１６は、アップロードサーバー２２４と、キーと値のペアのストレージ２２０およびビジネスロジックエージェント２２２を含むバックアップサーバー２１８と、クラウドストレージサービス２０３と、メタデータストレージユニット２２６とを含む。アップロードサーバー２２４は、アップロードされたバイナリデータを取り扱い、かつバックアップサーバー２１８内のビジネスロジックエージェント２２２を呼び出して、関連するメタデータの格納、および将来のリストア要求の間にデータを取得するために使用することができるロケーション参照の作成を開始するように構成される。バックアップサーバー２１８は、アップロードサーバー２２４から要求を受信し、これらの要求をクラウドストレージサービス２０３に渡し、クラウドストレージサービス２０３は、メタデータストレージ２２６に格納するためのメタデータを準備する。さらに、クライアントデバイスのバックアップに関連する構造化データは、キーと値のペアストレージ２２０に格納される。構造化データは、デバイスＩＤ、サードパーティアプリケーションＩＤ、およびアップロード方法の一部として受信されたクラウドストレージに格納されたサードパーティアプリケーションデータのストレージロケーションへの参照を含むことができる。構造化データは、クライアントデバイスタイプおよび製造年月日、最近のバックアップに関連するタイムスタンプ、およびクライアントデバイス２０１上のバックアップフレームワーク２０８のバージョンに関連する情報を含む追加の情報を含むことができる。
【００２２】
いくつかの実施形態において、サードパーティアプリケーションデータのアップロードは、一連のステップを経て達成される。これらのステップは、図２において記載された構成要素を用いて図３に図示および列挙される。
【００２３】
図３のステップ１において、クライアントデバイスのバックアップフレームワーク２０８によってデータアップロードの必要性が決定されると、バックアップを要求するサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃに関連する基本メタデータを有するバックアップ要求メッセージが生成される。バックアップ要求メッセージは、クライアントデバイス２０１からアップロードサーバー２２４に送信される。クライアントデバイスのバックアップフレームワーク２０８は、新たなバックアップを必要とする各サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃのためのタールボール（ｔａｒｂａｌｌ）（「．ｔａｒ」アーカイブファイル）を作成する。クライアントデバイスのバックアップトランスポート２１０は、バックアップ要求メッセージをアップロードサーバー２２４に渡すことによって、アップロードサーバー２２４へのサードパーティアプリケーションデータタールボールのアップロードを開始する。クライアントデバイスのバックアップトランスポート２１０はまた、アップロードサーバー２２４へのサードパーティアプリケーションデータアップロードに関連するメタデータを提供する。アップロードサーバー２２４は、標準のアップロード、バイナリ差分法、またはチャンク化アップロードまたは再開可能なアップロードを介してファイルを受信する。バイナリ差分アップロードを含む実施形態において、アップロードされるバイナリおよびメタデータは、クライアントデバイス２０１上に配置されたバイナリ差分ライブラリ２１４に準備されて（ｓｔａｇｅｄ）もよい。アップロードされるサードパーティアプリケーションデータは、チェックサム方法によって決定されて、クライアントデバイス２０１上のサードパーティアプリケーションデータと既存の格納されたデータとの間の差のみが、２つのデータファイル間の差を記述する構造と共にアップロードされる。
【００２４】
ステップ２において、アップロードサーバー２２４は、受信したサードパーティアプリケーションのバイナリデータをバイナリデータストレージ２２３に書き込む。バイナリデータストレージ２２８は、大量のバイナリデータを格納するように設計されたクラウドストレージロケーションである。バイナリデータストレージ２２８は、バイトへのアクセスを順次読み取り、呼び出されたロケーションに応答してバイトを提供することができる。サードパーティアプリケーションのメタデータは、第２のクラウドストレージロケーション（例えば、図２のメタデータストレージ２２６）に格納するために除去される。
【００２５】
ステップ３において、アップロードサーバー２２４は、アップロードされたサードパーティアプリケーションデータのファイルロケーションを含むサードパーティアプリケーションのバイナリデータ用のバイナリデータストレージロケーション参照を受信する。バイナリデータストレージロケーション参照は、サードパーティアプリケーションデータが格納されているバイナリデータストレージ２２８内のロケーションをルックアップするのに使用できる数値ストリングである。
【００２６】
ステップ４において、アップロードサーバー２２４は、サードパーティアプリケーションデータ用のバイナリデータストレージロケーション参照を、バイナリデータロケーション参照を複製するバックアップサーバー２１８内のビジネスロジックエージェント２２２に提供する。アップロードサーバー２２４はまた、サードパーティアプリケーションのメタデータをバックアップサーバー２１８に提供する。
【００２７】
ステップ５において、バックアップサーバー２１８は、格納されるバイナリデータに関連するサードパーティアプリケーションのメタデータと共に、バイナリデータストレージロケーション参照をクラウドストレージサービス２０３に渡す。バックアップサーバー２１８は、メタデータの正確な格納に必要なファイルおよびフォルダを作成する。クラウドストレージサービス２０３は、メタデータストレージ２２６にファイルを読み書きすることができる。
【００２８】
ステップ６で、クラウドストレージサービス２０３は、受信したサードパーティアプリケーションのメタデータおよびバイナリデータストレージロケーション参照を使用し、バイナリデータストレージロケーション参照をメタデータエントリに付加する。サードパーティアプリケーションのメタデータに追加のディスクリプタを付加して、サードパーティアプリケーションデータ用のストレージスペースをユーザーのストレージクォータに対してカウントしないような指示を追加することもできる。クラウドストレージサービス２０３は、サードパーティアプリケーションのメタデータをメタデータストレージ２２６に格納するための適切なエントリおよびフォルダを作成する。クラウドストレージサービス２０３は、サードパーティアプリケーションデータをメタデータストレージ２２６に書き込む。メタデータストレージ２２６は、メタデータを格納するために備えられたクラウドストレージである。
【００２９】
ステップ７において、メタデータストレージ２２６は、サードパーティアプリケーションのメタデータの格納に成功したことを示す成功信号を返す。成功信号は、成功信号がメタデータのロケーションを調べるために使用されるように、メタデータのロケーションへの参照を含む。
【００３０】
ステップ８において、クラウドストレージサービス２０３は、成功信号をバックアップサーバー２１８に渡し、バックアップサーバー２１８は成功信号を記録する。
ステップ９において、バックアップサーバー２１８は、成功信号をアップロードサーバー２２４に渡す。
【００３１】
ステップ１０において、アップロードサーバー２２４は、成功信号をクライアントデバイス２０１に返す。
バイナリデータは、アップロードサーバー２２４にアップロードされ、バイナリデータストレージ２２８に格納される。サードパーティアプリケーションデータのバッチ処理は、アップロードサーバー２２４で行われる。対応するメタデータには、バイナリデータストレージロケーションへの参照が付加され、かつメタデータストレージ２２６に格納される。メタデータストレージ２２６のロケーションにメタデータを格納することは、クラウドストレージサービス２０３によって支援される。メタデータが成功裏に格納された後、成功信号がメタデータストレージサービス２２６によって生成され、バックアップサーバー２１８に、アップロードサーバー２２４に、最終的にクライアントデバイス２０１に返送される。成功信号は、サードパーティアプリケーションデータがクラウドストレージに成功裏にアップロードされ、かつ格納されたことを示す。
【００３２】
いくつかの実施形態において、サードパーティアプリケーションデータは、アプリケーション毎にモバイルデバイスからクラウドストレージに単一のファイルとしてアップロードされる。単一のサードパーティアプリケーション（例えば、図２の２０２ａ、２０２ｂ、または２０２ｃ）のサードパーティアプリケーションデータは、「．ｔａｒ」形式のアーカイブファイルとしてアップロードされ得る。この形式のファイルは、本明細書ではタールボールと呼称される。少なくともアプリケーションベース毎にバックアップを実行すると、アップロードを成功させる可能性が高くなる可能性があるため効果的である。特に、変更を複数のサードパーティアプリケーションに対してまとめてバッチするのではなく、サードパーティアプリケーション毎に１つのファイルを一度にアップロードする方が好ましい場合がある。大きなファイルを含むアップロードは、小さなファイルを含むアップロードよりも失敗する傾向がある。アップロードに問題がある場合は、単一のサードパーティアプリケーションについてのアプリケーションデータのみを再アップロードする必要がある。このようにして、単一のサードパーティアプリケーションに関連するアプリケーションデータのみを含むアップロードは、より少ない時間で済み、かつアップロードがより効率的となる。
【００３３】
バックアップ中にサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃ毎に１回のファイルアップロードを使用することは、アップロードプロセスの前に一時的な格納領域をわずかしか必要としない。サードパーティアプリケーションデータのアップロードプロセスは、データがアップロード前にローカルキャッシュに複製されず、直接ストリームされるように実行されてもよい。したがって、バックアップペイロード全体がディスク上に決して作成されることはない。アップロードされたサードパーティアプリケーションデータが一貫していることを保証するために、各サードパーティアプリケーションのデータアップロードを処理してシングルパスとしてアップロードすることができる。２回以上のパスでサードパーティアプリケーションデータをアップロードすると、２回のパスの間にサードパーティアプリケーションデータに変更があると、一貫しないアップロードプロセスが作成される可能性がある。
【００３４】
いくつかの実施形態において、サードパーティアプリケーションデータを１回のパスでアップロードすることは困難であり得る。これは、アップロードサーバー２２４が、アップロードの開始時に提供される、サーバーに送信されるバイト範囲のマニフェストを必要とする場合に発生し得る。このような場合、マニフェストを計算するためにサードパーティアプリケーションデータファイルからフルパスを作成する必要があるため、シングルパスアップロードは実行できない。この場合、処理のためにファイルをステージングするのに十分なディスク容量がない可能性がある。アップロード準備のためにサードパーティアプリケーションデータファイルの２回目にパスは、最初のパスと同じサードパーティアプリケーションのデータスナップショットであることが保証されないことがある。差分マニフェスト情報（ｄｉｆｆ  ｍａｎｉｆｅｓｔ  ｉｎｆｏｒｍａｔｉｏｎ）をインターリービングすることによって、そのような場合がサポートされ得る。例えば、シングルパスアップロードスクリプトは、｛サーバーのコピーバイト０  １００の使用、これらの２０バイトのアップロード、サーバーバイト１２０〜１５０の使用｝の形式で指定することができる。
【００３５】
クラウドストレージにバックアップされたサードパーティアプリケーションデータは、アプリ毎のバックアップデータとして格納される。サードパーティアプリケーションデータの最新の改訂版のみがクラウドストレージ内のロケーションに格納される。任意選択で、データのアップロードは、変更されたデータのみがクラウドストレージにアップロードされるバイナリ差分法によって達成されてもよい。バイナリ差分法を使用して、サードパーティアプリケーションデータの現在の状態が以前にアップロードされたバックアップと比較され、サードパーティアプリケーションデータにどのような変更が生じたのかが判定される。現在のサードパーティアプリケーションデータと以前のサードパーティアプリケーションデータバックアップとの比較は、チェックサム方法によって達成されてもよい。このアプローチでは、サードパーティアプリケーションデータの最終アップロードのカスタムチャンクサイズに関するチェックサムは、クライアントデバイス上でローカルに計算される。生のサードパーティアプリケーションデータ全体をアップロードするのではなく、差分を示すデータのみをクラウドストレージにアップロードすることで、帯域幅を節約し、バックアップのアップロードに必要な時間を短縮することができる。したがって、バイナリ差分プロトコルを使用してアップロードするサードパーティアプリケーションデータへの変更を判定することで、サードパーティアプリケーション方式毎の１回のアップロードの効率が向上する。
【００３６】
いくつかの実施形態では、バイナリ差分法を使用して、サードパーティアプリケーションデータのアップロードを実行すべきかどうかを決定し、サードパーティアプリケーションデータにどのような変更が生じたか、およびクラウドストレージにアップロードすべきものを決定する。クライアントデバイスのバックアップトランスポートは、サードパーティアプリケーションデータからデータを読み取り、そのデータを段階的に処理する。クライアントデバイスのバックアップフレームワークは、少なくとも１つのチェックサムチャンクを格納する。クライアントデバイスのバックアップトランスポートが読み取る各バイト毎に、最後のＮバイトのローリングチェックサムが計算され、かつ最後のアップロードに関連するチャンクのチェックサムと比較される。サードパーティアプリケーションデータを最後にアップロードしたときのチャンクのチェックサムがサーバーに格納され、比較のためにダウンロードされる。新しく計算されたチェックサムと格納されたチェックサムとが一致しない場合、最も古いバイトがサーバーに送信される。一致した場合、チャンクはクラウドストレージにアップロードされない。
【００３７】
いくつかの実施形態において、サードパーティアプリケーションデータのバックアップは、自動的に設定され、かつ設定されたスケジュールに従って実行されるように構成される。サードパーティアプリケーションデータのバックアップおよびアップロードは、全てのサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃに自動的かつ共通であり、サードパーティアプリケーションの開発者は、このシステムでサードパーティアプリケーションデータをバックアップするためにサードパーティアプリケーション構成を何らかの方法で変更する必要がない。サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃの開発者は、サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃの構成の詳細またはマニフェストを変更することによって、バックアップからオプトアウトすることができる。全データバックアップが望ましくないサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃの例は、金融アプリケーション、パスワードストレージアプリケーションまたはパスワードストレージ認証者である。自動バックアップからオプトアウトした開発者のサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃは、ユーザーまたはサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃによって別の手動メカニズムによってバックアップされてもよい。
【００３８】
サードパーティアプリケーションデータがクラウドストレージにアップロードされて格納されると、サードパーティアプリケーションデータのバックアップは、ユーザーのビューから隠されても、ユーザーのクラウドストレージアカウントに関連付けられたままになっていてもよい。あるいは、サードパーティアプリケーションデータのバックアップは、クラウドストレージファイルシステム内のユーザーインタフェースを介してユーザーがアクセス可能であってもよい。ユーザーインタフェースを介してサードパーティアプリケーションデータのバックアップにアクセスすることにより、ユーザーは、クラウドストレージシステム内であってサードパーティアプリケーションデータまたは他のデータを変更または操作することができる。例えば、写真編集サードパーティアプリケーションに関連するデータのバックアップは、ユーザーのアカウントに関連するクラウドストレージファイルシステムのユーザーインタフェースを介してバックァアップファイルにおいてユーザーがアクセスおよび編集または操作し得る編集された写真または編集されていない写真を含み得る。ユーザーは、データのバックアップを削除するために、サードパーティアプリケーションデータのバックアップにアクセスすることもできる。
【００３９】
いくつかの実施形態において、サードパーティアプリケーションデータのバックアップは、クラウドストレージシステム内の階層的なフォルダに格納される。サードパーティアプリケーションのバイナリデータおよびメタデータは、ユーザーに関連付けられたフォルダ内に格納されてもよい。バックアップデータを含むフォルダは、クライアントデバイスおよびサードパーティアプリケーションが識別可能なように構成されている。これには、クライアントデバイス用のサードパーティアプリケーションデータバックアップに関連付けられたオブジェクトファミリールートフォルダ、クライアントデバイスＩＤ、格納されているサードパーティアプリケーションデータバックアップ、名前などのアプリケーションシグネチャ、場合によってはサードパーティのアプリケーションデータファイル用のタールボールが含まれ得る。オブジェクトファミリールートフォルダは、ユーザーのアカウントに関連付けられているにもかかわらず、ユーザーが使用できない場合がある。このフォルダは、イベントの同期中にも同期化されないことがある。
【００４０】
データのリストア
本開示のシステムおよび方法によれば、クラウドストレージに格納されているサードパーティアプリケーションデータをクライアントデバイス２０１にリストアすることができる。リストアパスを実施するために、サードパーティアプリケーションデータは、クライアントデバイス２０１によるコマンドに続いて取り出され得る。サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃのリストア中、アップロードサーバー２２４は、データをダウンロードするように構成される。この場合、アップロードサーバー２２４は、ダウンロードサーバー２３０と呼称される。クラウドストレージシステムからデバイスにサードパーティアプリケーションデータをリストアすることは、図２に記載のいくつかの構成要素を有する図４に示す以下のステップを使用してアプリケーションベース毎に行うことができる。
【００４１】
図４のステップ１において、デバイスのリストア時に、クライアントデバイス２０１のバックアップトランスポート２１０は、デバイスＩＤおよびサードパーティアプリケーションＩＤをバックアップサーバー２１８に送信することによって、サードパーティアプリケーションデータのダウンロードを開始する。これにより、クライアントデバイス２０１およびユーザーに関連するデータが要求されるサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃが特定される。
【００４２】
ステップ２において、バックアップサーバー２１８は、クライアントデバイス２０１からの識別情報及びサードパーティアプリケーションのデータリストア要求を受信すると、サードパーティアプリケーションデータの最後の成功したバックアップからの成功信号をクライアントデバイス２０１に返信する。成功信号は、メタデータストレージロケーションへの参照を含む。
【００４３】
ステップ３において、クライアントデバイスのバックアップトランスポート２１０は、ダウンロードサーバー２３０に接続し、ダウンロードサーバー２３０にメタデータストレージロケーション参照を有する成功信号を送信する。
【００４４】
ステップ４において、ダウンロードサーバー２３０は、メタデータストレージロケーション参照を使用して、メタデータストレージ２２６にサードパーティアプリケーションのメタデータを要求する。
【００４５】
ステップ５において、ダウンロードサーバー２３０は、サードパーティアプリケーションのメタデータと、サードパーティアプリケーションデータのバックアップ中にメタデータに付加されたバイナリストレージロケーション参照とを受信する。
【００４６】
ステップ６において、ダウンロードサーバー２３０は、バイナリストレージロケーション参照を使用してバイナリデータストレージ２２８にサードパーティアプリケーションのバイナリデータを要求する。
【００４７】
ステップ７において、サードパーティアプリケーションのバイナリデータがバイナリデータストレージ２２８から抽出され、ダウンロードサーバー２３０に送信される。
ステップ８で、ダウンロードサーバー２３０は、要求されたサードパーティアプリケーションのバイナリデータおよびメタデータをクライアントデバイスのバックアップトランスポート２１０に直接提供する。クライアントデバイスのバックアップトランスポート２１０は、配信されたデータをサードパーティアプリケーションデータのストレージに関連するクライアントデバイスのストレージ内の特定のロケーションに抽出する。データがデバイスにリストアされる各サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃは、データの格納のために指定されたクライアントデバイスのストレージ内の別個のロケーションを有することができる。したがって、クライアントデバイスのバックアップトランスポート２１０は、クライアントデバイス２０１上のサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃを実行し、すべてのサードパーティアプリケーション設定およびファイルをリストアする。
【００４８】
上述したリストア方法は、新たなデバイスを設定するためのセットアップ処理中に実行されてもよい。アカウントがクライアントデバイス２０１に追加されると、クライアントデバイスのバックアップフレームワーク２０８は、バックアップがクラウドストレージに既に格納されているかどうかをチェックすることができる。格納されていれば、サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃ毎にサードパーティアプリケーションデータがリストアされる。例えば、クライアントデバイス２０１は、サードパーティアプリケーション２０２ａ、２０２ｂまたは２０２ｃについてバックアップサーバー２１８に問い合わせる。バックアップサーバー２１８がクライアントデバイス２０１に成功信号を供給する場合、これは、アプリケーションのバックアップがクラウドストレージ内に存在することを示す。
【００４９】
特定の要求されたサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃに対するサードパーティアプリケーションデータのバックアップが存在することがリストア要求中に判定された場合、サードパーティアプリケーションデータをダウンロードするプロセスが開始される。バイナリデータストレージロケーション参照は、格納されたメタデータから取得される。バイナリデータストレージロケーション参照を使用してバイナリデータストレージ２２８内の適切なサードパーティアプリケーションのバイナリデータを発見すると、ダウンロードサーバー２３０によってタールボールファイル（「．ｔａｒ」アーカイブファイル）がバイナリデータストレージ２２８からダウンロードされる。ダウンロードサーバー２３０は、サードパーティアプリケーションデータをクライアントデバイス２０１に提供する。要求されたサードパーティアプリケーションに対するバックアップが識別されない場合、サードパーティアプリケーション設定をリストアする別の手段（キーと値のペアを含む）が試行される。
【００５０】
クラウドストレージからサードパーティアプリケーションデータを新たなデバイスにリストアすることにより、ユーザーは、デバイス上でサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃにおける同じ環境および設定を経験し、かつリストア時に以前のデバイス上のサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃ内と同じ環境を経験することができる。これには、アプリケーションの外観やその機能などのユーザープリファレンスが含まれる。アプリケーションに格納されたデータを含む、アプリケーション固有のデータもリストアされる。例えば、テキストメッセージングアプリケーションであるサードパーティアプリケーション用の格納されたデータは、テキスト、写真、オーディオファイル、テキストメッセージの履歴および連絡先を含むことができる。これらは、記載されたアップロード方法によってクラウドストレージに格納され、リストア要求によってデバイスにリストアされる。サードパーティアプリケーションデータのリストア後、サードパーティアプリケーションデータのバックアップは、追加のリストアまたはダウンロード要求で使用するためにクラウドストレージに保持される。
【００５１】
いくつかの実施形態において、ユーザーは、サードパーティアプリケーションデータをクラウドストレージにアップロードした第１のデバイスと第２のデバイスとを同期化するためにリストア要求を開始することができる。ユーザーは、サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃが同じアプリケーション設定、環境およびコンテンツを含むように、２つのデバイス間でサードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃを同期化する手段として機能するリストアプロセスを開始することができる。
【００５２】
いくつかの実施形態において、本開示のシステムおよび方法は、既存のバックアップ方法との後方互換性（ｂａｃｋｗａｒｄｓ  ｃｏｍｐａｔｉｂｉｌｉｔｙ）を維持する態様で実施されてもよい。リストアプロセスは、古いバージョンのバックアッププロトコルで作成されたバックアップ（たとえば、キーと値のペアの使用に依存するバックアッププロトコル）からサードパーティアプリケーションデータをリストアするオプションをユーザーに提供する。このようにして、本明細書に記載の方法に従ってバックアップおよびリストアに必要なソフトウェアで動作するクライアントデバイス２０１は、以前のバックアップ方法を使用して行われたバックアップからリストアを要求することができる。ユーザーは、以前のバックアップおよびリストアソフトウェアを使用しながら、記載された方法で作成されたバックアップからサードパーティアプリケーションデータをリストアすることもできる。以前のバックアップソフトウェアは、メタデータストレージロケーションの参照を含む成功信号および新たなデータを無視し、代わりにリストアのためにメタデータとともに格納されているキーと値のペアに依存するため、古いバックアップとリストアソフトウェアで行われたリストアは成功する。
【００５３】
バックアップおよびリストアの方法は後方互換性があり、かつ移行すべきキーと値のペアの方法によって実行された以前のバックアップの移行（ｍｉｇｒａｔｉｏｎ）を必要としない。本明細書で説明するバックアップ方法は、キーと値のペアを含むバックアップと互換性がある。さらに、記載されたバックアップ方法を使用するには、サードパーティアプリケーションファイルの完全な記録を確立するために、すべてのアプリケーションデータの最初の全バックアップが必要である。これらのファイルは、バックアップの必要性を判定するために、クライアントデバイス上に存在するサードパーティアプリケーションデータとの比較に使用される。バックアップ方法へのアクセスを受信すると、サードパーティアプリケーション２０２ａ、２０２ｂ、２０２ｃの完全な初期バックアップによって、以前のキーと値のペアのバックアップファイルの必要性が除去される。いくつかの実施形態では、以前にバックアップされたサードパーティアプリケーションデータを含むキーと値のペアも、全データバックアップの一部としてバックアップされる。
【００５４】
デバイスが廃止される（ｄｅｃｏｍｍｉｓｓｉｏｎｅｄ）と、以前にデバイスに格納されたサードパーティアプリケーションデータが新たなデバイスにリストアされる。しかしながら、廃止されたデバイスは、サードパーティアプリケーションデータがクラウドに格納されているが、もはやユーザーまたは機能するクライアントデバイス２０１に接続されていない「孤立したデータセット」の存在につながる可能性がある。これらの孤立したデータセットを除去する方法が行われてもよい。孤立したデータセットは、一定期間後に期限切れになるように設定されてもよい。あるいは、ユーザーが、デバイス上のユーザーインタフェースまたはクライアントデバイス２０１に関連付けられたユーザーアカウントを介して、デバイスが廃止されたか、または非アクティブになることを通知してもよい。
【００５５】
新たなバックアップおよびリストア方法のフェーズイン時には、クライアントデバイス２０１用のサードパーティアプリケーションデータが完全にバックアップされるため、クラウドストレージへの圧倒的な量のデータフローが生じる可能性がある。このバックアップ機能の最初の展開（ｒｏｌｌ−ｏｕｔ）中に、クライアントとサーバー側の両方のメカニズムによりアップロードフローを制御することができる。たとえば、アップロード機能およびリストア機能へのユーザーアクセスは、デバイスに基づいて制限されてもよい。クライアントデバイスは、特定のクライアントデバイスまたはクライアントデバイスモデル上の機能を設定または無効にするように構成することができる。代替的に、機能をクライアントデバイスのある割合のユーザーにのみ展開して、追加の割合のユーザーにその機能を展開する前に、これらのユーザーに対してサードパーティアプリケーションデータの初期アップロード時間を与えるようにすることもできる。さらに、アップロード機能とリストア機能の対象となるサードパーティのアプリケーションが経時的に増加しつつ、アップロードおよびリストア機能へのアクセスがサードパーティアプリケーションに基づいて制限されるようにしてもよい。２つのモードを切り替えることによってデータフローを制御するためにバックアップ期間の構成を変更することもできる。第１のモードによれば、アップロードプロセスは、サードパーティアプリケーションデータに十分な量の変更がある場合に開始されてもよい。第２のモードによれば、アップロードプロセスは、例えばＮ日毎に１回など所定のスケジュールに基づいて開始されてもよい。
【００５６】
サーバー側では、フラグや機能スイッチなどのサーバー上の調整レバー（ｔｈｒｏｔｔｌｉｎｇ  ｌｅｖｅｒｓ）の実装によってデータフローを制御することができる。フラグまたは機能スイッチは、アップロードサーバーおよびバックアップサーバーによって読み取り可能である。設定されたサーバーの上限を超えると、フラグは調整による失敗を示すカスタムエラーコードを返す。このカスタムエラーコードには、別の試行が行われる前に待機することを推奨する期間を示すフィールドも含まれている。アップロードコール全体を無効にする緊急時のダウンストリームサービスを保護するために、追加のフラグを組み込むこともできる。
【００５７】
図５は、サードパーティアプリケーションデータをクラウドストレージに格納するための方法５００を示すフローチャートを示す。方法５００は、サードパーティアプリケーションに関連するデータをクラウドストレージサーバーにダウンロードすることを決定するステップ（ステップ５０２）と、サードパーティアプリケーションのバイナリデータを第１のクラウドストレージロケーションに格納するステップ（ステップ５０４）と、第１のクラウドストレージロケーションのストレージアドレスを含むようにメタデータを更新するステップ（ステップ５０６）と、更新されたメタデータを第１のクラウドストレージロケーションとは異なる第２のクラウドストレージロケーションに格納するステップ（ステップ５０８）とを含む。
【００５８】
ステップ５０２において、クライアントデバイスのバックアップフレームワーク（例えば、図２の２０８）は、クライアントデバイス上のサードパーティアプリケーションに関連するデータがクラウドストレージサーバーにダウンロードされるべきであることを決定する。サードパーティアプリケーションデータをクラウドストレージサーバーにダウンロードする要件は、スケジューリングされたダウンロード、データをアップロードするためのユーザー要求、またはサードパーティアプリケーションデータの変更に基づいて決定されてもよい。いくつかの実施形態において、サードパーティアプリケーションデータをダウンロードする要件は、チェックサム方法を使用してクラウドストレージサーバーに現在格納されているサードパーティアプリケーションデータと、クライアントデバイスに格納されたサードパーティアプリケーションデータとの比較によって決定されてもよい。クラウドストレージにダウンロードされるサードパーティアプリケーションデータには、バイナリデータとメタデータの両方が含まれる。
【００５９】
ステップ５０４において、バイナリデータは、第１のクラウドストレージロケーションに格納される。クラウドストレージロケーションは、関連するストレージアドレスを有する。サードパーティアプリケーションに関連するバイナリデータは、クライアントデバイスのバックアップトランスポート（例えば、図２の２１０）からデータタールボール（例えば、「．ｔａｒ」アーカイブファイル）としてアップロードサーバーに送信される。バイナリデータは、大量のバイナリデータを格納するように設計された第１のクラウドストレージロケーションに格納される。
【００６０】
ステップ５０６において、サードパーティアプリケーションに関連するメタデータは、第１のクラウドストレージロケーションのストレージアドレスを含むように更新される。クラウドストレージサービス（例えば、図２の２０３）は、バイナリストレージアドレスをメタデータに付加する。したがって、バイナリデータは、サードパーティメタデータと関連付けることができ、かつ更新されたメタデータ内のクラウドストレージアドレスを使用して取得することができる。ストレージロケーションは、サードパーティアプリケーションのバイナリデータのファイルロケーションを指し示す数値ストリングであってもよい。いくつかの実施形態において、クラウドストレージサービスは、格納の前に、追加のディスクリプタおよび命令をメタデータに付加してもよい。
【００６１】
ステップ５０８において、更新されたメタデータは、第２のクラウドストレージロケーションに格納される。第２のクラウドストレージロケーションは、第１のクラウドストレージロケーションとは異なり、かつメタデータのストレージ用に最適化されている。成功信号は、バイナリデータおよびメタデータの格納に成功した後にアップロードサーバーに戻されてもよい。成功信号は、さらに、メタデータにアクセスするために使用されるメタデータのロケーションへの参照を含み得る。
【００６２】
図６は、サードパーティアプリケーションデータをクライアントデバイスにリストアするための方法６００を示すフローチャートを示す。方法６００は、クラウドストレージからクライアントデバイスにサードパーティアプリケーションに関連するデータを提供するかどうかを決定するステップ（ステップ６０２）と、メタデータを使用して第１のクラウドストレージロケーションのストレージアドレスを決定するステップ（ステップ６０４）と、バイナリデータを第１のストレージロケーションからクライアントデバイスに提供するステップ（ステップ６０６）とを含む。
【００６３】
ステップ６０２において、サードパーティアプリケーションに関連するデータをクライアントデバイスに提供するためにリストアが必要であるかどうかが決定される。リストアは、ユーザーからの要求または選択、またはサードパーティアプリケーションによる要求に応答的であってもよい。リストアは、またデバイス間の同期として実行されてもよい。サードパーティアプリケーションに関連するデータは、第１のクラウドロケーションに格納されたバイナリデータと、第２のクラウドストレージロケーションに格納されたストレージアドレスおよびメタデータの両方を含む。クライアントデバイスのバックアップトランスポート（例えば、図２の２１０）は、クライアントデバイスに関連するデバイスＩＤと、サードパーティアプリケーションに関連するサードパーティアプリケーションＩＤとをバックアップサーバー（例えば、図２の２１８）に送信することによって、データダウンロードを開始する。
【００６４】
ステップ６０４は、サードパーティアプリケーションに関連する以前に格納されたメタデータを使用して、バイナリデータのストレージアドレスを決定することを含む。バックアップサーバーは、デバイスＩＤおよびサードパーティアプリケーションＩＤを含む識別情報を受信した後、サードパーティアプリケーションデータの最後の成功したバックアップの成功信号をクライアントデバイスに送信する。成功信号は、メタデータストレージロケーションへの参照を含む。次に、サードパーティアプリケーションデータの以前のバックアップ中にメタデータに付加されたバイナリストレージロケーション参照を得るために、メタデータをメタデータストレージから取得することができる。
【００６５】
ステップ６０６で、取得されたバイナリデータストレージロケーションアドレスを使用して、サードパーティアプリケーションに関連するバイナリデータを見つけだして要求する。バイナリデータおよびメタデータは、ダウンロードサーバーによってバックアップトランスポートを介してクライアントデバイスに送信される。バイナリデータおよびメタデータは、クライアントデバイス上のストレージに配信される。
【００６６】
本開示の様々な実施形態が本明細書に示され説明されたが、そのような実施形態は単なる例示として提供されることは当業者には明らかであろう。本開示から逸脱することなく、当業者には数多くの変形、変更、および置換が可能である。本明細書に記載された開示の実施形態に対する様々な代替が、本開示を実施する際に採用され得ることを理解されたい。
【００６７】
Ａ１．  サードパーティアプリケーションデータをクラウドストレージにアップロードするための方法であって、その方法は、
クライアントデバイスからサードパーティアプリケーションに関連するデータをアップロードするかどうかを決定するステップであって、前記サードパーティアプリケーションに関連するデータがバイナリデータおよびメタデータを含む、ステップと、
前記サードパーティアプリケーションのバイナリデータと前記サードパーティアプリケーションのメタデータとをクラウドストレージに送信するステップと
を含み、
前記バイナリデータは、ストレージアドレスを有する第１のクラウドストレージロケーションに格納され、
更新されたメタデータを取得するために前記メタデータには前記ストレージアドレスが付加され、
更新されたメタデータは、前記第１のクラウドストレージロケーションとは異なる第２のクラウドストレージロケーションに格納される、方法。
【００６８】
Ａ２．  前記サードパーティアプリケーションのバイナリデータは、前記サードパーティアプリケーションについての全データを含む、実施形態Ａ１に記載の方法。
Ａ３．  前記サードパーティアプリケーションに関連するデータをアップロードするかどうかを決定するステップは、
前記クライアントデバイスに格納された前記サードパーティアプリケーションに関連する格納されたバイナリデータを識別するステップと、
前記サードパーティアプリケーションに関連する以前にアップロードされたバイナリデータを識別するステップと、
前記格納されたバイナリデータと前記以前にアップロードされたバイナリデータとの間の差を計算するステップと、
前記差を閾値と比較するステップとを含む、実施形態Ａ１またはＡ２に記載の方法。
【００６９】
Ａ４．  前記差が前記閾値以上である場合、前記クライアントデバイスは、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態Ａ３に記載の方法。
【００７０】
Ａ５．  前記クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、前記複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての前記対応するバイナリデータおよび前記対応するメタデータは、１回のアップロードで前記クライアントデバイスからアップロードされる、実施形態Ａ１乃至Ａ４のいずれか１つに記載の方法。
【００７１】
Ａ６．  前記サードパーティアプリケーションに関連するデータは、送信前に前記クライアントデバイス上で完全には複製されない、実施形態Ａ１乃至Ａ５のいずれか１つに記載の方法。
【００７２】
Ａ７．  前記クライアントデバイスは、所定のアップロードスケジュールに基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態Ａ１乃至６のいずれか１つに記載の方法。
【００７３】
Ａ８．  前記クライアントデバイスは、前記サードパーティアプリケーションによって報告される前記サードパーティアプリケーションへの変更の検出に基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態Ａ１乃至７のいずれか１つに記載の方法。
【００７４】
Ａ９．  前記クライアントデバイスは、前記クライアントデバイスのユーザーからバックアップ要求を受信したときに、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、請求項１乃至８のいずれか１つに記載の方法。
【００７５】
Ａ１０．  前記バイナリデータおよび前記メタデータを送信するステップは、
前記サードパーティアプリケーションのバイナリデータおよびメタデータを単一のファイルに集約するステップと、
前記ファイルを前記クラウドストレージ内のアップロードサーバーに送信するステップと
を含み、前記アップロードサーバーは、
前記バイナリデータを前記メタデータから分離し、
前記第１のクラウドストレージロケーションに格納するために前記バイナリデータを送信し、
更新されたメタデータを取得するために前記第１のクラウドストレージロケーションの前記ストレージアドレスを前記メタデータに付加し、
前記第２のクラウドストレージロケーションに格納するために前記更新されたメタデータを送信する
ように構成されている、実施形態Ａ１乃至Ａ９のいずれか１つに記載の方法。
【００７６】
Ａ１１．  前記単一のファイルは、「．ｔａｒ」ファイルタイプを有する、実施形態Ａ１０に記載の方法。
Ａ１２．  前記サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む、実施形態Ａ１乃至Ａ１１のいずれか１つに記載の方法。
【００７７】
Ａ１３．  前記第２のクラウドストレージロケーションへの参照を前記クライアントデバイスにおいて受信するステップをさらに含む、実施形態Ａ１乃至Ａ１２のいずれか１つに記載の方法。
【００７８】
Ａ１４．  前記バイナリデータが前記第１のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのバイナリデータが上書きされ、前記更新されたメタデータが前記第２のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのメタデータが上書きされる、実施形態Ａ１乃至Ａ１３のいずれか１つに記載の方法。
【００７９】
Ａ１５．  送信された前記バイナリデータおよび前記メタデータは、前記クラウドストレージへのアクセスを有するユーザーインタフェースを介してユーザーがアクセス可能である、実施形態Ａ１乃至Ａ１４のいずれか１つに記載の方法。
【００８０】
Ａ１６．  前記クライアントデバイスは第１のクライアントデバイスであり、前記バイナリデータおよび前記更新されたメタデータは第２のクライアントデバイスにダウンロードされて、前記第１のクライアントデバイス上の前記サードパーティアプリケーションデータが第２のデバイス上のサードパーティアプリケーションデータと同期化される、実施形態Ａ１乃至Ａ１５のいずれか１つに記載の方法。
【００８１】
Ａ１７．  前記バイナリデータおよび前記メタデータは、前記クラウドストレージ内のアップロードサーバーに送信され、前記アップロードサーバーは、前記バイナリデータを前記第１のクラウドストレージロケーションに書き込み、前記更新されたメタデータを書き込みのために前記第２のクラウドストレージロケーションに送信する、実施形態Ａ１乃至Ａ１６のいずれか１つに記載の方法。
【００８２】
Ａ１８．  前記アップロードサーバーは、前記第２のクラウドストレージロケーションから前記更新されたメタデータを読み出して前記第２のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記更新されたメタデータを送信する、実施形態Ａ１７に記載の方法。
【００８３】
Ａ１９．  前記バイナリデータの送信はキーと値のペアを使用しない、実施形態Ａ１乃至Ａ１８のいずれか１つに記載の方法。
Ａ２０．  前記サードパーティアプリケーションに関連するデータを全データバックアッププロセスまたは部分データバックアッププロセスを使用して送信することが前記サードパーティアプリケーションに関連付けられたマニフェストに示されているかどうかを判定するステップと、
部分データバックアッププロセスが使用されると決定した場合には、前記バイナリデータのいずれも前記クラウドストレージに送信することなく前記クラウドストレージに前記メタデータの一部を送信するステップと
をさらに含む、実施形態Ａ１乃至Ａ１９のいずれか１つに記載の方法。
【００８４】
Ａ２１．  前記クラウドストレージへの前記メタデータの一部の送信は、キーと値のペアを使用することを含む、実施形態Ａ２０に記載の方法。
Ａ２２．  実施形態Ａ１乃至Ａ２１のいずれか１つに記載の方法を実行するためのシステム。
【００８５】
Ｂ１．  サードパーティアプリケーションデータをクラウドストレージに格納するための方法であって、
クライアントデバイスに格納されたサードパーティアプリケーションに関連するデータをクラウドストレージサーバーにダウンロードすることを決定するステップであって、前記サードパーティアプリケーションに関連するデータがバイナリデータおよびメタデータを含む、ステップと、
ストレージアドレスを有する第１のクラウドストレージロケーションに前記サードパーティアプリケーションのバイナリデータを格納するステップであって、前記メタデータは、前記ストレージアドレスを含むように更新される、ステップと、
更新された前記メタデータを前記第１のクラウドストレージロケーションとは異なる第２のクラウドストレージロケーションに格納するステップと
を含む方法。
【００８６】
Ｂ２．  前記サードパーティアプリケーションのバイナリデータは、前記サードパーティアプリケーションについての全データを含む、実施形態Ｂ１に記載の方法。
Ｂ３．  前記クライアントデバイスは、前記データをアップロードするかどうかを
前記クライアントデバイスに格納された前記サードパーティアプリケーションに関連する格納されたバイナリデータを識別することと、
前記サードパーティアプリケーションに関連する以前にアップロードされたバイナリデータを識別することと、
前記格納されたバイナリデータと前記以前にアップロードされたバイナリデータとの間の差を計算することと、
前記差を閾値と比較することと
によって決定する、実施形態Ｂ１またはＢ２に記載の方法。
【００８７】
Ｂ４．  前記差が前記閾値以上である場合、前記クライアントデバイスは、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態Ｂ３に記載の方法。
【００８８】
Ｂ５．  前記クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、前記複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての前記対応するバイナリデータおよび前記対応するメタデータは、１回のアップロードで前記クライアントデバイスからアップロードされる、実施形態Ｂ１乃至Ｂ４のいずれか１つに記載の方法。
【００８９】
Ｂ６．  前記サードパーティアプリケーションに関連するデータは、前記データのダウンロード前に前記クライアントデバイス上で完全には複製されない、実施形態Ｂ１乃至Ｂ５のいずれか１つに記載の方法。
【００９０】
Ｂ７．  前記クライアントデバイスは、所定のアップロードスケジュールに基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態Ｂ１乃至Ｂ６のいずれか１つに記載の方法。
【００９１】
Ｂ８．  前記クライアントデバイスは、前記サードパーティアプリケーションによって報告される前記サードパーティアプリケーションへの変更の検出に基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態Ｂ１乃至Ｂ７のいずれか１つに記載の方法。
【００９２】
Ｂ９．  前記クライアントデバイスは、前記クライアントデバイスのユーザーからバックアップ要求を受信したときに、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態Ｂ１乃至Ｂ８のいずれか１つに記載の方法。
【００９３】
Ｂ１０．  前記クライアントデバイスは、
前記サードパーティアプリケーションのバイナリデータおよびメタデータを単一のファイルに集約し、
前記ファイルを前記クラウドストレージ内のアップロードサーバーに送信する
ように構成され、前記アップロードサーバーは、
前記バイナリデータを前記メタデータから分離し、
前記第１のクラウドストレージロケーションに格納するために前記バイナリデータを送信し、
更新されたメタデータを取得するために前記第１のクラウドストレージロケーションの前記ストレージアドレスを前記メタデータに付加し、
前記第２のクラウドストレージロケーションに格納するために前記更新されたメタデータを送信する
ように構成されている、実施形態Ｂ１乃至Ｂ９のいずれか１つに記載の方法。
【００９４】
Ｂ１１．  前記単一のファイルは、「．ｔａｒ」ファイルタイプを有する、実施形態Ｂ１０に記載の方法。
Ｂ１２．  前記サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む、実施形態Ｂ１乃至Ｂ１１のいずれか１つに記載の方法。
【００９５】
Ｂ１３．  前記第２のクラウドストレージロケーションへの参照を前記クライアントデバイスに送信するステップをさらに含む、実施形態Ｂ１乃至Ｂ１２のいずれか１つに記載の方法。
【００９６】
Ｂ１４．  前記バイナリデータが前記第１のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのバイナリデータが上書きされ、前記更新されたメタデータが前記第２のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのメタデータが上書きされる、実施形態Ｂ１乃至Ｂ１３のいずれか１つに記載の方法。
【００９７】
Ｂ１５．  送信された前記バイナリデータおよび前記メタデータは、前記クラウドストレージへのアクセスを有するユーザーインタフェースを介してユーザーがアクセス可能である、実施形態Ｂ１乃至Ｂ１４のいずれか１つに記載の方法。
【００９８】
Ｂ１６．  前記クライアントデバイスは第１のクライアントデバイスであり、前記方法は、前記バイナリデータおよび前記更新されたメタデータを第２のクライアントデバイスに送信するステップをさらに含み、前記第１のクライアントデバイス上の前記サードパーティアプリケーションデータが第２のデバイス上のサードパーティアプリケーションデータと同期化される、実施形態Ｂ１乃至Ｂ１５のいずれか１つに記載の方法。
【００９９】
Ｂ１７．  前記バイナリデータおよび前記メタデータは、前記クラウドストレージ内のアップロードサーバーに送信され、前記アップロードサーバーは、前記バイナリデータを前記第１のクラウドストレージロケーションに書き込み、前記更新されたメタデータを書き込みのために前記第２のクラウドストレージロケーションに送信する、実施形態Ｂ１乃至Ｂ１６のいずれか１つに記載の方法。
【０１００】
Ｂ１８．  前記アップロードサーバーは、前記第２のクラウドストレージロケーションから前記更新されたメタデータを読み出して前記第２のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記更新されたメタデータを送信する、実施形態Ｂ１７に記載の方法。
【０１０１】
Ｂ１９．  前記バイナリデータの格納はキーと値のペアを使用しない、実施形態Ｂ１乃至Ｂ１８のいずれか１つに記載の方法。
Ｂ２０．  前記クライアントデバイスは、
前記サードパーティアプリケーションに関連するデータを全データバックアッププロセスまたは部分データバックアッププロセスを使用して送信することが前記サードパーティアプリケーションに関連付けられたマニフェストに示されているかどうかを判定し、
部分データバックアッププロセスが使用されると決定した場合には、前記バイナリデータのいずれも前記クラウドストレージに送信することなく前記クラウドストレージに前記メタデータの一部を送信する
ように構成されている、実施形態Ｂ１乃至Ｂ１９のいずれか１つに記載の方法。
【０１０２】
Ｂ２１．  前記メタデータの一部は、キーと値のペアを使用して前記クラウドストレージに送信される、実施形態Ｂ２０に記載の方法。
Ｂ２２．  実施形態Ｂ１乃至Ｂ２１のいずれか１つに記載の方法を実行するためのシステム。
【０１０３】
Ｃ１．  サードパーティアプリケーションデータをクライアントデバイスにリストアするための方法であって、
サードパーティアプリケーションに関連するデータを前記クライアントデバイスにダウンロードするかどうかを決定するステップであって、前記サードパーティアプリケーションに関連するデータは、ストレージアドレスを有する第１のクラウドストレージロケーションに格納されたバイナリデータと、第２のクラウドストレージロケーションに格納されたメタデータとを含む、ステップと、
前記メタデータを使用して前記第１のクラウドストレージロケーションの前記ストレージアドレスを決定するステップと、
前記第１のクラウドストレージロケーションから前記クライアントデバイスに前記バイナリデータをダウンロードするステップとを含む方法。
【０１０４】
Ｃ２．  前記サードパーティアプリケーションのバイナリデータは、前記サードパーティアプリケーションについての全データを含む、実施形態Ｃ１に記載の方法。
Ｃ３．  前記クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、前記複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての前記対応するバイナリデータは、１回のダウンロードで前記クライアントデバイスにダウンロードされる、実施形態Ｃ１またはＣ２に記載の方法。
【０１０５】
Ｃ４．  前記クライアントデバイスは、前記クライアントデバイスのユーザーからリストア要求を受信したときに、前記サードパーティアプリケーションに関連するデータをダウンロードすることを決定する、実施形態Ｃ１乃至Ｃ３のいずれか１つに記載の方法。
【０１０６】
Ｃ５．  前記サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む、実施形態Ｃ１乃至Ｃ４のいずれか１つに記載の方法。
【０１０７】
Ｃ６．  前記クライアントデバイスは第１のクライアントデバイスであり、前記バイナリデータおよび更新されたメタデータは第２のクライアントデバイスにダウンロードされて、前記第１のクライアントデバイス上の前記サードパーティアプリケーションデータが第２のデバイス上のサードパーティアプリケーションデータと同期化される、実施形態Ｃ１乃至Ｃ５のいずれか１つに記載の方法。
【０１０８】
Ｃ７．  前記バイナリデータおよび前記メタデータは、クラウドストレージ内のダウンロードサーバーに送信され、前記ダウンロードサーバーは、前記第１のクラウドストレージロケーションに前記バイナリデータを以前に書き込んでおり、かつ前記第２のクラウドストレージロケーションに書き込むために前記メタデータを以前に送信している、実施形態Ｃ１乃至Ｃ６のいずれか１つに記載の方法。
【０１０９】
Ｃ８．  前記ダウンロードサーバーは、前記第２のクラウドストレージロケーションから更新されたメタデータを読み出して前記第２のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記メタデータを以前に送信している、実施形態Ｃ７に記載の方法。
【０１１０】
Ｃ９．  別のサードパーティアプリケーションに関連するデータは、第３のクラウドストレージロケーションに格納されたメタデータを含み、かつバイナリデータを含まない、実施形態Ｃ１乃至Ｃ８のいずれか１つに記載の方法。
【０１１１】
Ｃ１０．  前記別のサードパーティアプリケーションに関連するデータを前記クライアントデバイスにダウンロードするかどうかを決定するステップと、
前記別のサードパーティアプリケーションに関連する前記メタデータを、前記第３のクラウドストレージロケーションに格納された一組のキーと値のペアとして識別するステップと、
前記一組のキーと値のペアを前記クライアントデバイスにダウンロードするステップとをさらに含む実施形態Ｃ９に記載の方法。
【０１１２】
Ｃ１１．  実施形態Ｃ１乃至Ｃ１０のいずれか１つに記載の方法を実行するためのシステム。
【図１】
0006571202.tif 000002
【図２】
0006571202.tif 000003
【図３】
0006571202.tif 000004
【図４】
0006571202.tif 000005
【図５】
0006571202.tif 000006
【図６】
0006571202.tif 000007