(57)【特許請求の範囲】
【請求項１】
第１のファイルリストスナップショットを取得するステップであって、前記第１のファイルリストスナップショットは前回の同期が終了した時に記憶されたローカルファイルリストの情報を含む、ステップと、
前記第１のファイルリストスナップショットと現在のローカルファイルリストの情報とを比較して、第２のファイルリストスナップショットを取得するステップであって、前記第２のファイルリストスナップショットは現在の前記ローカルファイルリストの更新操作を含む、ステップと、
サーバへファイルリストスナップショット要求を送信するステップと、
前記サーバにより送信された第３のファイルリストスナップショットを受信するステップであって、前記第３のファイルリストスナップショットは前記サーバのファイルリストの情報を含む、ステップと、
前記第２のファイルリストスナップショット及び前記第３のファイルリストスナップショットに基づいて、同期されるファイルの識別子及び操作を決定し、前記同期されるファイルの識別子及び操作に基づいて、前記サーバとのファイル同期を行う、ステップと、を含み、
ファイルリストスナップショットは、ファイルリストをスキャンして生成されたものであり、該ファイルリストスナップショットは、ファイルリスト情報及びファイル状態を含み、該ファイル状態は、同期されるファイルの操作を決定するようにファイルリストスナップショット間の比較において該ファイルリスト内のファイルの更新操作を反映するために用いられる、ファイル同期方法。
【請求項２】
前記現在のローカルファイルリストの更新操作は、ローカル追加、ローカル削除及びローカル変更を含む、請求項１に記載のファイル同期方法。
【請求項３】
前記第２のファイルリストスナップショット及び前記第３のファイルリストスナップショットに基づいて、前記同期されるファイルの識別子及び操作を決定するステップは、
前記第２のファイルリストスナップショット及び前記第３のファイルリストスナップショットに基づいて、前記サーバのファイルリストの更新操作を決定するステップと、
前記ローカルファイルリストの更新操作及び前記サーバのファイルリストの更新操作に基づいて、前記同期されるファイルの識別子及び操作を決定するステップと、を含む、請求項１又は２に記載のファイル同期方法。
【請求項４】
前記ローカルファイルリストの更新操作及び前記サーバのファイルリストの更新操作に基づいて、前記同期されるファイルの識別子及び操作を決定するステップは、
前記ローカルファイルリストの更新操作及び前記サーバのファイルリストの更新操作に基づいて、操作カテゴリを決定するステップと、
前記同期されるファイルの識別子及び操作を決定するように、前記操作カテゴリに基づいて、前記ローカルファイルリストの更新操作と前記サーバのファイルリストの更新操作とをマージするステップと、を含む、請求項３に記載のファイル同期方法。
【請求項５】
前記同期されるファイルの識別子及び操作に基づいて、前記サーバとのファイル同期を行うステップは、
前記サーバにより送信された、前記サーバが他の同期用装置とファイル同期を行っていることを示す状態が受信された場合、前記サーバとのファイル同期を中断するステップ、をさらに含む、請求項１乃至４のいずれかに記載のファイル同期方法。
【請求項６】
前記同期されるファイルの識別子及び操作により特定された操作は、アップロード、ダウンロード、名前変更、又は削除を含む、請求項１乃至５のいずれかに記載のファイル同期方法。
【請求項７】
同期モードを設定するステップであって、前記同期モードは一方向の同期、双方向の同期、又は選択的同期を含む、ステップ、をさらに含む、請求項１乃至６のいずれかに記載のファイル同期方法。
【請求項８】
第１のファイルリストスナップショットを取得する第１の取得手段であって、前記第１のファイルリストスナップショットは前回の同期が終了した時に記憶されたローカルファイルリストの情報を含む、第１の取得手段と、
前記第１の取得手段により取得された第１のファイルリストスナップショットと現在のローカルファイルリストの情報とを比較して、第２のファイルリストスナップショットを取得する第２の取得手段であって、前記第２のファイルリストスナップショットは現在の前記ローカルファイルリストの更新操作を含む、第２の取得手段と、
サーバへファイルリストスナップショット要求を送信する送信手段と、
前記サーバにより送信された第３のファイルリストスナップショットを受信する受信手段であって、前記第３のファイルリストスナップショットは前記サーバのファイルリストの情報を含む、受信手段と、
前記第２の取得手段により取得された第２のファイルリストスナップショット及び前記受信手段により受信された第３のファイルリストスナップショットに基づいて、同期されるファイルの識別子及び操作を決定し、前記同期されるファイルの識別子及び操作に基づいて、前記サーバとのファイル同期を行う、同期手段と、を含み、
ファイルリストスナップショットは、ファイルリストをスキャンして生成されたものであり、該ファイルリストスナップショットは、ファイルリスト情報及びファイル状態を含み、該ファイル状態は、同期されるファイルの操作を決定するようにファイルリストスナップショット間の比較において該ファイルリスト内のファイルの更新操作を反映するために用いられる、ファイル同期装置。
【請求項９】
前記同期手段は、
前記第２の取得手段により取得された第２のファイルリストスナップショット及び前記受信手段により受信された第３のファイルリストスナップショットに基づいて、前記サーバのファイルリストの更新操作を決定し、
前記ローカルファイルリストの更新操作及び前記サーバのファイルリストの更新操作に基づいて、前記同期されるファイルの識別子及び操作を決定する、請求項８に記載のファイル同期装置。
【請求項１０】
前記同期手段は、前記サーバにより送信された、前記サーバが他の同期用装置とファイル同期を行っていることを示す状態が受信された場合、前記サーバとのファイル同期を中断する、請求項８又は９に記載のファイル同期装置。
【請求項１１】
同期モードを設定する設定手段であって、前記同期モードは一方向の同期、双方向の同期、又は選択的同期を含む、設定手段、をさらに含む、請求項８乃至１０のいずれかに記載のファイル同期装置。
【請求項１２】
コンピュータ装置にプログラムを実行させる際に、請求項１乃至７のいずれかに記載のファイル同期方法を実行させるコンピュータ読み取り可能なプログラム。
【請求項１３】
コンピュータ装置にプログラムを実行させる際に、請求項１乃至７のいずれかに記載のファイル同期方法を実行させるためのコンピュータ読み取り可能なプログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信技術の分野に関し、特にファイル同期方法及び装置に関する。
【背景技術】
【０００２】
インターネット技術の発展に伴い、より多くのユーザはファイル同期により端末上のファイルを管理している。これによって、ユーザは、異なる場所で、異なる端末で、サーバへファイルの更新を随時に同期することができ、サーバから最新のファイル情報を取得することができる。
【０００３】
従来の同期技術では、ユーザが端末の同期ディレクトリ内のファイルを更新した後、端末が一度ローカルの同期ディレクトリに対して完全なスキャンを行って、検証のためにスキャンされた各ファイルの情報をサーバへ送信して、該ファイルの更新状態、例えば追加又は削除などを決定し、ファイルが更新された場合、該ファイルをサーバへ同期する。このような同期は、端末とサーバとの双方向の同期、即ちサーバへ端末の更新を同期すると共に、端末へサーバの更新を同期することができない、という欠点がある。ここで、サーバの更新は、サーバと他の端末とやり取りを行った後の更新であってもよいし、サーバにおいて操作による更新であってもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施例は、同期用装置とサーバとの双方向の同期を図ることができるファイル同期方法及び装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の実施例では、第１のファイルリストスナップショットを取得するステップであって、前記第１のファイルリストスナップショットは前回の同期が終了した時に記憶されたローカルファイルリストの情報を含む、ステップと、前記第１のファイルリストスナップショットと現在のローカルファイルリストの情報とを比較して、第２のファイルリストスナップショットを取得するステップであって、前記第２のファイルリストスナップショットは現在の前記ローカルファイルリストの更新操作を含む、ステップと、サーバへファイルリストスナップショット要求を送信するステップと、前記サーバにより送信された第３のファイルリストスナップショットを受信するステップであって、前記第３のファイルリストスナップショットは前記サーバのファイルリストの情報を含む、ステップと、前記第２のファイルリストスナップショット及び前記第３のファイルリストスナップショットに基づいて、同期されるファイルの識別子及び操作を決定し、前記同期されるファイルの識別子及び操作に基づいて、前記サーバとのファイル同期を行う、ステップと、を含む、ファイル同期方法を提供する。
【０００６】
本発明の実施例では、第１のファイルリストスナップショットを取得する第１の取得手段であって、前記第１のファイルリストスナップショットは前回の同期が終了した時に記憶されたローカルファイルリストの情報を含む、第１の取得手段と、前記第１の取得手段により取得された第１のファイルリストスナップショットと現在のローカルファイルリストの情報とを比較して、第２のファイルリストスナップショットを取得する第２の取得手段であって、前記第２のファイルリストスナップショットは現在の前記ローカルファイルリストの更新操作を含む、第２の取得手段と、サーバへファイルリストスナップショット要求を送信する送信手段と、前記サーバにより送信された第３のファイルリストスナップショットを受信する受信手段であって、前記第３のファイルリストスナップショットは前記サーバのファイルリストの情報を含む、受信手段と、前記第２の取得手段により取得された第２のファイルリストスナップショット及び前記受信手段により受信された第３のファイルリストスナップショットに基づいて、同期されるファイルの識別子及び操作を決定し、前記同期されるファイルの識別子及び操作に基づいて、前記サーバとのファイル同期を行う、同期手段と、を含む、ファイル同期装置を提供する。
【０００７】
本発明の実施例によれば、本発明の実施例では、第２のファイルリストスナップショットが現在のローカルファイルリストの更新操作を含み、第３のファイルリストスナップショットがサーバのファイルリストの情報を含み、第２のファイルリストスナップショット及び第３のファイルリストスナップショットに基づいて決定された同期されるファイルの操作は、ローカルファイルリスト内のファイルの更新操作とサーバのファイルリスト内のファイルの更新操作の両方を含む。従って、同期されるファイルの識別子及び操作に基づいて、同期用装置とサーバとの双方向の同期を実現することができる。
【図面の簡単な説明】
【０００８】
本発明の実施例及び従来技術をより明確に説明するため、実施例又は従来技術を説明するために用いられる図面を紹介する。なお、下記の図面は本発明の一部の実施例にすぎないものであり、これらの図面から他の図面を得られることは、当業者にとって自明である。
【図１】本発明の実施例に係るファイル同期方法のフローチャートである。
【図２】本発明の実施例に係るファイル同期方法のシグナリングのフローチャートである。
【図３】本発明の実施例に係る同期用装置の構成を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の目的、態様及び効果をより明確にするため、実施形態及び図面を参照しながら、本発明を詳細に説明する。なお、本発明の例示的な実施形態及びその説明は、本発明を釈明するためのものであり、本発明を限定するものではない。
【００１０】
図１は、本発明の実施例に係るファイル同期方法のフローチャートである。本実施例では、好適には、端末を同期用装置、即ちファイル同期を実行する主体とする。実施例は具体的に以下のステップを含む。
【００１１】
１０１：第１のファイルリストスナップショットを取得する。
【００１２】
具体的には、端末は第１のファイルリストスナップショットを取得し、該第１のファイルリストスナップショットは、前回の同期が終了した時に記憶されたローカルファイルリストの情報を含み、該情報は、ファイルリスト内の複数のファイルの情報を指す。本発明の実施例では、ファイルリストスナップショットは、ある時点におけるファイルリストの映像情報を指す。ここで、ファイルリストスナップショットは、主にファイルリスト情報及びファイル状態を含み、ファイル状態は、初期状態に設定されてもよく、後の比較においてファイルリスト内のファイルの更新操作を反映して、ファイルの将来の動作を決定するために用いられる。
【００１３】
１０２：第１のファイルリストスナップショットと現在のローカルファイルリストの情報とを比較して、第２のファイルリストスナップショットを取得する。
【００１４】
具体的には、端末は、そのローカルファイルリストをスキャンし、ローカルファイルリストをスキャンすることによって得られた現在のローカルファイルリストの情報と第１のファイルリストスナップショット内の情報と比較して、ローカルファイルリストの第１のファイルリストスナップショットに対して完成された更新操作を取得する。ここで、更新操作は、ファイルリストスナップショット内のファイルの更新操作を指し、例えばローカルファイル追加、ローカルファイル削除及びローカルファイル変更などを含む。また、端末は、ローカルファイルリストの更新操作を第２のファイルリストスナップショットに追加し、該第２のファイルリストスナップショットは、更新された第１のファイルリストスナップショット、又は再生成されたファイルリストスナップショットであってもよい。
【００１５】
１０３：サーバへファイルリストスナップショット要求を送信する。
【００１６】
具体的には、端末は、サーバへファイルリストスナップショット要求を送信して、サーバのファイルリストの情報を取得する。
【００１７】
１０４：サーバにより送信された第３のファイルリストスナップショットを受信する。
【００１８】
具体的には、端末は、サーバにより送信された第３のファイルリストスナップショットを受信し、第３のファイルリストスナップショットは、サーバがファイルリストスナップショット要求を受信した後で生成されるものであり、サーバのファイルリストの情報を含む。
【００１９】
また、端末の前回の同期の終了から今回の同期におけるサーバへファイルリストスナップショット要求の送信までの期間にサーバが他の端末と同期操作を行って、サーバ内のファイル情報が更新された場合がある。このため、サーバのファイルリストの情報は、更新情報を含んでもよい。
【００２０】
１０５：第２のファイルリストスナップショット及び第３のファイルリストスナップショットに基づいて、同期されるファイルの識別子及び操作を決定し、同期されるファイルの識別子及び操作に基づいて、サーバとのファイル同期を行う。
【００２１】
具体的には、端末は、第２のファイルリストスナップショットと第３のファイルリストスナップショットとを比較して、サーバのファイルリスト内に完成した更新操作を決定する。従って、第２のファイルリストスナップショットに含まれているローカルファイルリストの完成した更新操作、及びサーバのファイルリストの完成した更新操作に基づいて、同期されるファイルの識別子及び操作が決定される。ここで、同期されるファイルの操作は、アップロード、ダウンロード、名前変更、又は削除を含む。
【００２２】
好ましくは、端末は、第２のファイルリストスナップショットに含まれているローカルファイルリストの更新操作及びサーバのファイルリストの更新操作に基づいて、操作カテゴリを決定し、同期されるファイルの識別子及び操作を決定するように、操作カテゴリに基づいてローカルファイルリストの更新操作とサーバのファイルリストの更新操作とをマージする。
【００２３】
同期されるファイルの識別子及び操作が決定された後、端末は、同期されるファイルの識別子及び操作に基づいて、サーバとのファイル同期操作を行う。
【００２４】
以上のことから、本実施例では、第２のファイルリストスナップショットが現在のローカルファイルリストの更新操作を含み、第３のファイルリストスナップショットがサーバのファイルリストの情報を含み、第２のファイルリストスナップショット及び第３のファイルリストスナップショットに基づいて決定された同期されるファイルの操作は、ローカルファイルリスト内のファイルの更新操作とサーバのファイルリスト内のファイルの更新操作の両方を含む。従って、同期されるファイルの識別子及び操作に基づいて、同期用装置とサーバとの双方向の同期を実現することができる。
【００２５】
図２は、本発明の実施例に係るファイル同期方法のシグナリングのフローチャートである。この実施例では、好ましくは、端末は同期用の装置として用いられている。本実施例は具体的に以下のステップを含む。
【００２６】
２０１：ログイン要求を送信する。
【００２７】
具体的には、端末は、サーバへログイン要求を送信し、ログイン要求はユーザ識別子を含み、ユーザ識別子はユーザ名又はパスワードであってもよい。ログイン要求は端末識別をさらに含んでもよく、複数の端末が同一のユーザ名を用いて同時にログインした時に、サーバは端末識別子に基づいて端末を区別してもよい。
【００２８】
２０２：ログイン認証を行う。
【００２９】
具体的には、ログイン要求を受信した後、サーバは、ログイン要求内のユーザ識別子を取得し、ユーザデータベース情報を照合することでユーザ識別子の承認を認証し、端末へ認証結果を送信する。異なる端末を区別するため、サーバは端末識別子をさらに認証してもよい。
【００３０】
２０３：ログイン応答を返す。
【００３１】
具体的には、端末はサーバにより送信された認証結果を受信し、認証結果は、ログイン失敗又はログイン成功であってもよい。ログインが成功した後、端末は同期ディレクトリを設定してもよく、同時に、ネットワークトラフィックの制限などのサービス需要を考慮して、端末は同期モードをさらに設定してもよい。同期モードは、一方向の同期（一方向のアップロード同期及び一方向のダウンロード同期を含む）、双方向の同期、又は選択的同期を含む。一方向の同期は、同期プロセスにおいて端末からサーバへの更新、又はサーバから端末への更新を同期的に行うことを指し、双方向の同期は、双方向の方式で端末とサーバとの同期を行うことを指し、選択的同期は、ユーザがファイルを選択的に同期させる、例えば特定のサブディレクトリや特定タイプのファイルのみを同期させることが許可されていることを指す。
【００３２】
２０４：第１のファイルリストスナップショットを取得する。
【００３３】
具体的には、ログインが成功した後、端末は第１のファイルリストスナップショットを取得し、該第１のファイルリストスナップショットは端末とサーバとの前回の同期が終了した時に記憶されたファイルリストの情報を含み、該情報はローカルの端末上に記憶されてもよい。従って、端末はローカルにおいて第１のファイルリストスナップショットを直接読み取ってもよい。また、第１のファイルリストスナップショットは、ファイル識別子、ファイルパス、ファイル作成時間、ファイルかディレクトリか、又はファイル状態を含んでもよく、ファイル識別子はファイル名又は他のファイル識別情報であってもよく、ファイル状態はファイルリスト内のファイルの更新操作を反映するために用いられる。また、第１のファイルリストスナップショットはバージョン番号をさらに含んでもよく、バージョン番号は、前回の同期が終了した時に、端末及びサーバにおける同期されるディレクトリ内のファイルリストのバージョン情報を識別する。
【００３４】
なお、端末が同期を行うことは初めてである、即ち前回の同期プロセスが存在しない場合、端末には第１のファイルリストスナップショットが存在しない。或いは、端末には第１のファイルリストスナップショットが存在しても、第１のファイルリストスナップショットの読み取りが失敗して、例えば第１のファイルリストスナップショットが紛失したり破損したりして、端末は、第１のファイルリストスナップショットを再構築するために、ローカル同期ディレクトリ内のファイル及びディレクトリを直接スキャンする必要がある。
【００３５】
例えば、第１のファイルリストスナップショットの一例は以下の通りである。
ファイル識別子  ファイルパス  ファイル作成時間  ファイルかディレクトリか  ファイル状態
1.TXT            \            1319162967        0                      初期
2.txt            \            1319163850        0                      初期
Hello            \            1319199057        1                      初期
a.txt            \Hello        1313916412        0                      初期
この例では、第１のファイルリストスナップショットは、1.TXT、2.txt、Helloディレクトリ、及びHelloディレクトリ内のa.txtなどのファイルに関する情報を含み、各レコードは、ファイル識別子、ファイルパス、ファイル作成時間、ファイルかディレクトリか、ファイル状態を含み、ファイルかディレクトリかの列には、0はファイルを表し、1はディレクトリを表し、ファイル状態は最初に初期と設定されている。
【００３６】
２０５：第１回の比較を行い、第２のファイルリストスナップショットを取得する。
【００３７】
端末は、ローカルファイルリストをスキャンし、ローカルファイルリストをスキャンすることで得られたファイルに関する情報（例えば、ファイル識別子、ファイルパス、ファイル作成時間、ファイルかディレクトリか、又はファイル状態）と第１のファイルリストスナップショット内の情報（例えば、ファイル識別子、ファイルパス、ファイル作成時間、ファイルかディレクトリか、ファイル状態）とを比較し、現在のファイルの情報と対応する第１のファイルリストスナップショット内の情報とを比較することによって現在のファイルの変更を決定し、第２のファイルリストスナップショットを生成する。ここで、第２のファイルリストスナップショットは、更新された第１のファイルリストスナップショット、又は再生成されたスナップショットであってもよい。
【００３８】
第２のファイルリストスナップショットは、ローカルファイルリストの更新操作を含む。好ましくは、各ファイルの更新操作は第２のファイルリストスナップショット内のファイル状態の列に記録されており、この際に、ファイル状態は初期状態から更新操作へ変更され、更新操作は、ローカルファイル追加、ローカルファイル削除及びローカルファイル変更を含む。
【００３９】
好ましくは、現在のローカルファイルリストの更新操作は第１のファイルリストスナップショットに記憶される、即ち更新された第１のファイルリストスナップショットは第２のファイルリストスナップショットとして用いられる。具体的には、第１のファイルリストスナップショットが対応するファイルの情報を含む場合、第１のファイルリストスナップショット内のファイルに関するファイル状態を変更し、第１のファイルリストスナップショットが対応するファイルの情報を含まない場合、第１のファイルリストスナップショットにファイルに関するレコードを追加し、該ファイルの状態を更新操作と設定する。
【００４０】
例えば、上記の例を続けると、端末の更新操作が、ファイル1.txtを削除すること、2.txtを2-rename.txtとを名前変更すること、及びHelloディレクトリをHello-renameと名前変更することを含む場合、端末によりスキャンを実行することで得られた現在の同期ディレクトリ内のファイル及びディレクトリの情報は以下の通りである。
ファイル識別子  ファイルパス  ファイル作成時間  ファイルかディレクトリか
2-rename.txt    \            1319163850        0
Hello-rename    \            1319199057        1
a.txt        \Hello-rename    1313916412        0
2-rename.txtのファイル情報がスキャンされた場合、第１のファイルリストスナップショットにファイルに関するレコードが存在しないと端末により発見されたとき、端末は、第１のファイルリストスナップショットにレコードを追加し、ファイルの状態をローカル追加（local_add）と設定する。Hello-renameディレクトリ内のファイルa.txtがスキャンされた場合、第１のファイルリストスナップショットにHello-rename\a.txtのレコードがないため、端末は第１のファイルリストスナップショットにレコードを追加し、ファイルの状態をローカル追加（Local_add）と設定する。端末がディレクトリHello-rename内の全てのファイルのスキャンを完成し、端末が第１のファイルリストスナップショットからHello-renameのレコードを発見しない場合、端末は、第１のファイルリストスナップショットにHello-renameのレコードを追加し、状態もローカル追加（Local_add）と更新する。
【００４１】
同期ディレクトリ内の現在のファイル及びディレクトリが完全にスキャンされた後、第１のファイルリストスナップショット内の更新状態を有しないレコードは、全てローカル削除（Local_del）とマークされている。従って、第１回の比較の後、更新された第１のファイルリストスナップショットに含まれる変更情報は以下の通りである。
ファイル識別子  ファイルパス  ファイル作成時間  ファイルかディレクトリか  ファイル状態
1.txt          \              1319162967        0                    local_del
2.txt          \              1319163850        0                    local_del
Hello          \              1319199057        1                    local_del
a.txt          \Hello        1313916412        0                    local_del
2-rename.txt    \            1319163850        0                    local_add
Hello-rename    \            1319199057        1                    local_add
a.txt          \Hello-rename  1313916412        0                    local_add
第１回の比較の後、更新された第１のファイルリストスナップショット、即ち第２のファイルリストスナップショットは、ローカルファイルリスト内のファイルの更新操作を含む。
【００４２】
２０６：ファイルリストスナップショット要求を送信する。
【００４３】
具体的には、端末は、サーバのファイルリストの現在の情報を取得するため、サーバへファイルリストスナップショットを送信する。
【００４４】
２０７：第３のファイルリストスナップショットを生成する。
【００４５】
具体的には、端末により送信されたファイルリストスナップショット要求を受信した後、サーバはサーバのファイルリストの情報に基づいて第３のファイルリストスナップショットを生成し、第３のファイルリストスナップショットはサーバのファイルリストの情報を含み、より具体的には、ファイル識別子、ファイルパス、ファイル作成時間、ファイルかディレクトリか、又はファイル状態を含んでもよく、最初のファイル状態は初期状態であってもよい。
【００４６】
なお、端末の前回の同期の終了から現在の同期までの期間にサーバが他の端末と同期操作を行っていない場合、サーバの同期ディレクトリ内のファイルリストの情報は変更しないまま維持する。端末の前回の同期終了から現在の同期までの期間にサーバが他の端末と同期操作を行ったことがある場合、サーバの同期ディレクトリ内のファイルの情報は変更し、第３のファイルリストスナップショットはファイルリストの更新情報を含む。
【００４７】
２０８：第３のファイルリストスナップショットを返す。
【００４８】
具体的には、第３のファイルリストスナップショットが生成された後、サーバは端末へ第３のファイルリストスナップショットを送信する。
【００４９】
２０９：第３のファイルリストスナップショットを取得する。
【００５０】
具体的には、端末は、サーバにより送信された第３のファイルリストスナップショットを受信し、取得する。
【００５１】
２１０：第２回の比較を行い、同期されるファイルの識別子及び操作を決定する。
【００５２】
端末は、第３のファイルリストスナップショットを取得した後、第２のファイルリストスナップショットと第３のファイルリストスナップショットとを比較し、サーバのファイルリストの更新操作、例えばサーバ追加操作、サーバ削除操作、サーバ変更操作、又は他の操作を決定する。従って、第２のファイルリストスナップショットに含まれているローカルファイルリストの更新操作及びサーバのファイルリストの更新操作に基づいて、同期されるファイルの識別子及び操作が決定されており、同期されるファイルの操作は、アップロード、ダウンロード、名前変更、又は削除を含む。
【００５３】
具体的には、第３のファイルリストスナップショットはバージョン番号をさらに含んでもよく、バージョン番号は前回の同期が終了した時のサーバの同期ディレクトリ内のファイルリストのバージョン情報を識別する。現在の同期と前回の同期との間にサーバが他の端末と同期操作を行った場合、サーバのファイルリストが更新し、バージョン番号が変更された。同様に、端末内の第１のファイルリストスナップショットはバージョン番号をさらに含み、該バージョン番号は前回の同期が終了した時のローカル同期ディレクトリ内のファイルリストのバージョン情報を識別する。前回の同期が終了した時に、ローカル同期ディレクトリ内のファイルリストの情報がサーバの同期ディレクトリ内のファイルリストの情報に一致するため、前回の同期が終了した時に、端末側のバージョン番号もサーバの同期ディレクトリ内のファイルリストのバージョン番号を記録する。即ち、サーバが他の端末と同期操作を行っていない場合、第１のファイルリストスナップショット内のバージョン番号は、第３のファイルリストスナップショット内のバージョン番号と同じである。
【００５４】
端末、端末内の第１のファイルリストスナップショット内のバージョン番号とサーバから取得された第３のファイルリストスナップショット内のバージョン番号とを比較し、２つのバージョン番号が同じである場合、現在の同期と前回の同期との間にサーバが他の端末と同期操作を行っていない、即ちサーバの同期ディレクトリ内のファイルリストが変更していないことを示す。この際、端末は、第２のファイルリストスナップショット内のファイルリストの更新操作に基づいて、同期されるファイルの識別子及び操作を決定できる。
【００５５】
具体的には、端末は、まず、第２のファイルリストスナップショット内の更新操作を分類し、操作カテゴリ、例えばローカル追加（local_add）、ローカル削除（local_delete）又はローカル変更（local_modify）を決定する。一部のファイル状態を論理的にマージすることができるため、対応するファイル操作を決定するように、関連するマージルールに基づいて、上述したカテゴリのファイル状態をマージするとともに、マージできないファイル状態について、ファイル状態に基づいてファイル操作を直接決定する。例えば、ローカルファイルの名前変更操作について、第２のファイルリストスナップショットは、元のファイルのローカル削除（local_del）操作だけでなく、名前変更されたファイルのローカル追加（local_add）操作を含む。この際、元のファイルの関連情報を名前変更のファイルの関連情報とを比較して、local_del及びlocal_addのマージを決定し、ファイル名前変更（renameFile）操作と決定する。この場合、元のファイルでrenameFile操作を実行するための要求がサーバへ送信され、サーバは、元のファイルで名前変更操作のみを実行することで、端末内の該ファイルとの同期を実現できる。マージを行わない場合、まずサーバへ元のファイルを削除するための操作要求を送信して、名前変更のファイルを追加するための要求を送信する必要がある。サーバが、まず、元のファイルを削除するための操作要求に基づいて元のファイルを削除して、その後、名前変更のファイルを追加するための要求に基づいて端末によりアップロードされた名前変更のファイルを受信する必要がある。従って、ファイル状態のマージは、ファイル同期の効率を向上できる。
【００５６】
２つのバージョン番号が異なる場合、現在の同期と前回の同期との間にサーバが他の端末と同期操作を行ったことがある、即ちサーバの同期ディレクトリ内のファイルリストが変更したことを示す。この際、端末は、第２のファイルリストスナップショット及び第３のファイルリストスナップショットに基づいて、同期される識別子及び操作を決定する。具体的には、第２のファイルリストスナップショットと第３のファイルリストスナップショットとを比較した後、端末は、まず、サーバのファイルリストの更新操作を決定し、その後、第２のファイルリストスナップショット内のファイルリストの更新操作及びサーバのファイルリストの更新操作に基づいて、バージョン番号が同じである時に同期されるファイルの識別子及び操作を決定する方法と同じ方法を用いて、この場合の同期されるファイルの識別子及び操作を決定する。
【００５７】
また、本実施例では、いくつかの簡単なマージルール及びファイル操作のみを列挙している。複雑のファイル操作、例えばファイル変更について、端末は変更されるファイルを決定する必要があり、ユーザは、保留しようとするファイル、及び削除しようとするファイルを決定する。
【００５８】
２１１：同期されるファイルの識別子及び操作に基づいてサーバとのファイル同期を行う。
【００５９】
具体的には、同期されるファイルの識別子及び操作を決定した後、端末はサーバへファイル同期要求を送信し、同期要求は同期されるファイルの操作情報を含む。サーバは、サーバの同期ディレクトリ内のファイルについての関連操作を実行し、端末の同期ディレクトリ内のファイルリストとの同期を実現するように、ファイル同期要求を受信し、該要求内に持たれた操作情報を取得する。同期が終了した後、端末のファイルリスト内の更新がサーバへ同期され、同様に、サーバのファイルリスト内の更新が端末へ同期される、即ち、最終的に、端末とサーバとの双方向の同期が実現された。
【００６０】
なお、端末がサーバへファイル同期要求を送信した後、サーバが他の端末とファイル同期操作を行っている、即ちサーバが他の端末とファイル同期を行っている状態にある場合、サーバは、サーバが他の端末とファイル同期を行っていることを示す状態を、端末へ送信してもよい。従って、この際、端末は、サーバが他の端末とファイル同期を行っていることを示す状態を受信し、サーバとのファイル同期操作を中断してもよい。さらに、サーバとのファイル同期操作が中断された後、端末は、一定の時間間隔（例えば３０秒）でサーバへファイル同期要求を送信してもよいし、端末は、サーバにより送信された、サーバがアイドル状態にあることを示すメッセージを受信して、サーバとのファイル同期操作を行うように、サーバへファイル同期要求を送信してもよい。
【００６１】
例えば、上記生成された同期されるファイルの識別子及び操作は以下の通りである。
ファイル識別子        操作
1.txt                  removefile
2.txt                  renameFile
1.txtと2.txtの操作はファイル削除操作であり、端末は、サーバへ送信するハイパーテキスト転送プロトコル（HTTP：HyperText  Transfer  Protocol）は次の通りである。
POST  http://syncbox.dbank.com/app/pc/disk.removefile.php
HTTP/1.1  NSP-Auth:AccessToken  ClientID=3d4e901399d4c0a9aeae4727
Host:syncbox.dbank.com
Path=%2F&files=["1%2Etxt"]
HTTP/1.1  200  ok
{"action":"true",  "successList":[{"name":"1.txt"}]}
POST  http://syncbox.dbank.com/app/pc/disk.removefile.php
HTTP/1.1  NSP-Auth:AccessToken  ClientID=3d4e901399d4c0a9aeae4727
Host:syncbox.dbank.com
Path=%2F&files=["1%2Etxt"]
HTTP/1.1  200  ok
{"action":"true",  "successList":[{"name":"2.txt"}]}
HTTPが受信された後、サーバは、該要求に持たれた削除ファイル（removefile）1.txt及び2.txtの情報に基づいて、サーバ上の同期されるディレクトリ内のファイル1.txt及び2.txtを削除する。他のファイル及び操作について、端末は、同様のファイル同期要求を送信して、サーバとの同期を完成してもよい。
【００６２】
端末及びサーバの同期ディレクトリ内のファイルの同期処理が成功した後、端末は、サーバ又は端末の同期ディレクトリ内のファイルリストのスナップショットをさらに記憶し（この際、サーバ及び端末の同期ディレクトリ内のファイルリストが互いに一致する）、該スナップショットを次の同期における第１のファイルリストスナップショットとする。また、第１のファイルリストスナップショットのバージョン番号を再生成し、サーバの同期ディレクトリ内のファイルリストのバージョン番号も該再生成されたバージョン番号に更新して、端末とサーバとの間の同期ディレクトリ内のファイルリストの一致性を表す。
【００６３】
本実施例では、端末は、２回の比較により、同期されるファイルの識別子及び操作を決定し、同期されるファイルの識別子及び操作に基づいてサーバとの同期を行う。具体的な同期処理において、端末は、同期されるファイルの操作に基づいて、サーバへ対応する操作、例えばアップロード要求、ダウンロード要求、名前変更要求又は削除要求を送信し、サーバは、該受信された関連する操作要求に応じて、対応する処理を行う。サーバは、同期処理全体において同期されるファイルの識別子及び操作を決定する必要がないため、該同期方法は、サーバの処理負担を効果的に低減できる。
【００６４】
以上のことから、本実施例では、第２のファイルリストスナップショットが現在のローカルファイルリストの更新操作を含み、第３のファイルリストスナップショットがサーバのファイルリストの情報を含み、第２のファイルリストスナップショット及び第３のファイルリストスナップショットに基づいて決定された同期されるファイルの操作は、ローカルファイルリスト内のファイルの更新操作とサーバのファイルリスト内のファイルの更新操作の両方を含む。従って、同期されるファイルの識別子及び操作に基づいて、同期用装置とサーバとの双方向の同期を実現することができる。
【００６５】
図３は、本発明の他の実施例に係る同期用装置の構成を示す図である。該装置は、第１の取得部３０８、第２の取得部３０９、送信部３１０、受信部３１１、及び同期部３１２を含む。
【００６６】
第１の取得部３０８は、第１のファイルリストスナップショットを取得する。第１のファイルリストスナップショットは、前回の同期が終了した時に記憶されたローカルファイルリストの情報を含む。
【００６７】
第２の取得部３０９は、第１の取得部３０８により取得された第１のファイルリストスナップショットと現在のローカルファイルリストの情報とを比較して、第２のファイルリストスナップショットを取得する。第２のファイルリストスナップショットは、現在の前記ローカルファイルリストの更新操作を含む。具体的には、同期用装置は、ローカルファイルリストをスキャンし、ローカルファイルリストをスキャンすることで得られたファイルに関する情報と第１のファイルリストスナップショット内の情報とを比較し、現在のファイルの情報と第１のファイルリストスナップショット内の対応情報とを比較することで現在のファイルの変化を決定し、第２のファイルリストスナップショットを生成する。第２のファイルリストスナップショットは、更新された第１のファイルリストスナップショット又は再生成されたスナップショットであってもよい。
【００６８】
送信部３１０は、サーバのファイルリストの現在の情報を取得するように、サーバへファイルリストスナップショット要求を送信する。
【００６９】
受信部３１１は、サーバにより送信された第３のファイルリストスナップショットを受信する。第３のファイルリストスナップショットは、サーバのファイルリストの情報を含む。
【００７０】
同期部３１２は、第２の取得部３０９により取得された第２のファイルリストスナップショット及び受信部３１１により受信された第３のファイルリストスナップショットに基づいて、同期されるファイルの識別子及び操作を決定し、同期されるファイルの識別子及び操作に基づいて、サーバとのファイル同期を行う。
【００７１】
上記の同期用装置は、サーバとデータのやり取りを行う端末であってもよい。図３は、本発明の実施例に係る端末の構成をさらに示し、該端末は少なくとも１つの処理器３０１、少なくとも１つのユーザインタフェース３０４、記憶部３０５、及び構成部の間の接続及び通信を実現する少なくとも１つの通信バス３０２を含む。端末は、ユーザとのやり取りを実現するユーザインタフェース３０３をさらに含む。記憶部３０５は、操作システム３０６、及びアプリケーション部３０７を含む。
【００７２】
操作システム３０６は、各種のシステム基本サービスを処理し、ハードウェアによりタスクを実行する。
【００７３】
アプリケーション部３０７は、取得されたローカルファイルリストの更新操作及びサーバのファイルリストの更新操作に基づいて、同期されるファイルの識別子及び操作を決定し、同期されるファイルの識別子及び操作に基づいてサーバとのファイル同期を行う。アプリケーション部３０７は、具体的に以下の部分を含む。
【００７４】
第１の取得部３０８は、第１のファイルリストスナップショットを取得する。第１のファイルリストスナップショットは、前回の同期が終了した時に記憶されたローカルファイルリストの情報を含む。
【００７５】
第２の取得部３０９は、第１の取得部３０８により取得された第１のファイルリストスナップショットと現在のローカルファイルリストの情報とを比較して、第２のファイルリストスナップショットを取得する。第２のファイルリストスナップショットは、現在の前記ローカルファイルリストの更新操作を含む。具体的には、同期用装置は、ローカルファイルリストをスキャンし、ローカルファイルリストをスキャンすることで得られたファイルに関する情報と第１のファイルリストスナップショット内の情報とを比較し、現在のファイルの情報と第１のファイルリストスナップショット内の対応情報とを比較することで現在のファイルの変化を決定し、第２のファイルリストスナップショットを生成する。第２のファイルリストスナップショットは、更新された第１のファイルリストスナップショット又は再生成されたスナップショットであってもよい。
【００７６】
送信部３１０は、サーバのファイルリストの現在の情報を取得するように、サーバへファイルリストスナップショット要求を送信する。
【００７７】
受信部３１１は、サーバにより送信された第３のファイルリストスナップショットを受信する。第３のファイルリストスナップショットは、サーバのファイルリストの情報を含む。
【００７８】
同期部３１２は、第２の取得部３０９により取得された第２のファイルリストスナップショット及び受信部３１１により受信された第３のファイルリストスナップショットに基づいて、同期されるファイルの識別子及び操作を決定し、同期されるファイルの識別子及び操作に基づいて、サーバとのファイル同期を行う。
【００７９】
具体的には、同期部３１２は、第２の取得部３０９により取得された第２のファイルリストスナップショット及び受信部３１１により受信された第３のファイルリストスナップショットに基づいて、サーバのファイルリストの更新操作を決定し、ローカルファイルリストの更新操作及びサーバのファイルリストの更新操作に基づいて、同期されるファイルの識別子及び操作を決定する。また、同期部３１２は、サーバにより送信された、サーバが他の同期用装置とファイル同期を行っていることを示す状態が受信された場合、サーバとのファイル同期を中断してもよい。
【００８０】
本発明の他の実施例では、設定部３１３をさらに含んでもよい。
【００８１】
設定部３１３は、同期モードを設定する。同期モードは、一方向の同期、双方向の同期、又は選択的同期などを含む。設定部３１３は具体的な同期モードを設定した後、同期部３１２は設定部３１３により設定された同期モードに基づいて、サーバとのファイル同期を行う。
【００８２】
以上のことから、本実施例では、第２のファイルリストスナップショットが現在のローカルファイルリストの更新操作を含み、第３のファイルリストスナップショットがサーバのファイルリストの情報を含み、第２のファイルリストスナップショット及び第３のファイルリストスナップショットに基づいて決定された同期されるファイルの操作は、ローカルファイルリスト内のファイルの更新操作とサーバのファイルリスト内のファイルの更新操作の両方を含む。従って、同期されるファイルの識別子及び操作に基づいて、同期用装置とサーバとの双方向の同期を実現することができる。
【００８３】
上述した端末は、図１又は図２に示されている方法の実行に用いられてもよく、ここにその操作フローの説明が省略される。
【００８４】
上記の実施例に係る方法の全て又は一部の工程は、コンピュータプログラムにより関連するハードウェアを指示することで実施されてもよく、該プログラムはコンピュータ読み取り可能な記憶媒体に記憶されてもよく、該プログラムを実行する際に、上記の実施例に係る各方法の流れが含まれてもよい。ここで、記憶媒体は、例えば磁気ディスク、光ディスク、読み出し専用メモリ（ROM：Read-Only  Memory）、又はランダムアクセスメモリ（RAM：Random  Access  Memory）等であってもよい。
【００８５】
以上、具体的な実施形態を参照しながら本発明を説明しているが、上記の説明は、例示的なものに過ぎず、本発明の保護の範囲を限定するものではない。本発明の趣旨及び原理を離脱しない限り、本発明に対して各種の変形及び修正を行ってもよく、これらの変形及び修正も本発明の範囲に属する。
【図１】
0005870193.tif 000002
【図２】
0005870193.tif 000003
【図３】
0005870193.tif 000004