Microsoft Sync Framework for Files的正确选项
本文关键字:选项 Files Sync Framework for Microsoft | 更新日期: 2023-09-27 18:06:12
我需要从本地到远程服务器进行基本的单向文件同步。我试着使用微软的同步框架,它工作得很好。然而,我需要两个功能,我现在还没有:
- 如果目标文件已被删除,下一次同步应该从源文件重新创建
- 如果目标文件已更改,下一次同步应该从源 替换它
是否可以通过使用SyncOrchestrator.Synchronize()函数中的一些选项来获得?
现有代码基于MSDN文章:
public static void SyncFileSystemReplicaOneWay(string sourcePath, string destinationPath)
{
FileSyncProvider sourceProvider = null;
FileSyncProvider destinationProvider = null;
try
{
sourceProvider = new FileSyncProvider(sourcePath);
destinationProvider = new FileSyncProvider(destinationPath);
var agent = new SyncOrchestrator();
agent.LocalProvider = sourceProvider;
agent.RemoteProvider = destinationProvider;
agent.Direction = SyncDirectionOrder.Upload;
var stats = agent.Synchronize();
}
finally
{
if (sourceProvider != null) sourceProvider.Dispose();
if (destinationProvider != null) destinationProvider.Dispose();
}
}
如果没有额外的代码,这两种情况都无法开箱运行。
当同步完成时,它检测源中的更改并将其应用于目标。
如果是您的情况,则更改是在目标上进行的,并且源无法告知您删除了目标上的文件以将其包含在更改枚举中。如果源上的文件被修改了,您的运气会好一些,因为这将导致冲突,并为您提供了用源上的文件覆盖目标上的删除操作的机会。
第二个问题也是一样。
另一种选择是在目标上运行检测更改,找出哪些文件被删除/更新,并从源获取这些文件。