public static BackupUnit FromDirectory(DirectoryInfo directory, string dir) { var unit = new BackupUnit(dir, directory.Name); // Read Manifest if (unit._manifestFile.Exists) { var manifest = File.ReadAllText(unit._manifestFile.FullName); foreach (var line in manifest.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)) { unit._files.Add(line); } } else { foreach (var file in directory.GetFiles("*", SearchOption.AllDirectories)) { if (file.Name == ManifestFileName) { continue; } var relativePath = file.FullName.Substring(directory.FullName.Length + 1); unit._files.Add(relativePath); } } return(unit); }
public static BackupUnit FindLatestBackup(string dir) { new DirectoryInfo(dir).Create(); return(new DirectoryInfo(dir) .GetDirectories() .OrderByDescending(p => p.Name) .Select(p => BackupUnit.FromDirectory(p, dir)) .FirstOrDefault()); }