One Way 세 번째 폴더를 사용하여 두 폴더간에 동기화


1

지금까지 폴더 A와 폴더 B 사이의 단방향 동기화를 만들기를 원했고 RoboCopy가 그 일을합니다. 그러나 폴더 B의 일부 파일은 폴더 C (이 시스템에 의해 제어되지 않음)로 이동됩니다. 따라서 수행해야하는 동기화는 폴더 A 및 폴더 B이지만 폴더 C에있는 파일이 폴더 A에서 폴더 B로 복사되지는 않습니다 해당 파일이 최신이거나 수정되지 않은 한. 해당 기능을 수행 할 수있는 도구가 있다면 어떤 아이디어입니까? 커스텀 툴을 개발하기 전에.

답변:


0

아무도 내가 여기에서 대답하지 못했기 때문에 내 문제를 해결하고이 작업을 조사 할 것입니다. 당신이 무슨 생각을하는지 제게 알려주세요

의사 코드

                 if ((fileA is not in C) and (fileA is not in B))
                            Copy fileA in B
                else if ((fileA is in C) and (fileA is not in B))
                      if ((Date(FileA) != Date(FileC))
                            Copy fileA in B    
                else if ((fileA is not in C) and (fileA is in B))
                      if ((Date(FileA) != Date(FileB))
                            Delete(FileB)
                            Copy fileA in B   
                else if ((fileA is in C) and (fileA is in B))
                      if ((Date(FileA) != Date(FileB))
                            Delete(FileB)
                            Copy fileA in B   

암호:

 static void Main(string[] args)
        {
            string folderA = @"H:\testing_sync\A\";
            string folderB = @"H:\testing_sync\B\";
            string folderC = @"H:\testing_sync\C\";
            string[] files = Directory.EnumerateFiles(folderA, "*.pdf", SearchOption.AllDirectories).ToArray();
            DateTime today = System.DateTime.Now;
            foreach (var filepath in files)
            {

                Console.WriteLine(filepath);
                string filename = Path.GetFileName(filepath);
                Console.WriteLine(filename);
                if (!File.Exists(folderC + filename) && !File.Exists(folderB + filename))
                {
                    try
                    {
                        Console.WriteLine("first");
                        File.Copy(folderA + filename, folderB + filename);
                        Console.WriteLine("Copying " + folderA + filename + " to " + folderB + filename);
                        Console.WriteLine();
                    }
                    catch (Exception ex) { }

                }
                else if (File.Exists(folderC + filename) && !File.Exists(folderB + filename))
                {
                    try
                    {
                        Console.WriteLine("second");
                        DateTime aModified = System.IO.File.GetLastWriteTime(folderA + filename);
                        DateTime cModified = System.IO.File.GetLastWriteTime(folderC+ filename);
                        if (DateTime.Compare(aModified, cModified) != 0)
                        {
                            File.Copy(folderA + filename, folderB + filename);
                            Console.WriteLine("Copying " + folderA + filename + " to " + folderB + filename);
                            Console.WriteLine();
                        }
                    }
                    catch (Exception ex) { }

                }
                else if (File.Exists(folderB + filename))
                {
                    try
                    {
                        Console.WriteLine("third");
                        DateTime aModified = System.IO.File.GetLastWriteTime(folderA + filename);
                        DateTime bModified = System.IO.File.GetLastWriteTime(folderB + filename);
                        if (DateTime.Compare(aModified, bModified) != 0)
                        {
                            File.Delete(folderB + filename);
                            File.Copy(folderA + filename, folderB + filename);
                            Console.WriteLine("Copying " + folderA + filename + " to " + folderB + filename);
                            Console.WriteLine();
                        }
                    }
                    catch (Exception ex) { }
                }

               /*
                DateTime lastModified = System.IO.File.GetLastWriteTime(f);


                if (DateTime.Compare(today, lastModified) <= 0)
                {

                }*/

            }
           // System.Threading.Thread.Sleep(50000);

        }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.