2012-08-30 45 views
0

我有一个文件夹叫做OLD。有一个目录结构里面想:单向同步两个文件夹

Old 
---DSL 
---------CI 
------------AppFolder1  
------------AppFolder2 
---------------------------FUN2  
--------CA 
------------AppFolder1 

每个文件夹可能是也可能不是文件里面。

我有一个名为NEW的文件夹,它具有更新和取决于其内部适当目录结构的更改。关键是它会和OLD一样。例如:

NEW 
---DSL 
---------CI 
------------AppFolder2 
---------------------------FUN2 
--------CA  

正如你所看到的目录结构(包括文件夹名称)相同。我想要NEW中的所有文件替换OLD中的相应文件。

请为我提供一个起点。

+0

看一看rsync的算法 – tomsv

+0

退房[微软同步框架(http://msdn.microsoft.com/en-us/sync/bb821992.aspx) – ChrisF

+0

如果有新的文件夹或文件不在OL中d或反之亦然? –

回答

1

我创建了一个文件夹Old结构为:

古根C:\Old例如。

-Old 
--CI 
---AppFolder1 
---AppFolder2 

New其中什么也没有。

然后跑到控制台应用程序我做了设置NewRootC:\New,并得到:

-New 
--CI 
---AppFolder1 
---AppFolder2 

不知道这是你要找的人之类的事情 - 如果不是劝你想以不同的方式做了什么:)

private static void SyncDirectories(string oldRoot, string newRoot) 
{ 
    CreateDirectoriesRecursive(Directory.GetDirectories(oldRoot), newRoot); 
} 
private static void CreateDirectoriesRecursive(string[] oldDirectories, string root) 
{ 
    foreach (string oldDirectory in oldDirectories) 
    { 
    string directoryToCreate = root + @"\" + new DirectoryInfo(oldDirectory).Name; 
    if (!Directory.Exists(directoryToCreate)) 
     Directory.CreateDirectory(directoryToCreate); 
    if (Directory.GetDirectories(oldDirectory).Count() > 0) 
     CreateDirectoriesRecursive(Directory.GetDirectories(oldDirectory), directoryToCreate); 
    } 
} 
0

您可以使用FileSystemWatcher类来控制OLD目录中的更改,将它们重复到NEW中。

此外,您也可以将此手表放置在NEW上,以管理那里的不需要的访问。