C# では、DropNet lib を使用して、ローカル ファイルと Dropbox フォルダーを同期するクライアントを作成しています。
クラウドとローカル フォルダーの両方に同じファイルが存在する場合、それらが同等かどうか、または 2 つのうちどちらがより最新かを確認するにはどうすればよいですか? クラウド ファイルの ModifiedDate とローカル ファイルの LastWriteTime を比較すると、これらの日付は常に矛盾しています。おそらく、クライアントの時刻がドロップボックスのサーバーの時刻と異なるためです。効率的なファイル比較を行うにはどうすればよいですか?
2 に答える
Dropbox API を使用すると、通常の Dropbox エコシステムと連携できます。Dropbox と同期する場合、1 つのアカウントに 2 つ以上のクライアントが存在する場合があります。これを調整するために、Dropbox サーバーは信頼できる情報源と見なされます。したがって、Dropbox と同期するときは、できるだけ早くサーバーからすべての変更を取得し、すべてのローカル変更をサーバーに報告する必要があります。
これらの方針に沿って、Dropbox API は現在、リモート ファイルのファイル ID またはハッシュを取得する方法を提供していませんが (ただし、機能要求としてこれに取り組んでいます)、ファイルがリモートで変更されたかどうかを知る方法を提供しています。ローカルの状態を更新できること。/metadata API 呼び出しを介して特定のパスにあるファイルの "rev" プロパティを使用する 1 つの方法:
https://www.dropbox.com/developers/core/docs#metadata
最後にチェックしてからリビジョンが変更された場合、そのパスのファイルが変更されています。
もう 1 つの方法は、/delta を使用することです。
https://www.dropbox.com/developers/core/docs#delta
ときどきこれを呼び出して、最新の状態に戻すためにローカル状態に加える必要がある変更について調べることができます。
バイトごとの比較は、おそらく最も正しいアプローチです。ファイルハッシュに関する議論については、このリンクを読んでください。
https://stackoverflow.com/a/7931320/1706610
そして、これはバイトごとのファイル比較方法への素敵なリンクです。