/// <summary> /// /// </summary> public void Synchronize() { Directory.CreateDirectory(Source); Directory.CreateDirectory(Target); var src = new DirectoryStructure(Source); var trg = new DirectoryStructure(Target); bool waserror = false; foreach (var fileItem in src.GetDiff(trg)) { try{ Log.Trace("start " + fileItem); Apply(fileItem); Log.Info("complete " + fileItem); } catch (Exception ex) { Log.Error("error " + fileItem, ex); waserror = true; } } if (!waserror) { var hash = src.GetStampFile().ToString(); File.WriteAllText(Path.Combine(Target, DirectoryStructure.SyncFileName), hash); File.WriteAllText(Path.Combine(Source, DirectoryStructure.SyncFileName), hash); Log.Info("stamp file wrote"); } else { Log.Error("stamp not written due to some exceptions"); } }
/// <summary> /// Получить разницу между исходной и целевой директорией /// </summary> /// <returns></returns> public IEnumerable <FileItem> GetDifference() { var src = new DirectoryStructure(Source); var trg = new DirectoryStructure(Target); return(src.GetDiff(trg)); }