Getting Started Synchronizing Files
https://msdn.microsoft.com/en-US/library/bb902813(v=sql.110).aspx
Sync Framework includes a file synchronization provider that extends the UnmanagedSyncProviderWrapper object (for managed code) orIKnowledgeSyncProvider interface (for unmanaged code)
to simplify creation of an application that synchronizes files and folders among file systems.
Creating and Initializing the Provider
Managed code An application creates a FileSyncProvider object. Paths and configuration options are specified in the constructor.
托管代码,创建FileSyncProvider对象,在构造函数中指定路径和配置选项
Unmanaged code An application creates an IFileSyncProvider object by passing CLSID_FileSyncProvider and IID_IFileSyncProvider toCoCreateInstance.
Paths and configuration options are specified by calling the Initialize method.
The paths that are specified when the provider is constructed or initialized define the root folder to synchronize, and the folder and file name in which the synchronization metadata is stored.
Optionally, the application can also specify a folder to store temporary files and a folder to store files that are updated because of a conflict.
These must be valid paths and must exist before the provider is initialized.
Note |
|---|
|
For all methods in the file synchronization provider, paths cannot exceed MAX_PATH. |
A set of configuration flags can be specified when the provider is constructed or initialized.
These flags modify the behavior of the provider in various ways, such as to improve change detection by calculating a hash value for each file, or to move deleted files to the recycle bin instead of permanently deleting them.
These flags are represented by FileSyncOptions (for managed code) or FILESYNC_INIT_FLAGS (for unmanaged code).
After source and destination providers have been created and initialized, they can be passed to a synchronization session and synchronization can be started.
Sync Framework recognizes only the following file and folder attributes:
FILE_ATTRIBUTE_DIRECTORY
FILE_ATTRIBUTE_READONLY
FILE_ATTRIBUTE_HIDDEN
FILE_ATTRIBUTE_SYSTEM
FILE_ATTRIBUTE_TEMPORARY
Other file attributes are ignored and are not propagated传送.
The provider does not perform any authentication on the folders that are involved in synchronization.
The application must authenticate the folders that are used before it passes them to the provider.
Security information, such as the Discretionary Access Control List (DACL), is not propagated.
It is up to the application or user to correctly secure the destination folders to help prevent unauthorized access.
Files in an encrypted folder are decrypted before they are sent and will not be encrypted in the destination folder.
Be aware that this means that even if the source folder is encrypted, the files will still not be encrypted when they are sent.
To help prevent unauthorized access or tampering篡改, the communication channel between the provider and the folder must be trusted.
Synchronization metadata and temporary files are stored in folders specified when the provider is initialized.
These folders must be appropriately secured and the temporary folder cleaned up to avoid unwanted information disclosure, because these files might contain user data.
Sync Framework guarantees that, when the file synchronization provider applies a change, if all contents of a file stream cannot be applied then no content will be.
This is done in part by opening the files in exclusive share mode.
This means that the file cannot be opened or deleted by any other application until its handle is closed.
For more information, see the CreateFile function in the Microsoft Win32 documentation.
If the file cannot be opened in exclusive share mode it will be skipped.
The skip will be recorded in the metadata so that it can be processed appropriately in future sessions.
The file synchronization provider uses the metadata storage service to store all synchronization metadata in a custom data store.
The metadata store is one file.
This file can be stored with the files and folders that are to be synchronized or in another location that is specified when the provider is initialized.
For more information about metadata storage service components, see Sync Framework Metadata Storage Service.
Backing up and Restoring a File System Replica
When a file system replica is restored from a backup, problems can occur with synchronization.
For example, local changes made after the restore might not propagate传输 to other replicas.
This can occur because the tick count used to assign versions to changes on the source replica may cause changes to be detected as obsolete废弃的 by other replicas.
To ensure that this situation does not occur, when a file system replica is restored from a backup,
discard the synchronization metadata and treat the replica as a new replica, assigning it a new replica ID.
The file synchronization provider can then create synchronization metadata for the replica and synchronize it correctly with other replicas in the community.
Getting Started Synchronizing Files的更多相关文章
- How to: Synchronize Files by Using Managed Code
The examples in this topic focus on the following Sync Framework types: FileSyncProvider FileSyncOpt ...
- Total Commander 8.52 Beta 1
Total Commander 8.52 Beta 1http://www.ghisler.com/852_b1.php 10.08.15 Release Total Commander 8.52 b ...
- A replacement solution to using Google Drive in Ubuntu
Grive2 Get dependencies You need to get the dependency libraries along with their development (-dev ...
- Introducing Microsoft Sync Framework: Sync Services for File Systems
https://msdn.microsoft.com/en-us/sync/bb887623 Introduction to Microsoft Sync Framework File Synchro ...
- 由于losf引起的pxc启动报错处理
PXC主节点启动完成后,再启动node1,error日志报错: 2017-05-02T15:23:42.830888Z 0 [ERROR] WSREP: Failed to read 'ready & ...
- Linux系统实时数据同步inotify+rsync
一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...
- Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ... 这个错误是因为有两个相 ...
- The type javax.ws.rs.core.MediaType cannot be resolved. It is indirectly referenced from required .class files
看到了http://stackoverflow.com/questions/5547162/eclipse-error-indirectly-referenced-from-required-clas ...
- 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\106f9ae8\cc0e1
在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.Ne ...
随机推荐
- bzoj 3295 树套树
比较裸,可以有好多的优化,比如根本没有删除的点没有加在树套树中的必要,预处理 出来每个不会被删除的值可以减少不少时间,也可以写成树状数组套平衡树,都会快很多 /******************** ...
- zoj 2760 How Many Shortest Path 最大流
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...
- Leetcode#76 Minimum Window Substring
原题地址 用两个指针分别记录窗口的左右边界,移动指针时忽略那些出现在S种但是没有出现在T中的字符 1. 扩展窗口.向右移动右指针,当窗口内的字符即将多于T内的字符时,停止右移 2. 收缩窗口.向右调整 ...
- tomcat与IIS在多IP服务器下的支持
同一个服务器下,双IP(或更多IP),实现tomcat与IIS公用80端口. 操作其实也很简单的,首先禁用iis的套接字池,iis绑定一个ip,然后tomcat在绑定另一个ip,最后重启下服务器即可. ...
- mybatis处理查询map列表属性为null的问题,而导致查询map无该key对象
1.常规处理方法(数据库以mysql为例) IFNULL(m.last_use_time,) ) ) as last_lat if判断是否为null,设置一个默认值. 2.前台jsp页面处理,判断是否 ...
- yum install 与 yum groupinstall 的区别
原文:http://blog.51yip.com/linux/1171.html yum 提供二种安装软件的方式 1,yum install 它安装单个软件,以及这个软件的依赖关系 2,yum gro ...
- codeforces 442C C. Artem and Array(有深度的模拟)
题目 感谢JLGG的指导! 思路: //把数据转换成一条折线,发现有凸有凹 //有凹点,去掉并加上两边的最小值//无凹点,直接加上前(n-2)个的和(升序)//数据太大,要64位//判断凹与否,若一边 ...
- JS正则汇总
1.基本定义: \s:用于匹配单个空格符,包括tab键和换行符; \S:用于匹配除单个空格符之外的所有字符; \d:用于匹配从0到9的数字; \w:用于匹配字母,数字或下划线字符; \W:用于匹配所有 ...
- SQL技术内幕-10 in和exists 性能比较
in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询. 一直以来认为exists比in效率高的说法是不准确的. 如果查询的两 ...
- ***PHP implode() 函数,将数组合并为字符串;explode() 函数,把字符串打散为数组
实例 把数组元素组合为字符串: <?php $arr = array('Hello','World!','I','love','Shanghai!'); echo implode(" ...
Note