Приступая к работе с синхронизацией файлов

В состав платформ Sync Framework входит служба синхронизации файлов, расширяющая возможности объекта UnmanagedSyncProviderWrapper (для управляемого кода) или интерфейса IKnowledgeSyncProvider (для неуправляемого кода), что упрощает создание приложения, выполняющего синхронизацию файлов и папок в нескольких файловых системах.

Создание и инициализация службы синхронизации

Управляемый код. Приложение создает объект FileSyncProvider. Пути и параметры конфигурации задаются в конструкторе.

Неуправляемый код. Приложение создает объект IFileSyncProvider, передавая CLSID_FileSyncProvider и IID_IFileSyncProvider в CoCreateInstance. Пути и параметры конфигурации задаются путем вызова метода Initialize.

Пути, которые задаются при создании или инициализации службы, определяют корневую папку для синхронизации, а также папку и имя файла, где будут храниться метаданные синхронизации. При необходимости в приложении также может задаваться папка для хранения временных файлов и папка для хранения файлов, обновленных в результате конфликта. Это должны быть реально существующие пути, созданные до инициализации службы.

Примечание

Для всех методов службы синхронизации файлов длина пути не должна превышать MAX_PATH.

Набор флагов конфигурации можно задавать при создании или инициализации службы. Эти флаги различным образом изменяют поведение службы, например, улучшают выявление изменений путем вычисления хэшированного значения для каждого файла, либо перемещают удаленные файлы в корзину вместо окончательного удаления. Эти флаги представлены объектом FileSyncOptions (для управляемого кода) или FILESYNC_INIT_FLAGS (для неуправляемого кода).

После создания и инициализации поставщика источника и назначения эти службы можно передавать в сеанс синхронизации и начинать синхронизацию.

Атрибуты файла

Платформы Sync Framework распознают только приведенные ниже атрибуты файлов и папок. 

  • FILE_ATTRIBUTE_DIRECTORY

  • FILE_ATTRIBUTE_READONLY

  • FILE_ATTRIBUTE_HIDDEN

  • FILE_ATTRIBUTE_SYSTEM

  • FILE_ATTRIBUTE_TEMPORARY

Другие атрибуты файлов пропускаются и не распространяются.

Безопасность и шифрование

Служба не выполняет проверку подлинности для папок, участвующих в синхронизации. Приложение должно само выполнять проверку подлинности для используемых папок до того, как эти папки будут переданы службе.

Сведения о безопасности, например список управления доступом на уровне пользователей, не распространяются. Именно от приложения или пользователя зависит защита папок назначения, позволяющая предотвратить несанкционированный доступ.

Файлы в зашифрованной папке расшифровываются перед отправкой и в папке назначения не зашифровываются. Имейте в виду: это означает, что даже если исходная папка зашифрована, файлы при отправке зашифрованы не будут. Канал коммуникации между поставщиком и папкой должен быть доверенным, чтобы предотвратить несанкционированный доступ и намеренную порчу данных.

Метаданные синхронизации и временные файлы хранятся в папках, заданных при инициализации службы. Эти папки должны быть соответствующим образом защищены, а временную папку следует очистить, чтобы избежать раскрытия какой-либо информации, поскольку эти файлы могут содержать данные о пользователях.

Обеспечение согласованности

Платформа Sync Framework гарантирует, что если в ходе применения изменения службой синхронизации файлов невозможно применить полностью все содержимое файлового потока, то никакая часть содержимого применена не будет. Это достигается частично за счет открытия файлов в монопольном режиме. А также это означает, что никакое другое приложение не сможет открыть или удалить файл, пока не будет закрыт его дескриптор. Дополнительные сведения см. в описании функции CreateFile в документации по пакету Microsoft Win32.

Если файл невозможно открыть в монопольном режиме, он будет пропущен. Об этом делается соответствующая запись в метаданных, что позволяет обработать файл в будущих сеансах.

Хранилище метаданных

Служба синхронизации файлов использует службу хранилища метаданных для хранения всех метаданных синхронизации в пользовательском хранилище данных. Хранилище метаданных представляет собой один файл. Этот файл может храниться с файлами и папками, предназначенными для синхронизации, или в другом расположении, которое указывается при инициализации поставщика. Дополнительные сведения о компонентах службы хранилища метаданных см. в разделе Служба хранилища метаданных платформы Sync Framework.

Резервное копирование и восстановление реплики файловой системы

После восстановления реплики файловой системы из резервной копии могут возникнуть проблемы с синхронизацией. Возможно, изменения, выполненные в хранилище данных после восстановления, не распространятся на другие реплики. Присваивание счетчика пакетов в качестве версий изменений на исходной реплике приведет к тому, что такие изменения будут опознаны другими репликами как устаревшие.

Чтобы этого не произошло, после восстановления реплики файловой системы из резервной копии удалите метаданные синхронизации и используйте реплику как новую, присвоив ей новый идентификатор. Служба синхронизации файлов может создать метаданные синхронизации для реплики и синхронизировать ее с другими репликами в сообществе.

См. также

Справочник

FileSyncProvider

FileSyncOptions

Другие ресурсы

Синхронизация файлов

Интерфейс IFileSyncProvider

Перечисление FILESYNC_INIT_FLAGS