diff --git a/wbackup/BackupStreamBase.cs b/wbackup/BackupStreamBase.cs
index 6cfd4f3..f32f5e5 100644
--- a/wbackup/BackupStreamBase.cs
+++ b/wbackup/BackupStreamBase.cs
@@ -91,7 +91,7 @@
///
/// Threadを開始する
///
- public void Start()
+ public virtual void Start()
{
threadInstance.Start();
@@ -101,7 +101,7 @@
}
}
- public void Wait()
+ public virtual void Wait()
{
while (threadInstance.IsAlive)
{
@@ -118,7 +118,7 @@
///
public void DoWork(object data)
{
- if (log.IsDebugEnabled) log.Error("begin thread");
+ if (log.IsDebugEnabled) log.Debug("begin thread");
working = true;
while (true)
@@ -134,8 +134,9 @@
// これ以上処理するデータが無いことを示す
if (sourceFileName == "")
{
- AddNextSource("");
if (log.IsDebugEnabled) log.Error("detect end of queue");
+ AddNextSource("");
+ OnEndStream();
break;
}
@@ -151,7 +152,7 @@
}
working = false;
- if (log.IsDebugEnabled) log.Error("finish thread");
+ if (log.IsDebugEnabled) log.Debug("finish thread");
}
///
@@ -162,5 +163,10 @@
{
}
+
+ protected virtual void OnEndStream()
+ {
+
+ }
}
}
diff --git a/wbackup/ParallelBackup.cs b/wbackup/ParallelBackup.cs
new file mode 100644
index 0000000..721cdcb
--- /dev/null
+++ b/wbackup/ParallelBackup.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Threading;
+
+namespace wbackup
+{
+ class ParallelBackup : BackupStreamBase
+ {
+ int archiveCount = 0;
+ List nextParallelStream = new List();
+
+ public ParallelBackup() : base(null)
+ {
+ }
+
+ public ParallelBackup(BackupStreamBase[] streamList) : base(null)
+ {
+ foreach(var stream in streamList)
+ {
+ AddNextStream(stream);
+ }
+ }
+
+ public void AddNextStream(BackupStreamBase stream)
+ {
+ nextParallelStream.Add(stream);
+ }
+
+ protected override void DoWork(string sourceFileName)
+ {
+ int archiveCountTemp = Interlocked.Increment(ref archiveCount);
+ if (log.IsDebugEnabled) log.DebugFormat("Clear {0}, {1}", archiveCountTemp, sourceFileName);
+ int parallelIndex = archiveCountTemp % nextParallelStream.Count;
+ nextParallelStream[parallelIndex].AddSource(sourceFileName);
+ }
+
+ public override void Start()
+ {
+ base.Start();
+
+ foreach (var next in nextParallelStream)
+ {
+ next.Start();
+ }
+ }
+
+ public override void Wait()
+ {
+ base.Wait();
+
+ foreach (var next in nextParallelStream)
+ {
+ next.Wait();
+ }
+ }
+
+ protected override void OnEndStream()
+ {
+ foreach (var next in nextParallelStream)
+ {
+ next.AddSource("");
+ }
+ }
+ }
+}
diff --git a/wbackup/Program.cs b/wbackup/Program.cs
index 4976f73..b72688e 100644
--- a/wbackup/Program.cs
+++ b/wbackup/Program.cs
@@ -22,7 +22,7 @@
{
static void Main(string[] args)
{
- log4net.Config.XmlConfigurator.Configure(new FileInfo(@"config\log4net.config"));
+ log4net.Config.XmlConfigurator.Configure(new FileInfo(@"log4net.config"));
ILog log = LogManager.GetLogger(typeof(Program));
if (log.IsInfoEnabled) log.Info("Application [wbackup] Start");
@@ -33,7 +33,15 @@
if (param.backupMode == BackupMopde.Full)
{
- backupEngine = new ListingAllSourceFile(new ArchiveTarFile(param.destinationDir, new ClearArchiveFlag()));
+ //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)
{
diff --git a/wbackup/config/log4net.config b/wbackup/config/log4net.config
deleted file mode 100644
index dbbb39b..0000000
--- a/wbackup/config/log4net.config
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/wbackup/log4net.config b/wbackup/log4net.config
new file mode 100644
index 0000000..5e004d6
--- /dev/null
+++ b/wbackup/log4net.config
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wbackup/wbackup.csproj b/wbackup/wbackup.csproj
index c7942dc..29d6f97 100644
--- a/wbackup/wbackup.csproj
+++ b/wbackup/wbackup.csproj
@@ -16,10 +16,6 @@
-
-
-
-
@@ -35,11 +31,7 @@
-
-
-
-
-
+
Always