我需要从本地到远程服务器进行基本的单向文件同步。我尝试使用Microsoft Sync Framework,它工作得很好。但是,我需要两个我现在无法获得的功能:
是否可以通过使用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();
}
}
答案 0 :(得分:1)
如果没有其他代码,这两种方案都无法开箱即用。
完成同步后,它会检测源中的更改并将其应用于目标。
如果您的情况,更改是在目标上进行的,并且源无法告知您删除了目标上的文件以将其包含在更改枚举中。如果源文件被修改,你将获得更好的运气,因为这会导致冲突并让你有机会用来自源文件的文件覆盖目标上的删除。
第二个问题也是如此。
另一种方法是在目标上运行检测更改,找出已删除/更新的文件,并从源中获取这些文件。