Microsoft Sync Framework for Files的正确选项

本文关键字:选项 Files Sync Framework for Microsoft | 更新日期: 2023-09-27 18:06:12

我需要从本地到远程服务器进行基本的单向文件同步。我试着使用微软的同步框架,它工作得很好。然而,我需要两个功能,我现在还没有:

  1. 如果目标文件已被删除,下一次同步应该从源文件重新创建
  2. 如果目标文件已更改,下一次同步应该从源
  3. 替换它

是否可以通过使用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();
        }
}

Microsoft Sync Framework for Files的正确选项

如果没有额外的代码,这两种情况都无法开箱运行。

当同步完成时,它检测源中的更改并将其应用于目标。

如果是您的情况,则更改是在目标上进行的,并且源无法告知您删除了目标上的文件以将其包含在更改枚举中。如果源上的文件被修改了,您的运气会好一些,因为这将导致冲突,并为您提供了用源上的文件覆盖目标上的删除操作的机会。

第二个问题也是一样。

另一种选择是在目标上运行检测更改,找出哪些文件被删除/更新,并从源获取这些文件。