diff --git a/wbackup/CommandParser.cs b/wbackup/CommandParser.cs index 17c2944..02b6f92 100644 --- a/wbackup/CommandParser.cs +++ b/wbackup/CommandParser.cs @@ -22,6 +22,7 @@ class CommandParser { + public int maxThreadCount = 6; public int maxRetryCount = 1000; public string sourceDir; public string destinationDir; @@ -29,6 +30,7 @@ public DateTime? abortedTime = null; public string preFixText = ""; public string postFixText = ""; + public List ignoreFile = new List(); public BackupMopde backupMode = BackupMopde.Full; public ArchiveMode archiveMode = ArchiveMode.tgz; @@ -38,6 +40,7 @@ bool isSource = false; bool isDestination = false; bool isLogFile = false; + bool isIgnoreFile = false; bool isAbortTime = false; foreach (var arg in args) @@ -77,6 +80,10 @@ { isDestination = true; } + if ("ignore" == command.ToLower()) + { + isIgnoreFile = true; + } if ("log" == command.ToLower()) { isLogFile = true; @@ -106,6 +113,12 @@ isLogFile = false; } + if (isIgnoreFile) + { + ignoreFile.Add(arg); + isIgnoreFile = false; + } + if (isAbortTime) { abortedTime = DateTime.Parse(arg); @@ -113,6 +126,7 @@ { abortedTime = abortedTime.Value.AddDays(1); } + isAbortTime = false; } } } diff --git a/wbackup/ListingAllSourceFile.cs b/wbackup/ListingAllSourceFile.cs index 86cd356..8e35d74 100644 --- a/wbackup/ListingAllSourceFile.cs +++ b/wbackup/ListingAllSourceFile.cs @@ -11,23 +11,12 @@ namespace wbackup { - class ListingAllSourceFile : BackupStreamBase + class ListingAllSourceFile : ListingSourceFiles { - protected List ignoreFolder = new List(); - public ListingAllSourceFile(BackupStreamBase stream = null):base(stream) { } - /// - /// バックアップ除外フォルダを追加する - /// - /// - public void AddIgnoreFolder(string newFolder) - { - ignoreFolder.Add(newFolder); - } - protected override void DoWork(string sourceFileName) { ListingSourceFiles(sourceFileName); @@ -73,23 +62,5 @@ } } } - - /// - /// バックアップ対象外ファイルか判定する - /// - /// - /// - protected bool isIgnoreFile(string sourceFileName) - { - foreach (var ignoreInfo in ignoreFolder) - { - if (Regex.IsMatch(sourceFileName, ignoreInfo)) - { - return true; - } - } - - return false; - } } } diff --git a/wbackup/ListingArchiveSourceFile.cs b/wbackup/ListingArchiveSourceFile.cs index 723014f..041cfd2 100644 --- a/wbackup/ListingArchiveSourceFile.cs +++ b/wbackup/ListingArchiveSourceFile.cs @@ -9,24 +9,13 @@ namespace wbackup { - class ListingArchiveSourceFile : BackupStreamBase + class ListingArchiveSourceFile : ListingSourceFiles { - protected List ignoreFolder = new List(); - public ListingArchiveSourceFile(BackupStreamBase stream = null) : base(stream) { } - /// - /// バックアップ除外フォルダを追加する - /// - /// - public void AddIgnoreFolder(string newFolder) - { - ignoreFolder.Add(newFolder); - } - protected override void DoWork(string sourceFileName) { ListingSourceFiles(sourceFileName); @@ -71,23 +60,5 @@ } } } - - /// - /// バックアップ対象外ファイルか判定する - /// - /// - /// - protected bool isIgnoreFile(string sourceFileName) - { - foreach (var ignoreInfo in ignoreFolder) - { - if (Regex.IsMatch(sourceFileName, ignoreInfo)) - { - return true; - } - } - - return false; - } } } diff --git a/wbackup/ListingSourceFiles.cs b/wbackup/ListingSourceFiles.cs new file mode 100644 index 0000000..925195e --- /dev/null +++ b/wbackup/ListingSourceFiles.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace wbackup +{ + class ListingSourceFiles : BackupStreamBase + { + protected List ignoreFolder = new List(); + + public ListingSourceFiles(BackupStreamBase stream = null) : base(stream) + { + } + + /// + /// バックアップ除外フォルダを追加する + /// + /// + public void AddIgnoreFolder(string newFolder) + { + ignoreFolder.Add(newFolder); + } + + /// + /// バックアップ対象外ファイルか判定する + /// + /// + /// + protected bool isIgnoreFile(string sourceFileName) + { + foreach (var ignoreInfo in ignoreFolder) + { + if (0 <= sourceFileName.IndexOf(ignoreInfo)) + { + return true; + } + } + + return false; + } + } +} diff --git a/wbackup/Program.cs b/wbackup/Program.cs index b72688e..598dc45 100644 --- a/wbackup/Program.cs +++ b/wbackup/Program.cs @@ -29,27 +29,33 @@ CommandParser param = new CommandParser(args); - BackupStreamBase backupEngine = null; + ListingSourceFiles backupEngine = null; + // 出力先インスタンスを生成する + ParallelBackup parallel = new ParallelBackup(); + for (int i = 0; i < param.maxThreadCount; i++) + { + string exportFileName = param.destinationDir + "-" + i.ToString("00") + "-"; + parallel.AddNextStream(new ArchiveTarFile(exportFileName, new ClearArchiveFlag())); + } + + // バックアップエンジンのインスタンスを生成する if (param.backupMode == BackupMopde.Full) { - //backupEngine = new ListingAllSourceFile(new ArchiveTarFile(param.destinationDir, new ClearArchiveFlag())); - ParallelBackup parallel = new ParallelBackup(); - parallel.AddNextStream(new ArchiveTarFile(param.destinationDir + "-01-", new ClearArchiveFlag())); - parallel.AddNextStream(new ArchiveTarFile(param.destinationDir + "-02-", new ClearArchiveFlag())); - parallel.AddNextStream(new ArchiveTarFile(param.destinationDir + "-03-", new ClearArchiveFlag())); - parallel.AddNextStream(new ArchiveTarFile(param.destinationDir + "-04-", new ClearArchiveFlag())); - parallel.AddNextStream(new ArchiveTarFile(param.destinationDir + "-05-", new ClearArchiveFlag())); - parallel.AddNextStream(new ArchiveTarFile(param.destinationDir + "-06-", new ClearArchiveFlag())); backupEngine = new ListingAllSourceFile(parallel); } if (param.backupMode == BackupMopde.Incremental) { - backupEngine = new ListingArchiveSourceFile(new ArchiveTarFile(param.destinationDir)); + backupEngine = new ListingArchiveSourceFile(parallel); } if (param.backupMode == BackupMopde.Differencial) { - backupEngine = new ListingArchiveSourceFile(new ArchiveTarFile(param.destinationDir, new ClearArchiveFlag())); + backupEngine = new ListingArchiveSourceFile(parallel); + } + + foreach (var ignoreFile in param.ignoreFile) + { + backupEngine.AddIgnoreFolder(ignoreFile); } backupEngine.AddSource(param.sourceDir); diff --git a/wbackup/Properties/launchSettings.json b/wbackup/Properties/launchSettings.json index 7e3aa0f..a5ae103 100644 --- a/wbackup/Properties/launchSettings.json +++ b/wbackup/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "wbackup": { "commandName": "Project", - "commandLineArgs": "-srce \"D:\\Projects\\atozip\" -dest \"D:\\backup\\archive\" -log \"D:\\backup\\archive\" -full -aborttime 13:00" + "commandLineArgs": "-srce \"D:\\Projects\\atozip\" -dest \"D:\\backup\\archive\" -log \"D:\\backup\\archive\" -incremental -ignore D:\\Projects\\atozip\\.git\\ -ignore D:\\Projects\\atozip\\.vs\\" } } } \ No newline at end of file