(58)【調査した分野】(Int.Cl.,DB名)
前記バイナリデータおよび前記メタデータは、前記クラウドストレージ内のアップロードサーバーに送信され、前記アップロードサーバーは、前記バイナリデータを前記第1のクラウドストレージロケーションに書き込み、前記更新されたメタデータを書き込みのために前記第2のクラウドストレージロケーションに送信する、請求項1乃至14のいずれか1項に記載の方法。
前記アップロードサーバーは、前記第2のクラウドストレージロケーションから前記更新されたメタデータを読み出して前記第2のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記更新されたメタデータを送信する、請求項15に記載の方法。
【発明を実施するための形態】
【0014】
本開示の上記および他の特徴は、その本質およびその様々な利点を含めて、以下の詳細な説明を添付の図面と併せて考察することで、より明らかとなるであろう。
本明細書で説明するシステムおよび方法の全体的な理解を提供するために、クライアントデバイス上のサードパーティアプリケーションデータのバックアップおよびリストアのためのシステムを含む特定の実施形態をここで説明する。しかしながら、当業者であれば、本明細書に記載されたシステムおよび方法は、対象となるアプリケーションに適切となるように適合および変更されてもよく、本明細書に記載されたシステムおよび方法は、他の適切なアプリケーションにおいて採用されてもよく、そのような他の追加および変更はその範囲から逸脱するものではないことを理解されたい。一般に、本明細書で説明されるコンピュータ化されたシステムは、ハードウェア、ファームウェア、およびソフトウェアで構成されたコンピュータ、マイクロプロセッサ、論理デバイスまたはプロセッサなどの、1つまたは複数のコンピュータ化された方法を実行する処理デバイスを含む1つまたは複数のエンジンを含むことができる。
【0015】
本明細書で説明するように、本開示は、サードパーティアプリケーションに関連する全データのバックアップを実行するシステムおよび方法を提供する。サードパーティアプリケーション設定に関連するキーと値のペアの代わりに、設定、履歴、およびコンテンツを含むサードパーティアプリケーションに関連する全データがクラウドストレージにアップロードされる。サードパーティアプリケーションに関連するバイナリデータとメタデータは、クラウドストレージにアップロードすることでバックアップされる。サードパーティアプリケーションに関するメタデータには、ファイル名、サイズ、パスコードまたは識別番号、ファイルの履歴、ディスクリプション、サードパーティアプリケーションが設計されたオペレーティングシステムの現在のバージョン、およびその他の静的メタデータが含まれる。サードパーティアプリケーション固有のデータに加えて、他のファイルおよびデータも同様の方法でバックアップされ得る。そのようなデータは、メモリカード、SDカード、ダウンロードフォルダ、または個々のアプリケーションデータに関連付けられていない他のデータレポジトリを含むことができる。さらに、クラウドストレージにバックアップされるこれらのファイルおよびその他のファイルおよびデータは、クラウドベースのファイルストレージシステムのユーザーインタフェースにおいて完全に操作可能かつ可視のファイルとしてユーザーに公開される可能性がある。
【0016】
サードパーティアプリケーションデータのバックアップは、所定のスケジュールに従って、またはサードパーティアプリケーションデータに変更がある場合に発生し得る。例えば、所定のスケジュールは、1日に1回、1週間に1回、1ヶ月に1回、または任意の他の適切な頻度等、一定間隔ごとにサードパーティアプリケーションデータのバックアップを要求する。別の例として、サードパーティアプリケーションデータに対して少なくとも閾値量の変更が加えられたと判定されたときに、自動的にバックアップが開始されてもよい。特に、サードパーティアプリケーションデータに対する変更は、内部サードパーティアプリケーションのデータベース又は設定に対する変更を含み得る。いくつかの実施形態において、サードパーティアプリケーションに対する変更は、アプリケーションに関連するフォルダに記録される。これらの変更にクライアントデバイスのバックアップフレームワークがアクセスして、アップロードが必要かどうかを決定し得る。
【0017】
いくつかの実施形態において、クライアントデバイスは、ユーザーがバックアップに関連する設定をカスタマイズすることを可能にするように構成することができる。例えば、クライアントデバイスが携帯電話である場合、携帯電話がセルラーネットワークに接続されているときに、そうすることでユーザーのデータプランにおいてデータを消費するために、携帯電話がサードパーティアプリケーションデータをクラウドストレージにアップロードすることは望ましくないことがある。この場合、クライアントデバイスは、モバイルデバイスが無線インターネットのネットワークのような高速で信頼性の高い、および/または安価なネットワークに接続されているときにのみバックアップを実行するように構成することができる。あるいは、ユーザーは、セルラーネットワークを介してバックアップを可能にするための1つまたは複数のオプションを選択してもよい。バックアップは、複数のサードパーティアプリケーションに関して必要なバックアップがグループ化され、複数のサードパーティアプリケーションに対するすべてのアップロードがアップロードセッション中に順番に実行されるように構成することができる。サードパーティアプリケーションデータが変更されると、複数のサードパーティアプリケーションに対して複数の必要なバックアップが継続的に発生することもある。バックアップは、モバイルデバイスが電源に接続されているとき、または夜間などのアイドル時またはピーク時以外の使用時など、特定のデバイス要件が満たされたときにのみに発生するように構成することもできる。
【0018】
図1は、データをクラウドストレージサービスにアップロードするためのシステム100のブロック図を示す。このシステムは、クライアントデバイス101、アプリケーション102a、102b(一般に、アプリケーション102)、クラウドストレージ103、第1のクラウドストレージロケーション104、および第2のクラウドストレージロケーション106を含む。クライアントデバイス101は、関連するデータを含む複数のサードパーティアプリケーションを含む。データは、バイナリデータおよびメタデータの両方を含み得る。クライアントデバイスは、アップロードが行われるべきであるということを決定する。アップロードが行われるべきであるという決定は、ユーザーアクション、時限アップロード、またはユーザーが開始したか、または開始していないサードパーティアプリケーションおよびアプリケーションデータへの変更に基づくアップロードによってトリガされてもよい。クライアントデバイス101は、サードパーティアプリケーションのバイナリデータおよびメタデータをクラウドストレージ103に送信する。サードパーティアプリケーションのバイナリデータは、第1のクラウドストレージロケーション104に格納され、サードパーティアプリケーションのメタデータは、クラウドストレージ103内の第2のクラウドストレージロケーション106に格納される。
【0019】
データアップロード
図2は、協働してデータアップロードプロセスを実行するように構成されたシステム200のブロック図である。システム200は、クライアントデバイス201上の(例えば、「クライアント側」上の)バックアップフレームワーク208、バックアップトランスポート210、およびサードパーティアプリケーション202a、202b、202cと、サーバー216上(例えば、「サーバー側」上の)バックアップサーバー218、アップロードサーバー224、クラウドストレージサービス203、およびメタデータストレージ226を含む。クライアントデバイス201は、電話またはタブレットのようなモバイルデバイスを含むことができる。クライアントデバイス201は、本明細書ではしばしばモバイルデバイスであると説明されているが、当業者であれば、本開示のシステムおよび方法は、デスクトップコンピュータ、ラップトップ、または任意の他の適切なコンピューティングデバイスを含む任意の数のコンピューティングデバイス上のアプリケーションデータをバックアップおよびリストアを実行するのに適用可能であることは理解されるであろう。クライアントデバイス201は、バイナリバックアップモジュール209を含むバックアップフレームワーク208と通信するサードパーティアプリケーション202a、202b、202cに関連するデータを格納する。バックアップフレームワーク208は、バックアップトランスポート210と通信する。バックアップフレームワーク208は、デバイスメモリ内に存在し、かつ所定のスケジュールを参照することによって、またはアプリケーションデータの変化の検出に応答して、サードパーティアプリケーション202a、202b、202cがバックアップを必要とするかどうかを決定するように構成される。バックアップフレームワーク208は、バイナリアプリケーションデータとサードパーティアプリケーションデータの以前のバックアップとを比較して、データに変更があるかどうかを判定できるように構成されている。これは、チェックサム計算によって、またはアプリケーション変更フォルダに記録されているアプリケーションの変更があるかどうかを判定することによって達成することができる。
【0020】
クライアントデバイス201がバックアップの必要性があると判定した後、バイナリバックアップモジュール209は、アップロードされるアプリケーションデータを単一のファイルにアーカイブし、そのファイルをバックアップトランスポート210に送信する。
図2におけるバックアップトランスポート210は、様々なバックアップ方法が使用できる2つの異なるデータタイプを含む。特に、
図2に示すように、バックアップトランスポートは、キーと値のペア部213と、バイナリデータを含む全データバックアップ部212とを含む。一般に、本開示の範囲から逸脱することなく、他の適切なデータタイプを使用することができる。アプリケーションデータがバックアップフレームワーク208からバックアップトランスポート210に送信された後、クライアントデバイス201は、アップロードプロセスを開始するためにサーバー216を呼び出す。
【0021】
図2に示すように、サーバー216は、アップロードサーバー224と、キーと値のペアのストレージ220およびビジネスロジックエージェント222を含むバックアップサーバー218と、クラウドストレージサービス203と、メタデータストレージユニット226とを含む。アップロードサーバー224は、アップロードされたバイナリデータを取り扱い、かつバックアップサーバー218内のビジネスロジックエージェント222を呼び出して、関連するメタデータの格納、および将来のリストア要求の間にデータを取得するために使用することができるロケーション参照の作成を開始するように構成される。バックアップサーバー218は、アップロードサーバー224から要求を受信し、これらの要求をクラウドストレージサービス203に渡し、クラウドストレージサービス203は、メタデータストレージ226に格納するためのメタデータを準備する。さらに、クライアントデバイスのバックアップに関連する構造化データは、キーと値のペアストレージ220に格納される。構造化データは、デバイスID、サードパーティアプリケーションID、およびアップロード方法の一部として受信されたクラウドストレージに格納されたサードパーティアプリケーションデータのストレージロケーションへの参照を含むことができる。構造化データは、クライアントデバイスタイプおよび製造年月日、最近のバックアップに関連するタイムスタンプ、およびクライアントデバイス201上のバックアップフレームワーク208のバージョンに関連する情報を含む追加の情報を含むことができる。
【0022】
いくつかの実施形態において、サードパーティアプリケーションデータのアップロードは、一連のステップを経て達成される。これらのステップは、
図2において記載された構成要素を用いて
図3に図示および列挙される。
【0023】
図3のステップ1において、クライアントデバイスのバックアップフレームワーク208によってデータアップロードの必要性が決定されると、バックアップを要求するサードパーティアプリケーション202a、202b、202cに関連する基本メタデータを有するバックアップ要求メッセージが生成される。バックアップ要求メッセージは、クライアントデバイス201からアップロードサーバー224に送信される。クライアントデバイスのバックアップフレームワーク208は、新たなバックアップを必要とする各サードパーティアプリケーション202a、202b、202cのためのタールボール(tarball)(「.tar」アーカイブファイル)を作成する。クライアントデバイスのバックアップトランスポート210は、バックアップ要求メッセージをアップロードサーバー224に渡すことによって、アップロードサーバー224へのサードパーティアプリケーションデータタールボールのアップロードを開始する。クライアントデバイスのバックアップトランスポート210はまた、アップロードサーバー224へのサードパーティアプリケーションデータアップロードに関連するメタデータを提供する。アップロードサーバー224は、標準のアップロード、バイナリ差分法、またはチャンク化アップロードまたは再開可能なアップロードを介してファイルを受信する。バイナリ差分アップロードを含む実施形態において、アップロードされるバイナリおよびメタデータは、クライアントデバイス201上に配置されたバイナリ差分ライブラリ214に準備されて(staged)もよい。アップロードされるサードパーティアプリケーションデータは、チェックサム方法によって決定されて、クライアントデバイス201上のサードパーティアプリケーションデータと既存の格納されたデータとの間の差のみが、2つのデータファイル間の差を記述する構造と共にアップロードされる。
【0024】
ステップ2において、アップロードサーバー224は、受信したサードパーティアプリケーションのバイナリデータをバイナリデータストレージ223に書き込む。バイナリデータストレージ228は、大量のバイナリデータを格納するように設計されたクラウドストレージロケーションである。バイナリデータストレージ228は、バイトへのアクセスを順次読み取り、呼び出されたロケーションに応答してバイトを提供することができる。サードパーティアプリケーションのメタデータは、第2のクラウドストレージロケーション(例えば、
図2のメタデータストレージ226)に格納するために除去される。
【0025】
ステップ3において、アップロードサーバー224は、アップロードされたサードパーティアプリケーションデータのファイルロケーションを含むサードパーティアプリケーションのバイナリデータ用のバイナリデータストレージロケーション参照を受信する。バイナリデータストレージロケーション参照は、サードパーティアプリケーションデータが格納されているバイナリデータストレージ228内のロケーションをルックアップするのに使用できる数値ストリングである。
【0026】
ステップ4において、アップロードサーバー224は、サードパーティアプリケーションデータ用のバイナリデータストレージロケーション参照を、バイナリデータロケーション参照を複製するバックアップサーバー218内のビジネスロジックエージェント222に提供する。アップロードサーバー224はまた、サードパーティアプリケーションのメタデータをバックアップサーバー218に提供する。
【0027】
ステップ5において、バックアップサーバー218は、格納されるバイナリデータに関連するサードパーティアプリケーションのメタデータと共に、バイナリデータストレージロケーション参照をクラウドストレージサービス203に渡す。バックアップサーバー218は、メタデータの正確な格納に必要なファイルおよびフォルダを作成する。クラウドストレージサービス203は、メタデータストレージ226にファイルを読み書きすることができる。
【0028】
ステップ6で、クラウドストレージサービス203は、受信したサードパーティアプリケーションのメタデータおよびバイナリデータストレージロケーション参照を使用し、バイナリデータストレージロケーション参照をメタデータエントリに付加する。サードパーティアプリケーションのメタデータに追加のディスクリプタを付加して、サードパーティアプリケーションデータ用のストレージスペースをユーザーのストレージクォータに対してカウントしないような指示を追加することもできる。クラウドストレージサービス203は、サードパーティアプリケーションのメタデータをメタデータストレージ226に格納するための適切なエントリおよびフォルダを作成する。クラウドストレージサービス203は、サードパーティアプリケーションデータをメタデータストレージ226に書き込む。メタデータストレージ226は、メタデータを格納するために備えられたクラウドストレージである。
【0029】
ステップ7において、メタデータストレージ226は、サードパーティアプリケーションのメタデータの格納に成功したことを示す成功信号を返す。成功信号は、成功信号がメタデータのロケーションを調べるために使用されるように、メタデータのロケーションへの参照を含む。
【0030】
ステップ8において、クラウドストレージサービス203は、成功信号をバックアップサーバー218に渡し、バックアップサーバー218は成功信号を記録する。
ステップ9において、バックアップサーバー218は、成功信号をアップロードサーバー224に渡す。
【0031】
ステップ10において、アップロードサーバー224は、成功信号をクライアントデバイス201に返す。
バイナリデータは、アップロードサーバー224にアップロードされ、バイナリデータストレージ228に格納される。サードパーティアプリケーションデータのバッチ処理は、アップロードサーバー224で行われる。対応するメタデータには、バイナリデータストレージロケーションへの参照が付加され、かつメタデータストレージ226に格納される。メタデータストレージ226のロケーションにメタデータを格納することは、クラウドストレージサービス203によって支援される。メタデータが成功裏に格納された後、成功信号がメタデータストレージサービス226によって生成され、バックアップサーバー218に、アップロードサーバー224に、最終的にクライアントデバイス201に返送される。成功信号は、サードパーティアプリケーションデータがクラウドストレージに成功裏にアップロードされ、かつ格納されたことを示す。
【0032】
いくつかの実施形態において、サードパーティアプリケーションデータは、アプリケーション毎にモバイルデバイスからクラウドストレージに単一のファイルとしてアップロードされる。単一のサードパーティアプリケーション(例えば、
図2の202a、202b、または202c)のサードパーティアプリケーションデータは、「.tar」形式のアーカイブファイルとしてアップロードされ得る。この形式のファイルは、本明細書ではタールボールと呼称される。少なくともアプリケーションベース毎にバックアップを実行すると、アップロードを成功させる可能性が高くなる可能性があるため効果的である。特に、変更を複数のサードパーティアプリケーションに対してまとめてバッチするのではなく、サードパーティアプリケーション毎に1つのファイルを一度にアップロードする方が好ましい場合がある。大きなファイルを含むアップロードは、小さなファイルを含むアップロードよりも失敗する傾向がある。アップロードに問題がある場合は、単一のサードパーティアプリケーションについてのアプリケーションデータのみを再アップロードする必要がある。このようにして、単一のサードパーティアプリケーションに関連するアプリケーションデータのみを含むアップロードは、より少ない時間で済み、かつアップロードがより効率的となる。
【0033】
バックアップ中にサードパーティアプリケーション202a、202b、202c毎に1回のファイルアップロードを使用することは、アップロードプロセスの前に一時的な格納領域をわずかしか必要としない。サードパーティアプリケーションデータのアップロードプロセスは、データがアップロード前にローカルキャッシュに複製されず、直接ストリームされるように実行されてもよい。したがって、バックアップペイロード全体がディスク上に決して作成されることはない。アップロードされたサードパーティアプリケーションデータが一貫していることを保証するために、各サードパーティアプリケーションのデータアップロードを処理してシングルパスとしてアップロードすることができる。2回以上のパスでサードパーティアプリケーションデータをアップロードすると、2回のパスの間にサードパーティアプリケーションデータに変更があると、一貫しないアップロードプロセスが作成される可能性がある。
【0034】
いくつかの実施形態において、サードパーティアプリケーションデータを1回のパスでアップロードすることは困難であり得る。これは、アップロードサーバー224が、アップロードの開始時に提供される、サーバーに送信されるバイト範囲のマニフェストを必要とする場合に発生し得る。このような場合、マニフェストを計算するためにサードパーティアプリケーションデータファイルからフルパスを作成する必要があるため、シングルパスアップロードは実行できない。この場合、処理のためにファイルをステージングするのに十分なディスク容量がない可能性がある。アップロード準備のためにサードパーティアプリケーションデータファイルの2回目にパスは、最初のパスと同じサードパーティアプリケーションのデータスナップショットであることが保証されないことがある。差分マニフェスト情報(diff manifest information)をインターリービングすることによって、そのような場合がサポートされ得る。例えば、シングルパスアップロードスクリプトは、{サーバーのコピーバイト0 100の使用、これらの20バイトのアップロード、サーバーバイト120〜150の使用}の形式で指定することができる。
【0035】
クラウドストレージにバックアップされたサードパーティアプリケーションデータは、アプリ毎のバックアップデータとして格納される。サードパーティアプリケーションデータの最新の改訂版のみがクラウドストレージ内のロケーションに格納される。任意選択で、データのアップロードは、変更されたデータのみがクラウドストレージにアップロードされるバイナリ差分法によって達成されてもよい。バイナリ差分法を使用して、サードパーティアプリケーションデータの現在の状態が以前にアップロードされたバックアップと比較され、サードパーティアプリケーションデータにどのような変更が生じたのかが判定される。現在のサードパーティアプリケーションデータと以前のサードパーティアプリケーションデータバックアップとの比較は、チェックサム方法によって達成されてもよい。このアプローチでは、サードパーティアプリケーションデータの最終アップロードのカスタムチャンクサイズに関するチェックサムは、クライアントデバイス上でローカルに計算される。生のサードパーティアプリケーションデータ全体をアップロードするのではなく、差分を示すデータのみをクラウドストレージにアップロードすることで、帯域幅を節約し、バックアップのアップロードに必要な時間を短縮することができる。したがって、バイナリ差分プロトコルを使用してアップロードするサードパーティアプリケーションデータへの変更を判定することで、サードパーティアプリケーション方式毎の1回のアップロードの効率が向上する。
【0036】
いくつかの実施形態では、バイナリ差分法を使用して、サードパーティアプリケーションデータのアップロードを実行すべきかどうかを決定し、サードパーティアプリケーションデータにどのような変更が生じたか、およびクラウドストレージにアップロードすべきものを決定する。クライアントデバイスのバックアップトランスポートは、サードパーティアプリケーションデータからデータを読み取り、そのデータを段階的に処理する。クライアントデバイスのバックアップフレームワークは、少なくとも1つのチェックサムチャンクを格納する。クライアントデバイスのバックアップトランスポートが読み取る各バイト毎に、最後のNバイトのローリングチェックサムが計算され、かつ最後のアップロードに関連するチャンクのチェックサムと比較される。サードパーティアプリケーションデータを最後にアップロードしたときのチャンクのチェックサムがサーバーに格納され、比較のためにダウンロードされる。新しく計算されたチェックサムと格納されたチェックサムとが一致しない場合、最も古いバイトがサーバーに送信される。一致した場合、チャンクはクラウドストレージにアップロードされない。
【0037】
いくつかの実施形態において、サードパーティアプリケーションデータのバックアップは、自動的に設定され、かつ設定されたスケジュールに従って実行されるように構成される。サードパーティアプリケーションデータのバックアップおよびアップロードは、全てのサードパーティアプリケーション202a、202b、202cに自動的かつ共通であり、サードパーティアプリケーションの開発者は、このシステムでサードパーティアプリケーションデータをバックアップするためにサードパーティアプリケーション構成を何らかの方法で変更する必要がない。サードパーティアプリケーション202a、202b、202cの開発者は、サードパーティアプリケーション202a、202b、202cの構成の詳細またはマニフェストを変更することによって、バックアップからオプトアウトすることができる。全データバックアップが望ましくないサードパーティアプリケーション202a、202b、202cの例は、金融アプリケーション、パスワードストレージアプリケーションまたはパスワードストレージ認証者である。自動バックアップからオプトアウトした開発者のサードパーティアプリケーション202a、202b、202cは、ユーザーまたはサードパーティアプリケーション202a、202b、202cによって別の手動メカニズムによってバックアップされてもよい。
【0038】
サードパーティアプリケーションデータがクラウドストレージにアップロードされて格納されると、サードパーティアプリケーションデータのバックアップは、ユーザーのビューから隠されても、ユーザーのクラウドストレージアカウントに関連付けられたままになっていてもよい。あるいは、サードパーティアプリケーションデータのバックアップは、クラウドストレージファイルシステム内のユーザーインタフェースを介してユーザーがアクセス可能であってもよい。ユーザーインタフェースを介してサードパーティアプリケーションデータのバックアップにアクセスすることにより、ユーザーは、クラウドストレージシステム内であってサードパーティアプリケーションデータまたは他のデータを変更または操作することができる。例えば、写真編集サードパーティアプリケーションに関連するデータのバックアップは、ユーザーのアカウントに関連するクラウドストレージファイルシステムのユーザーインタフェースを介してバックァアップファイルにおいてユーザーがアクセスおよび編集または操作し得る編集された写真または編集されていない写真を含み得る。ユーザーは、データのバックアップを削除するために、サードパーティアプリケーションデータのバックアップにアクセスすることもできる。
【0039】
いくつかの実施形態において、サードパーティアプリケーションデータのバックアップは、クラウドストレージシステム内の階層的なフォルダに格納される。サードパーティアプリケーションのバイナリデータおよびメタデータは、ユーザーに関連付けられたフォルダ内に格納されてもよい。バックアップデータを含むフォルダは、クライアントデバイスおよびサードパーティアプリケーションが識別可能なように構成されている。これには、クライアントデバイス用のサードパーティアプリケーションデータバックアップに関連付けられたオブジェクトファミリールートフォルダ、クライアントデバイスID、格納されているサードパーティアプリケーションデータバックアップ、名前などのアプリケーションシグネチャ、場合によってはサードパーティのアプリケーションデータファイル用のタールボールが含まれ得る。オブジェクトファミリールートフォルダは、ユーザーのアカウントに関連付けられているにもかかわらず、ユーザーが使用できない場合がある。このフォルダは、イベントの同期中にも同期化されないことがある。
【0040】
データのリストア
本開示のシステムおよび方法によれば、クラウドストレージに格納されているサードパーティアプリケーションデータをクライアントデバイス201にリストアすることができる。リストアパスを実施するために、サードパーティアプリケーションデータは、クライアントデバイス201によるコマンドに続いて取り出され得る。サードパーティアプリケーション202a、202b、202cのリストア中、アップロードサーバー224は、データをダウンロードするように構成される。この場合、アップロードサーバー224は、ダウンロードサーバー230と呼称される。クラウドストレージシステムからデバイスにサードパーティアプリケーションデータをリストアすることは、
図2に記載のいくつかの構成要素を有する
図4に示す以下のステップを使用してアプリケーションベース毎に行うことができる。
【0041】
図4のステップ1において、デバイスのリストア時に、クライアントデバイス201のバックアップトランスポート210は、デバイスIDおよびサードパーティアプリケーションIDをバックアップサーバー218に送信することによって、サードパーティアプリケーションデータのダウンロードを開始する。これにより、クライアントデバイス201およびユーザーに関連するデータが要求されるサードパーティアプリケーション202a、202b、202cが特定される。
【0042】
ステップ2において、バックアップサーバー218は、クライアントデバイス201からの識別情報及びサードパーティアプリケーションのデータリストア要求を受信すると、サードパーティアプリケーションデータの最後の成功したバックアップからの成功信号をクライアントデバイス201に返信する。成功信号は、メタデータストレージロケーションへの参照を含む。
【0043】
ステップ3において、クライアントデバイスのバックアップトランスポート210は、ダウンロードサーバー230に接続し、ダウンロードサーバー230にメタデータストレージロケーション参照を有する成功信号を送信する。
【0044】
ステップ4において、ダウンロードサーバー230は、メタデータストレージロケーション参照を使用して、メタデータストレージ226にサードパーティアプリケーションのメタデータを要求する。
【0045】
ステップ5において、ダウンロードサーバー230は、サードパーティアプリケーションのメタデータと、サードパーティアプリケーションデータのバックアップ中にメタデータに付加されたバイナリストレージロケーション参照とを受信する。
【0046】
ステップ6において、ダウンロードサーバー230は、バイナリストレージロケーション参照を使用してバイナリデータストレージ228にサードパーティアプリケーションのバイナリデータを要求する。
【0047】
ステップ7において、サードパーティアプリケーションのバイナリデータがバイナリデータストレージ228から抽出され、ダウンロードサーバー230に送信される。
ステップ8で、ダウンロードサーバー230は、要求されたサードパーティアプリケーションのバイナリデータおよびメタデータをクライアントデバイスのバックアップトランスポート210に直接提供する。クライアントデバイスのバックアップトランスポート210は、配信されたデータをサードパーティアプリケーションデータのストレージに関連するクライアントデバイスのストレージ内の特定のロケーションに抽出する。データがデバイスにリストアされる各サードパーティアプリケーション202a、202b、202cは、データの格納のために指定されたクライアントデバイスのストレージ内の別個のロケーションを有することができる。したがって、クライアントデバイスのバックアップトランスポート210は、クライアントデバイス201上のサードパーティアプリケーション202a、202b、202cを実行し、すべてのサードパーティアプリケーション設定およびファイルをリストアする。
【0048】
上述したリストア方法は、新たなデバイスを設定するためのセットアップ処理中に実行されてもよい。アカウントがクライアントデバイス201に追加されると、クライアントデバイスのバックアップフレームワーク208は、バックアップがクラウドストレージに既に格納されているかどうかをチェックすることができる。格納されていれば、サードパーティアプリケーション202a、202b、202c毎にサードパーティアプリケーションデータがリストアされる。例えば、クライアントデバイス201は、サードパーティアプリケーション202a、202bまたは202cについてバックアップサーバー218に問い合わせる。バックアップサーバー218がクライアントデバイス201に成功信号を供給する場合、これは、アプリケーションのバックアップがクラウドストレージ内に存在することを示す。
【0049】
特定の要求されたサードパーティアプリケーション202a、202b、202cに対するサードパーティアプリケーションデータのバックアップが存在することがリストア要求中に判定された場合、サードパーティアプリケーションデータをダウンロードするプロセスが開始される。バイナリデータストレージロケーション参照は、格納されたメタデータから取得される。バイナリデータストレージロケーション参照を使用してバイナリデータストレージ228内の適切なサードパーティアプリケーションのバイナリデータを発見すると、ダウンロードサーバー230によってタールボールファイル(「.tar」アーカイブファイル)がバイナリデータストレージ228からダウンロードされる。ダウンロードサーバー230は、サードパーティアプリケーションデータをクライアントデバイス201に提供する。要求されたサードパーティアプリケーションに対するバックアップが識別されない場合、サードパーティアプリケーション設定をリストアする別の手段(キーと値のペアを含む)が試行される。
【0050】
クラウドストレージからサードパーティアプリケーションデータを新たなデバイスにリストアすることにより、ユーザーは、デバイス上でサードパーティアプリケーション202a、202b、202cにおける同じ環境および設定を経験し、かつリストア時に以前のデバイス上のサードパーティアプリケーション202a、202b、202c内と同じ環境を経験することができる。これには、アプリケーションの外観やその機能などのユーザープリファレンスが含まれる。アプリケーションに格納されたデータを含む、アプリケーション固有のデータもリストアされる。例えば、テキストメッセージングアプリケーションであるサードパーティアプリケーション用の格納されたデータは、テキスト、写真、オーディオファイル、テキストメッセージの履歴および連絡先を含むことができる。これらは、記載されたアップロード方法によってクラウドストレージに格納され、リストア要求によってデバイスにリストアされる。サードパーティアプリケーションデータのリストア後、サードパーティアプリケーションデータのバックアップは、追加のリストアまたはダウンロード要求で使用するためにクラウドストレージに保持される。
【0051】
いくつかの実施形態において、ユーザーは、サードパーティアプリケーションデータをクラウドストレージにアップロードした第1のデバイスと第2のデバイスとを同期化するためにリストア要求を開始することができる。ユーザーは、サードパーティアプリケーション202a、202b、202cが同じアプリケーション設定、環境およびコンテンツを含むように、2つのデバイス間でサードパーティアプリケーション202a、202b、202cを同期化する手段として機能するリストアプロセスを開始することができる。
【0052】
いくつかの実施形態において、本開示のシステムおよび方法は、既存のバックアップ方法との後方互換性(backwards compatibility)を維持する態様で実施されてもよい。リストアプロセスは、古いバージョンのバックアッププロトコルで作成されたバックアップ(たとえば、キーと値のペアの使用に依存するバックアッププロトコル)からサードパーティアプリケーションデータをリストアするオプションをユーザーに提供する。このようにして、本明細書に記載の方法に従ってバックアップおよびリストアに必要なソフトウェアで動作するクライアントデバイス201は、以前のバックアップ方法を使用して行われたバックアップからリストアを要求することができる。ユーザーは、以前のバックアップおよびリストアソフトウェアを使用しながら、記載された方法で作成されたバックアップからサードパーティアプリケーションデータをリストアすることもできる。以前のバックアップソフトウェアは、メタデータストレージロケーションの参照を含む成功信号および新たなデータを無視し、代わりにリストアのためにメタデータとともに格納されているキーと値のペアに依存するため、古いバックアップとリストアソフトウェアで行われたリストアは成功する。
【0053】
バックアップおよびリストアの方法は後方互換性があり、かつ移行すべきキーと値のペアの方法によって実行された以前のバックアップの移行(migration)を必要としない。本明細書で説明するバックアップ方法は、キーと値のペアを含むバックアップと互換性がある。さらに、記載されたバックアップ方法を使用するには、サードパーティアプリケーションファイルの完全な記録を確立するために、すべてのアプリケーションデータの最初の全バックアップが必要である。これらのファイルは、バックアップの必要性を判定するために、クライアントデバイス上に存在するサードパーティアプリケーションデータとの比較に使用される。バックアップ方法へのアクセスを受信すると、サードパーティアプリケーション202a、202b、202cの完全な初期バックアップによって、以前のキーと値のペアのバックアップファイルの必要性が除去される。いくつかの実施形態では、以前にバックアップされたサードパーティアプリケーションデータを含むキーと値のペアも、全データバックアップの一部としてバックアップされる。
【0054】
デバイスが廃止される(decommissioned)と、以前にデバイスに格納されたサードパーティアプリケーションデータが新たなデバイスにリストアされる。しかしながら、廃止されたデバイスは、サードパーティアプリケーションデータがクラウドに格納されているが、もはやユーザーまたは機能するクライアントデバイス201に接続されていない「孤立したデータセット」の存在につながる可能性がある。これらの孤立したデータセットを除去する方法が行われてもよい。孤立したデータセットは、一定期間後に期限切れになるように設定されてもよい。あるいは、ユーザーが、デバイス上のユーザーインタフェースまたはクライアントデバイス201に関連付けられたユーザーアカウントを介して、デバイスが廃止されたか、または非アクティブになることを通知してもよい。
【0055】
新たなバックアップおよびリストア方法のフェーズイン時には、クライアントデバイス201用のサードパーティアプリケーションデータが完全にバックアップされるため、クラウドストレージへの圧倒的な量のデータフローが生じる可能性がある。このバックアップ機能の最初の展開(roll−out)中に、クライアントとサーバー側の両方のメカニズムによりアップロードフローを制御することができる。たとえば、アップロード機能およびリストア機能へのユーザーアクセスは、デバイスに基づいて制限されてもよい。クライアントデバイスは、特定のクライアントデバイスまたはクライアントデバイスモデル上の機能を設定または無効にするように構成することができる。代替的に、機能をクライアントデバイスのある割合のユーザーにのみ展開して、追加の割合のユーザーにその機能を展開する前に、これらのユーザーに対してサードパーティアプリケーションデータの初期アップロード時間を与えるようにすることもできる。さらに、アップロード機能とリストア機能の対象となるサードパーティのアプリケーションが経時的に増加しつつ、アップロードおよびリストア機能へのアクセスがサードパーティアプリケーションに基づいて制限されるようにしてもよい。2つのモードを切り替えることによってデータフローを制御するためにバックアップ期間の構成を変更することもできる。第1のモードによれば、アップロードプロセスは、サードパーティアプリケーションデータに十分な量の変更がある場合に開始されてもよい。第2のモードによれば、アップロードプロセスは、例えばN日毎に1回など所定のスケジュールに基づいて開始されてもよい。
【0056】
サーバー側では、フラグや機能スイッチなどのサーバー上の調整レバー(throttling levers)の実装によってデータフローを制御することができる。フラグまたは機能スイッチは、アップロードサーバーおよびバックアップサーバーによって読み取り可能である。設定されたサーバーの上限を超えると、フラグは調整による失敗を示すカスタムエラーコードを返す。このカスタムエラーコードには、別の試行が行われる前に待機することを推奨する期間を示すフィールドも含まれている。アップロードコール全体を無効にする緊急時のダウンストリームサービスを保護するために、追加のフラグを組み込むこともできる。
【0057】
図5は、サードパーティアプリケーションデータをクラウドストレージに格納するための方法500を示すフローチャートを示す。方法500は、サードパーティアプリケーションに関連するデータをクラウドストレージサーバーにダウンロードすることを決定するステップ(ステップ502)と、サードパーティアプリケーションのバイナリデータを第1のクラウドストレージロケーションに格納するステップ(ステップ504)と、第1のクラウドストレージロケーションのストレージアドレスを含むようにメタデータを更新するステップ(ステップ506)と、更新されたメタデータを第1のクラウドストレージロケーションとは異なる第2のクラウドストレージロケーションに格納するステップ(ステップ508)とを含む。
【0058】
ステップ502において、クライアントデバイスのバックアップフレームワーク(例えば、
図2の208)は、クライアントデバイス上のサードパーティアプリケーションに関連するデータがクラウドストレージサーバーにダウンロードされるべきであることを決定する。サードパーティアプリケーションデータをクラウドストレージサーバーにダウンロードする要件は、スケジューリングされたダウンロード、データをアップロードするためのユーザー要求、またはサードパーティアプリケーションデータの変更に基づいて決定されてもよい。いくつかの実施形態において、サードパーティアプリケーションデータをダウンロードする要件は、チェックサム方法を使用してクラウドストレージサーバーに現在格納されているサードパーティアプリケーションデータと、クライアントデバイスに格納されたサードパーティアプリケーションデータとの比較によって決定されてもよい。クラウドストレージにダウンロードされるサードパーティアプリケーションデータには、バイナリデータとメタデータの両方が含まれる。
【0059】
ステップ504において、バイナリデータは、第1のクラウドストレージロケーションに格納される。クラウドストレージロケーションは、関連するストレージアドレスを有する。サードパーティアプリケーションに関連するバイナリデータは、クライアントデバイスのバックアップトランスポート(例えば、
図2の210)からデータタールボール(例えば、「.tar」アーカイブファイル)としてアップロードサーバーに送信される。バイナリデータは、大量のバイナリデータを格納するように設計された第1のクラウドストレージロケーションに格納される。
【0060】
ステップ506において、サードパーティアプリケーションに関連するメタデータは、第1のクラウドストレージロケーションのストレージアドレスを含むように更新される。クラウドストレージサービス(例えば、
図2の203)は、バイナリストレージアドレスをメタデータに付加する。したがって、バイナリデータは、サードパーティメタデータと関連付けることができ、かつ更新されたメタデータ内のクラウドストレージアドレスを使用して取得することができる。ストレージロケーションは、サードパーティアプリケーションのバイナリデータのファイルロケーションを指し示す数値ストリングであってもよい。いくつかの実施形態において、クラウドストレージサービスは、格納の前に、追加のディスクリプタおよび命令をメタデータに付加してもよい。
【0061】
ステップ508において、更新されたメタデータは、第2のクラウドストレージロケーションに格納される。第2のクラウドストレージロケーションは、第1のクラウドストレージロケーションとは異なり、かつメタデータのストレージ用に最適化されている。成功信号は、バイナリデータおよびメタデータの格納に成功した後にアップロードサーバーに戻されてもよい。成功信号は、さらに、メタデータにアクセスするために使用されるメタデータのロケーションへの参照を含み得る。
【0062】
図6は、サードパーティアプリケーションデータをクライアントデバイスにリストアするための方法600を示すフローチャートを示す。方法600は、クラウドストレージからクライアントデバイスにサードパーティアプリケーションに関連するデータを提供するかどうかを決定するステップ(ステップ602)と、メタデータを使用して第1のクラウドストレージロケーションのストレージアドレスを決定するステップ(ステップ604)と、バイナリデータを第1のストレージロケーションからクライアントデバイスに提供するステップ(ステップ606)とを含む。
【0063】
ステップ602において、サードパーティアプリケーションに関連するデータをクライアントデバイスに提供するためにリストアが必要であるかどうかが決定される。リストアは、ユーザーからの要求または選択、またはサードパーティアプリケーションによる要求に応答的であってもよい。リストアは、またデバイス間の同期として実行されてもよい。サードパーティアプリケーションに関連するデータは、第1のクラウドロケーションに格納されたバイナリデータと、第2のクラウドストレージロケーションに格納されたストレージアドレスおよびメタデータの両方を含む。クライアントデバイスのバックアップトランスポート(例えば、
図2の210)は、クライアントデバイスに関連するデバイスIDと、サードパーティアプリケーションに関連するサードパーティアプリケーションIDとをバックアップサーバー(例えば、
図2の218)に送信することによって、データダウンロードを開始する。
【0064】
ステップ604は、サードパーティアプリケーションに関連する以前に格納されたメタデータを使用して、バイナリデータのストレージアドレスを決定することを含む。バックアップサーバーは、デバイスIDおよびサードパーティアプリケーションIDを含む識別情報を受信した後、サードパーティアプリケーションデータの最後の成功したバックアップの成功信号をクライアントデバイスに送信する。成功信号は、メタデータストレージロケーションへの参照を含む。次に、サードパーティアプリケーションデータの以前のバックアップ中にメタデータに付加されたバイナリストレージロケーション参照を得るために、メタデータをメタデータストレージから取得することができる。
【0065】
ステップ606で、取得されたバイナリデータストレージロケーションアドレスを使用して、サードパーティアプリケーションに関連するバイナリデータを見つけだして要求する。バイナリデータおよびメタデータは、ダウンロードサーバーによってバックアップトランスポートを介してクライアントデバイスに送信される。バイナリデータおよびメタデータは、クライアントデバイス上のストレージに配信される。
【0066】
本開示の様々な実施形態が本明細書に示され説明されたが、そのような実施形態は単なる例示として提供されることは当業者には明らかであろう。本開示から逸脱することなく、当業者には数多くの変形、変更、および置換が可能である。本明細書に記載された開示の実施形態に対する様々な代替が、本開示を実施する際に採用され得ることを理解されたい。
【0067】
A1. サードパーティアプリケーションデータをクラウドストレージにアップロードするための方法であって、その方法は、
クライアントデバイスからサードパーティアプリケーションに関連するデータをアップロードするかどうかを決定するステップであって、前記サードパーティアプリケーションに関連するデータがバイナリデータおよびメタデータを含む、ステップと、
前記サードパーティアプリケーションのバイナリデータと前記サードパーティアプリケーションのメタデータとをクラウドストレージに送信するステップと
を含み、
前記バイナリデータは、ストレージアドレスを有する第1のクラウドストレージロケーションに格納され、
更新されたメタデータを取得するために前記メタデータには前記ストレージアドレスが付加され、
更新されたメタデータは、前記第1のクラウドストレージロケーションとは異なる第2のクラウドストレージロケーションに格納される、方法。
【0068】
A2. 前記サードパーティアプリケーションのバイナリデータは、前記サードパーティアプリケーションについての全データを含む、実施形態A1に記載の方法。
A3. 前記サードパーティアプリケーションに関連するデータをアップロードするかどうかを決定するステップは、
前記クライアントデバイスに格納された前記サードパーティアプリケーションに関連する格納されたバイナリデータを識別するステップと、
前記サードパーティアプリケーションに関連する以前にアップロードされたバイナリデータを識別するステップと、
前記格納されたバイナリデータと前記以前にアップロードされたバイナリデータとの間の差を計算するステップと、
前記差を閾値と比較するステップとを含む、実施形態A1またはA2に記載の方法。
【0069】
A4. 前記差が前記閾値以上である場合、前記クライアントデバイスは、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態A3に記載の方法。
【0070】
A5. 前記クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、前記複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての前記対応するバイナリデータおよび前記対応するメタデータは、1回のアップロードで前記クライアントデバイスからアップロードされる、実施形態A1乃至A4のいずれか1つに記載の方法。
【0071】
A6. 前記サードパーティアプリケーションに関連するデータは、送信前に前記クライアントデバイス上で完全には複製されない、実施形態A1乃至A5のいずれか1つに記載の方法。
【0072】
A7. 前記クライアントデバイスは、所定のアップロードスケジュールに基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態A1乃至6のいずれか1つに記載の方法。
【0073】
A8. 前記クライアントデバイスは、前記サードパーティアプリケーションによって報告される前記サードパーティアプリケーションへの変更の検出に基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態A1乃至7のいずれか1つに記載の方法。
【0074】
A9. 前記クライアントデバイスは、前記クライアントデバイスのユーザーからバックアップ要求を受信したときに、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、請求項1乃至8のいずれか1つに記載の方法。
【0075】
A10. 前記バイナリデータおよび前記メタデータを送信するステップは、
前記サードパーティアプリケーションのバイナリデータおよびメタデータを単一のファイルに集約するステップと、
前記ファイルを前記クラウドストレージ内のアップロードサーバーに送信するステップと
を含み、前記アップロードサーバーは、
前記バイナリデータを前記メタデータから分離し、
前記第1のクラウドストレージロケーションに格納するために前記バイナリデータを送信し、
更新されたメタデータを取得するために前記第1のクラウドストレージロケーションの前記ストレージアドレスを前記メタデータに付加し、
前記第2のクラウドストレージロケーションに格納するために前記更新されたメタデータを送信する
ように構成されている、実施形態A1乃至A9のいずれか1つに記載の方法。
【0076】
A11. 前記単一のファイルは、「.tar」ファイルタイプを有する、実施形態A10に記載の方法。
A12. 前記サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む、実施形態A1乃至A11のいずれか1つに記載の方法。
【0077】
A13. 前記第2のクラウドストレージロケーションへの参照を前記クライアントデバイスにおいて受信するステップをさらに含む、実施形態A1乃至A12のいずれか1つに記載の方法。
【0078】
A14. 前記バイナリデータが前記第1のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのバイナリデータが上書きされ、前記更新されたメタデータが前記第2のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのメタデータが上書きされる、実施形態A1乃至A13のいずれか1つに記載の方法。
【0079】
A15. 送信された前記バイナリデータおよび前記メタデータは、前記クラウドストレージへのアクセスを有するユーザーインタフェースを介してユーザーがアクセス可能である、実施形態A1乃至A14のいずれか1つに記載の方法。
【0080】
A16. 前記クライアントデバイスは第1のクライアントデバイスであり、前記バイナリデータおよび前記更新されたメタデータは第2のクライアントデバイスにダウンロードされて、前記第1のクライアントデバイス上の前記サードパーティアプリケーションデータが第2のデバイス上のサードパーティアプリケーションデータと同期化される、実施形態A1乃至A15のいずれか1つに記載の方法。
【0081】
A17. 前記バイナリデータおよび前記メタデータは、前記クラウドストレージ内のアップロードサーバーに送信され、前記アップロードサーバーは、前記バイナリデータを前記第1のクラウドストレージロケーションに書き込み、前記更新されたメタデータを書き込みのために前記第2のクラウドストレージロケーションに送信する、実施形態A1乃至A16のいずれか1つに記載の方法。
【0082】
A18. 前記アップロードサーバーは、前記第2のクラウドストレージロケーションから前記更新されたメタデータを読み出して前記第2のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記更新されたメタデータを送信する、実施形態A17に記載の方法。
【0083】
A19. 前記バイナリデータの送信はキーと値のペアを使用しない、実施形態A1乃至A18のいずれか1つに記載の方法。
A20. 前記サードパーティアプリケーションに関連するデータを全データバックアッププロセスまたは部分データバックアッププロセスを使用して送信することが前記サードパーティアプリケーションに関連付けられたマニフェストに示されているかどうかを判定するステップと、
部分データバックアッププロセスが使用されると決定した場合には、前記バイナリデータのいずれも前記クラウドストレージに送信することなく前記クラウドストレージに前記メタデータの一部を送信するステップと
をさらに含む、実施形態A1乃至A19のいずれか1つに記載の方法。
【0084】
A21. 前記クラウドストレージへの前記メタデータの一部の送信は、キーと値のペアを使用することを含む、実施形態A20に記載の方法。
A22. 実施形態A1乃至A21のいずれか1つに記載の方法を実行するためのシステム。
【0085】
B1. サードパーティアプリケーションデータをクラウドストレージに格納するための方法であって、
クライアントデバイスに格納されたサードパーティアプリケーションに関連するデータをクラウドストレージサーバーにダウンロードすることを決定するステップであって、前記サードパーティアプリケーションに関連するデータがバイナリデータおよびメタデータを含む、ステップと、
ストレージアドレスを有する第1のクラウドストレージロケーションに前記サードパーティアプリケーションのバイナリデータを格納するステップであって、前記メタデータは、前記ストレージアドレスを含むように更新される、ステップと、
更新された前記メタデータを前記第1のクラウドストレージロケーションとは異なる第2のクラウドストレージロケーションに格納するステップと
を含む方法。
【0086】
B2. 前記サードパーティアプリケーションのバイナリデータは、前記サードパーティアプリケーションについての全データを含む、実施形態B1に記載の方法。
B3. 前記クライアントデバイスは、前記データをアップロードするかどうかを
前記クライアントデバイスに格納された前記サードパーティアプリケーションに関連する格納されたバイナリデータを識別することと、
前記サードパーティアプリケーションに関連する以前にアップロードされたバイナリデータを識別することと、
前記格納されたバイナリデータと前記以前にアップロードされたバイナリデータとの間の差を計算することと、
前記差を閾値と比較することと
によって決定する、実施形態B1またはB2に記載の方法。
【0087】
B4. 前記差が前記閾値以上である場合、前記クライアントデバイスは、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態B3に記載の方法。
【0088】
B5. 前記クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、前記複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての前記対応するバイナリデータおよび前記対応するメタデータは、1回のアップロードで前記クライアントデバイスからアップロードされる、実施形態B1乃至B4のいずれか1つに記載の方法。
【0089】
B6. 前記サードパーティアプリケーションに関連するデータは、前記データのダウンロード前に前記クライアントデバイス上で完全には複製されない、実施形態B1乃至B5のいずれか1つに記載の方法。
【0090】
B7. 前記クライアントデバイスは、所定のアップロードスケジュールに基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態B1乃至B6のいずれか1つに記載の方法。
【0091】
B8. 前記クライアントデバイスは、前記サードパーティアプリケーションによって報告される前記サードパーティアプリケーションへの変更の検出に基づいて前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態B1乃至B7のいずれか1つに記載の方法。
【0092】
B9. 前記クライアントデバイスは、前記クライアントデバイスのユーザーからバックアップ要求を受信したときに、前記サードパーティアプリケーションに関連するデータをアップロードすることを決定する、実施形態B1乃至B8のいずれか1つに記載の方法。
【0093】
B10. 前記クライアントデバイスは、
前記サードパーティアプリケーションのバイナリデータおよびメタデータを単一のファイルに集約し、
前記ファイルを前記クラウドストレージ内のアップロードサーバーに送信する
ように構成され、前記アップロードサーバーは、
前記バイナリデータを前記メタデータから分離し、
前記第1のクラウドストレージロケーションに格納するために前記バイナリデータを送信し、
更新されたメタデータを取得するために前記第1のクラウドストレージロケーションの前記ストレージアドレスを前記メタデータに付加し、
前記第2のクラウドストレージロケーションに格納するために前記更新されたメタデータを送信する
ように構成されている、実施形態B1乃至B9のいずれか1つに記載の方法。
【0094】
B11. 前記単一のファイルは、「.tar」ファイルタイプを有する、実施形態B10に記載の方法。
B12. 前記サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む、実施形態B1乃至B11のいずれか1つに記載の方法。
【0095】
B13. 前記第2のクラウドストレージロケーションへの参照を前記クライアントデバイスに送信するステップをさらに含む、実施形態B1乃至B12のいずれか1つに記載の方法。
【0096】
B14. 前記バイナリデータが前記第1のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのバイナリデータが上書きされ、前記更新されたメタデータが前記第2のクラウドストレージロケーションに格納されると、以前にアップロードされた前記サードパーティアプリケーションのメタデータが上書きされる、実施形態B1乃至B13のいずれか1つに記載の方法。
【0097】
B15. 送信された前記バイナリデータおよび前記メタデータは、前記クラウドストレージへのアクセスを有するユーザーインタフェースを介してユーザーがアクセス可能である、実施形態B1乃至B14のいずれか1つに記載の方法。
【0098】
B16. 前記クライアントデバイスは第1のクライアントデバイスであり、前記方法は、前記バイナリデータおよび前記更新されたメタデータを第2のクライアントデバイスに送信するステップをさらに含み、前記第1のクライアントデバイス上の前記サードパーティアプリケーションデータが第2のデバイス上のサードパーティアプリケーションデータと同期化される、実施形態B1乃至B15のいずれか1つに記載の方法。
【0099】
B17. 前記バイナリデータおよび前記メタデータは、前記クラウドストレージ内のアップロードサーバーに送信され、前記アップロードサーバーは、前記バイナリデータを前記第1のクラウドストレージロケーションに書き込み、前記更新されたメタデータを書き込みのために前記第2のクラウドストレージロケーションに送信する、実施形態B1乃至B16のいずれか1つに記載の方法。
【0100】
B18. 前記アップロードサーバーは、前記第2のクラウドストレージロケーションから前記更新されたメタデータを読み出して前記第2のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記更新されたメタデータを送信する、実施形態B17に記載の方法。
【0101】
B19. 前記バイナリデータの格納はキーと値のペアを使用しない、実施形態B1乃至B18のいずれか1つに記載の方法。
B20. 前記クライアントデバイスは、
前記サードパーティアプリケーションに関連するデータを全データバックアッププロセスまたは部分データバックアッププロセスを使用して送信することが前記サードパーティアプリケーションに関連付けられたマニフェストに示されているかどうかを判定し、
部分データバックアッププロセスが使用されると決定した場合には、前記バイナリデータのいずれも前記クラウドストレージに送信することなく前記クラウドストレージに前記メタデータの一部を送信する
ように構成されている、実施形態B1乃至B19のいずれか1つに記載の方法。
【0102】
B21. 前記メタデータの一部は、キーと値のペアを使用して前記クラウドストレージに送信される、実施形態B20に記載の方法。
B22. 実施形態B1乃至B21のいずれか1つに記載の方法を実行するためのシステム。
【0103】
C1. サードパーティアプリケーションデータをクライアントデバイスにリストアするための方法であって、
サードパーティアプリケーションに関連するデータを前記クライアントデバイスにダウンロードするかどうかを決定するステップであって、前記サードパーティアプリケーションに関連するデータは、ストレージアドレスを有する第1のクラウドストレージロケーションに格納されたバイナリデータと、第2のクラウドストレージロケーションに格納されたメタデータとを含む、ステップと、
前記メタデータを使用して前記第1のクラウドストレージロケーションの前記ストレージアドレスを決定するステップと、
前記第1のクラウドストレージロケーションから前記クライアントデバイスに前記バイナリデータをダウンロードするステップとを含む方法。
【0104】
C2. 前記サードパーティアプリケーションのバイナリデータは、前記サードパーティアプリケーションについての全データを含む、実施形態C1に記載の方法。
C3. 前記クライアントデバイスは、複数のサードパーティアプリケーションに関連するデータを格納し、前記複数のサードパーティアプリケーションにおける各サードパーティアプリケーションは、対応するバイナリデータおよび対応するメタデータに関連付けられ、各サードパーティアプリケーションについての前記対応するバイナリデータは、1回のダウンロードで前記クライアントデバイスにダウンロードされる、実施形態C1またはC2に記載の方法。
【0105】
C4. 前記クライアントデバイスは、前記クライアントデバイスのユーザーからリストア要求を受信したときに、前記サードパーティアプリケーションに関連するデータをダウンロードすることを決定する、実施形態C1乃至C3のいずれか1つに記載の方法。
【0106】
C5. 前記サードパーティアプリケーションに関連するデータは、アプリケーションデータ、ユーザープリファレンス、およびアプリケーションコンテンツを含む、実施形態C1乃至C4のいずれか1つに記載の方法。
【0107】
C6. 前記クライアントデバイスは第1のクライアントデバイスであり、前記バイナリデータおよび更新されたメタデータは第2のクライアントデバイスにダウンロードされて、前記第1のクライアントデバイス上の前記サードパーティアプリケーションデータが第2のデバイス上のサードパーティアプリケーションデータと同期化される、実施形態C1乃至C5のいずれか1つに記載の方法。
【0108】
C7. 前記バイナリデータおよび前記メタデータは、クラウドストレージ内のダウンロードサーバーに送信され、前記ダウンロードサーバーは、前記第1のクラウドストレージロケーションに前記バイナリデータを以前に書き込んでおり、かつ前記第2のクラウドストレージロケーションに書き込むために前記メタデータを以前に送信している、実施形態C1乃至C6のいずれか1つに記載の方法。
【0109】
C8. 前記ダウンロードサーバーは、前記第2のクラウドストレージロケーションから更新されたメタデータを読み出して前記第2のクラウドストレージロケーションに書き込むように構成されているクラウドストレージサービスに前記メタデータを以前に送信している、実施形態C7に記載の方法。
【0110】
C9. 別のサードパーティアプリケーションに関連するデータは、第3のクラウドストレージロケーションに格納されたメタデータを含み、かつバイナリデータを含まない、実施形態C1乃至C8のいずれか1つに記載の方法。
【0111】
C10. 前記別のサードパーティアプリケーションに関連するデータを前記クライアントデバイスにダウンロードするかどうかを決定するステップと、
前記別のサードパーティアプリケーションに関連する前記メタデータを、前記第3のクラウドストレージロケーションに格納された一組のキーと値のペアとして識別するステップと、
前記一組のキーと値のペアを前記クライアントデバイスにダウンロードするステップとをさらに含む実施形態C9に記載の方法。
【0112】
C11. 実施形態C1乃至C10のいずれか1つに記載の方法を実行するためのシステム。