ファイルの同期の概要

Sync Framework には、UnmanagedSyncProviderWrapper オブジェクト (マネージ コード用) または IKnowledgeSyncProvider インターフェイス (アンマネージ コード用) を拡張するファイル同期プロバイダーが用意されています。ファイル システム間でファイルやフォルダーを同期するアプリケーションを容易に作成できます。

プロバイダーの作成と初期化

マネージ コード : アプリケーションは、FileSyncProvider オブジェクトを作成します。パスおよび構成オプションは、コンストラクターに指定します。

アンマネージ コード : アプリケーションは、CLSID_FileSyncProvider および IID_IFileSyncProviderCoCreateInstance に渡すことで IFileSyncProvider オブジェクトを作成します。パスおよび構成オプションは、Initialize メソッドを呼び出して指定します。

プロバイダーが作成または初期化されたときに指定されたパスにより、同期するルート フォルダー、および同期メタデータが格納されるフォルダーおよびファイルの名前が定義されます。アプリケーションでは、オプションで、一時ファイルを格納するフォルダーや、競合のために更新されたファイルを格納するフォルダーを指定することもできます。これらは有効なパスである必要があり、プロバイダーが初期化される前に存在している必要があります。

注意

ファイル同期プロバイダーのすべてのメソッドにおいて、パスは MAX_PATH を超えることはできません。

プロバイダーを作成または初期化するときに構成フラグのセットを指定できます。これらのフラグを使用することで、プロバイダーの動作を変更できます (たとえば、各ファイルのハッシュ値を計算して変更の検出を向上させたり、削除されたファイルを完全に削除する代わりにごみ箱に移動したりできます)。これらのフラグは、FileSyncOptions (マネージ コードの場合) または FILESYNC_INIT_FLAGS (アンマネージ コードの場合) によって表されます。

同期元プロバイダーおよび同期先プロバイダーを作成および初期化した後、これらを同期セッションに渡して同期を開始できます。

ファイル属性

Sync Framework では、次のファイル属性およびフォルダー属性のみが認識されます。

  • FILE_ATTRIBUTE_DIRECTORY

  • FILE_ATTRIBUTE_READONLY

  • FILE_ATTRIBUTE_HIDDEN

  • FILE_ATTRIBUTE_SYSTEM

  • FILE_ATTRIBUTE_TEMPORARY

これ以外のファイル属性は無視され、反映されません。

セキュリティおよび暗号化

プロバイダーは、同期に関連するフォルダーに対する認証を行いません。アプリケーションでは、使用するフォルダーを、プロバイダーに渡す前に認証する必要があります。

随意アクセス制御リスト (DACL) などのセキュリティ情報は反映されません。不正アクセスを防ぐためには、アプリケーションまたはユーザーが同期先フォルダーを適切にセキュリティで保護する必要があります。

暗号化フォルダー内のファイルは、送信される前に暗号化解除され、同期先フォルダー内では暗号化されません。これは、同期元フォルダーが暗号化されている場合でもファイルは送信時には暗号化されていないことを意味します。不正アクセスまたは改ざんを防ぐには、プロバイダーとフォルダー間の通信チャネルが信頼されている必要があります。

同期メタデータおよび一時ファイルは、プロバイダーの初期化時に指定されたフォルダーに格納されます。また、これらのファイルにはユーザー データが含まれている可能性があるので、これらのフォルダーを適切にセキュリティで保護し、一時フォルダーをクリーンアップして、望ましくない情報の漏洩を防ぐ必要があります。

一貫性の保証

Sync Framework では、ファイル同期プロバイダーが変更を適用するときに、ファイル ストリームのすべてのコンテンツを適用できない場合はコンテンツをまったく適用しないことが保証されます。この動作は、排他共有モードでファイルを開くことなどによって行われます。これは、ファイルのハンドルが閉じられるまで、別のアプリケーションでそのファイルを開いたり削除したりすることができないことを意味します。詳細については、Microsoft Win32 のドキュメントにある CreateFile 関数の説明を参照してください。

ファイルを排他共有モードで開くことができない場合、そのファイルはスキップされます。スキップはメタデータに記録され、将来のセッションで適切に処理されます。

メタデータ ストレージ

ファイル同期プロバイダーは、Metadata Storage Service を使用して、すべての同期メタデータをカスタム データ ストアに格納します。メタデータ ストアは 1 つのファイルです。このファイルは、同期するファイルおよびフォルダーと共に格納することも、プロバイダーの初期化時に指定される別の場所に格納することもできます。Metadata Storage Service コンポーネントの詳細については、「Sync Framework Metadata Storage Service」を参照してください。

ファイル システム レプリカのバックアップと復元

バックアップからファイル システム レプリカを復元する場合、同期の問題が発生する可能性があります。たとえば、復元後に行われたローカルの変更がその他のレプリカに反映されないことがあります。この現象は、同期元レプリカで行われた変更にバージョンを割り当てるために使用されるティック数に基づいて、その他のレプリカから変更が期限切れと見なされることがあるために発生します。

この状況を回避するには、バックアップからファイル システム レプリカを復元するときに、同期メタデータを破棄して、レプリカに新しいレプリカ ID を割り当てて新規レプリカとして扱います。その後、ファイル同期プロバイダーは、レプリカの同期メタデータを作成して、コミュニティのその他のレプリカと正しく同期することができます。

参照

リファレンス

IFileSyncProvider インターフェイス
FILESYNC_INIT_FLAGS 列挙体
FileSyncProvider
FileSyncOptions

概念

ファイルの同期