Пример #1
0
 public static Patch CreateFromSource(IBackupSource source)
 {
     return new Patch(source, new EmptyBackupChain ())
                     {
                         RemovedFiles = new string[0],
                         AddedOrChangedFiles = source.EnumerateFiles ()
                     };
 }
Пример #2
0
        public static Patch Compare(IBackupSource source, IBackupChain target)
        {
            Trace.WriteLine("Comparing source to destination", "Patch");

            var result = new Patch(source, target);

            var sourceFiles = source.EnumerateFiles ().ToArray ();

            result.RemovedFiles = target.GetFiles().Where(file => sourceFiles.All(a => a.RelativePath.ToLower() != file.ToLower()));

            result.AddedOrChangedFiles =
                sourceFiles.Where(a => !target.GetFiles().Select(m => m.ToLower()).Contains(a.RelativePath.ToLower()) || target.GetFileSize(a.RelativePath) != a.GetFileSize() || !HashMatches(target, a)).AsParallel ().ToArray ();
            return result;
        }