public void Wildcard2Filter() { FileSelectionList list = new FileSelectionList(); list.Add(testPath); FileFilter filter = new FileFilter(); filter.Add(@".*\.b"); filter.Add(@".*\.c"); BackupParameters param = new BackupParameters() { type = EBackupType.Full }; FileList files = new Backup().GetFiles(list, filter, param); List <String> expected = new List <string>() { testPath + @"\file1.a", testPath + @"\dir1\file4.a", testPath + @"\dir2\file6.a", }; CompareFileLists(files, expected); }
private void AppendFile(ref FileList list, FileFilter filter, BackupParameters param, FileInfo f) { if ((param.type == EBackupType.Incremental && f.LastWriteTime > param.lastBackup) || param.type == EBackupType.Full) { if (!filter.Match(f.FullName)) { list.Add(f); } } }
public void GetAllFilesZip() { FileSelectionList list = new FileSelectionList(); list.Add(testPath); FileFilter filter = new FileFilter(); BackupParameters param = new BackupParameters() { type = EBackupType.Full, outputDirectory = outputPath, backupName = "GetAllFilesZip", backupTime = new DateTime(2020, 1, 1, 13, 0, 0) }; FileList files = new Backup().GetFiles(list, filter, param); new Backup().DoBackup(files, param); }
private void AppendDirectory(ref FileList list, FileFilter filter, BackupParameters param, DirectoryInfo di) { try { FileInfo[] files = di.GetFiles(); foreach (var f in files) { AppendFile(ref list, filter, param, f); } DirectoryInfo[] dirs = di.GetDirectories(); foreach (var d in dirs) { AppendDirectory(ref list, filter, param, d); } } catch (Exception ex) { BackupErrorMessage?.Invoke($"Failed to backup directory '{di.FullName}' - {ex.Message}"); } }
public void DuplicateFiles() { FileSelectionList list = new FileSelectionList(); list.Add(testPath + @"\file3.c"); list.Add(testPath + @"\file3.c"); FileFilter filter = new FileFilter(); BackupParameters param = new BackupParameters() { type = EBackupType.Full }; FileList files = new Backup().GetFiles(list, filter, param); List <String> expected = new List <string>() { testPath + @"\file3.c", }; CompareFileLists(files, expected); }
public void GetAllFiles() { FileSelectionList list = new FileSelectionList(); list.Add(testPath); FileFilter filter = new FileFilter(); BackupParameters param = new BackupParameters() { type = EBackupType.Full }; FileList files = new Backup().GetFiles(list, filter, param); List <String> expected = new List <string>(); foreach (var f in testFiles) { expected.Add(f.filename); } CompareFileLists(files, expected); }
public FileList GetFiles(FileSelectionList list, FileFilter filter, BackupParameters param) { FileList files = new FileList(); foreach (var path in list) { FileInfo f = new FileInfo(path); if (f.Exists) { AppendFile(ref files, filter, param, f); } else { DirectoryInfo d = new DirectoryInfo(path); if (d.Exists) { AppendDirectory(ref files, filter, param, d); } } } return(files); }
public void DoBackup(FileList files, BackupParameters param) { string path = MakeBackupFilename(param); //System.Console.WriteLine("|----:----|----:----|----:----|----:----|----:----|"); //System.Console.WriteLine("01234567890123456789012345678901234567890123456789"); int steps = 50; UInt64 count = 0; int lastTick = -1; using (FileStream zipStream = new FileStream(path, FileMode.Create)) { using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create)) { foreach (var file in files) { int tick = (int)(count / (files.totalBytes / (ulong)steps)); if (tick != lastTick) { BackupUpdate?.Invoke(tick, steps); //System.Console.Write("."); lastTick = tick; } try { FileInfo fileInfo = new FileInfo(file); count += (UInt64)fileInfo.Length; archive.CreateEntryFromFile(file, file); } catch (Exception ex) { BackupErrorMessage?.Invoke($"Failed to backup file '{file}' - {ex.Message}"); } } } } }
public void IncrementalFilter() { FileSelectionList list = new FileSelectionList(); list.Add(testPath); FileFilter filter = new FileFilter(); filter.Add(@".*\.b"); filter.Add(@".*\.c"); BackupParameters param = new BackupParameters() { type = EBackupType.Incremental, lastBackup = new DateTime(2020, 1, 1, 12, 15, 0) }; FileList files = new Backup().GetFiles(list, filter, param); List <String> expected = new List <string>() { testPath + @"\dir1\file4.a", }; CompareFileLists(files, expected); }
public void TestMakeFilename() { BackupParameters param = new BackupParameters() { type = EBackupType.Full, outputDirectory = "d:\\outdir", backupName = "TestMakeFilename", backupTime = new DateTime(2020, 1, 1, 13, 0, 0) }; string path = new Backup().MakeBackupFilename(param); Assert.AreEqual("d:\\outdir\\TestMakeFilename.Full.2020-01-01T130000.zip", path); param = new BackupParameters() { type = EBackupType.Full, outputDirectory = "d:\\outdir", backupName = "TestMakeFilename", backupTime = new DateTime(2020, 1, 1, 1, 2, 3) }; path = new Backup().MakeBackupFilename(param); Assert.AreEqual("d:\\outdir\\TestMakeFilename.Full.2020-01-01T010203.zip", path); param = new BackupParameters() { type = EBackupType.Incremental, outputDirectory = "d:\\outdir", backupName = "TestMakeFilename", backupTime = new DateTime(2020, 1, 1, 1, 2, 3) }; path = new Backup().MakeBackupFilename(param); Assert.AreEqual("d:\\outdir\\TestMakeFilename.Inc.2020-01-01T010203.zip", path); }
public void GetAllFiles2() { FileSelectionList list = new FileSelectionList(); list.Add(testPath + @"\dir2"); list.Add(testPath + @"\dir1\dir3"); FileFilter filter = new FileFilter(); BackupParameters param = new BackupParameters() { type = EBackupType.Full }; FileList files = new Backup().GetFiles(list, filter, param); List <String> expected = new List <string>() { testPath + @"\dir2\file6.a", testPath + @"\dir2\file7.b", testPath + @"\dir1\dir3\dir4\file8.b", testPath + @"\dir1\dir3\dir4\file9.c", }; CompareFileLists(files, expected); }
public string MakeBackupFilename(BackupParameters param) { string filename = param.backupName + (param.type == EBackupType.Full ? ".Full" : ".Inc") + param.backupTime.ToString(".yyyy-MM-ddTHHmmss") + ".zip"; return(Path.Combine(param.outputDirectory, filename)); }