Skip to content

Commit e8eaf02

Browse files
committed
zipperの致命的バグの修正
1 parent 210c007 commit e8eaf02

File tree

4 files changed

+57
-2032
lines changed

4 files changed

+57
-2032
lines changed

DoZipping/Process.cs

Lines changed: 57 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,19 @@
66
using System.Linq;
77
using System.Threading.Tasks;
88

9+
10+
/*
11+
12+
普通のフォルダはディレクトリだけど、zipファイルはファイルとして処理すること!!ディレクトリとzipファイルは全くの別物!!
13+
普通のフォルダはディレクトリだけど、zipファイルはファイルとして処理すること!!ディレクトリとzipファイルは全くの別物!!
14+
普通のフォルダはディレクトリだけど、zipファイルはファイルとして処理すること!!ディレクトリとzipファイルは全くの別物!!
15+
普通のフォルダはディレクトリだけど、zipファイルはファイルとして処理すること!!ディレクトリとzipファイルは全くの別物!!
16+
普通のフォルダはディレクトリだけど、zipファイルはファイルとして処理すること!!ディレクトリとzipファイルは全くの別物!!
17+
普通のフォルダはディレクトリだけど、zipファイルはファイルとして処理すること!!ディレクトリとzipファイルは全くの別物!!
18+
19+
*/
20+
21+
922
namespace Zipper {
1023
class Process {
1124
public static string tmpPath;
@@ -40,12 +53,17 @@ public static void MainProcess(string[] args) {
4053
dirs = Directory.GetDirectories(AppConfig.BackupPath).ToList();
4154
List<string> worlds = new List<string>();
4255
foreach (string dir in dirs) {
56+
Logger.Debug($"game directory : {dir} , ({Directory.Exists(dir)})");
4357
worlds.AddRange(Directory.GetDirectories(dir));
4458
}
4559
foreach (var w in worlds) {
60+
Logger.Debug($" world data : {w} , ({Directory.Exists(w)})");
4661
backups.AddRange(Directory.GetDirectories(w));
4762
backups.AddRange(Directory.GetFiles(w));
4863
}
64+
foreach(var p in backups) {
65+
Logger.Debug($" backup data : {p} , (dir {Directory.Exists(p)},file {File.Exists(p)})");
66+
}
4967

5068

5169
if (args[0] == "0") {
@@ -77,8 +95,8 @@ private static void TmpProcess() {
7795
}
7896
}
7997
Logger.Info("tmpファイルを作成します");
80-
81-
try{
98+
99+
try{
82100
FileSystem.CreateDirectory(tmpPath);
83101
}
84102
catch (Exception e){
@@ -110,22 +128,35 @@ private static void ZipProcess(List<string> backups) {
110128
Logger.Info($"{pasess.Count()}件のバックアップを検討します");
111129
foreach (var path in pasess) {
112130
Logger.Info($"-------{path} の検討をします-------");
113-
Logger.Info($"zipファイル判定:{path.Contains(".zip")}");
114-
131+
Logger.Info($"zipファイル判定:{path.Contains(".zip")}\n({path})");
115132
if (!path.Contains(".zip")) {
133+
// ---Zip---
134+
Logger.Info($"{path} の処理を開始します");
135+
try {
136+
ZipFile.CreateFromDirectory(path, $"{path}.zip");
137+
}
138+
catch (IOException) {
139+
Logger.Error($"{path}: zipping io exception");
140+
errorCount++;
141+
continue;
142+
}
143+
catch (Exception e) {
144+
Logger.Error(e.GetType().ToString());
145+
Logger.Error(e.Message);
146+
Logger.Error(e.StackTrace);
147+
errorCount++;
148+
continue;
149+
}
150+
Logger.Info($"{path} zip化完了");
116151

117-
// -------Zip--------
118-
Zip(path);
119-
120-
// -------Delete--------
152+
// ---Delete---
121153
try {
122154
FileSystem.DeleteDirectory(path, UIOption.OnlyErrorDialogs, RecycleOption.DeletePermanently);
123155
}
124156
catch (Exception e) {
125157
Logger.Error(e.GetType().ToString());
126158
Logger.Error(e.Message);
127159
Logger.Error(e.StackTrace);
128-
//Console.ReadLine();
129160
errorCount++;
130161
continue;
131162
}
@@ -142,13 +173,13 @@ private static void ZipProcess(List<string> backups) {
142173
private static void DecompProcess(List<string> backups) {
143174
List<string> pasess = backups;
144175
Logger.Info("=========Decompression=========");
145-
146176
Logger.Info($"{pasess.Count()}件のバックアップを検討します");
147177
foreach (var path in pasess) {
148178
Logger.Info($"-----{path} の検討をします-----");
149-
Logger.Info($"zipファイル判定:{path.Contains(".zip")}");
179+
Logger.Info($"zipファイル判定:{path.Contains(".zip")}\n({path})");
180+
Logger.Info($"{Directory.Exists(path)}");
150181
if (path.Contains(".zip")) {
151-
//バックアップがzipの場合
182+
// ---Decomp---
152183
Logger.Info($"{path}の処理を開始します");
153184
try { ZipFile.ExtractToDirectory($"{path}", path.Substring(0, path.Length - 4)); }
154185
catch (IOException) {
@@ -171,11 +202,24 @@ private static void DecompProcess(List<string> backups) {
171202
continue;
172203
}
173204

205+
// ---Delete---
174206
try { File.Delete($"{path}"); }
207+
catch (IOException) {
208+
Logger.Warn($"{path}が使用中だったため10秒後再試行します");
209+
Task.Delay(10000);
210+
try { File.Delete($"{path}"); }
211+
catch {
212+
Logger.Error($"{path}が使用中のためスルーします");
213+
errorCount++;
214+
continue;
215+
}
216+
//Console.ReadLine();
217+
}
175218
catch (Exception e) {
176219
Logger.Error(e.GetType().ToString());
177220
Logger.Error(e.Message);
178221
Logger.Error(e.StackTrace);
222+
//Console.ReadLine();
179223
errorCount++;
180224
continue;
181225
}
@@ -199,31 +243,7 @@ private static void DecompProcess(List<string> backups) {
199243
return;
200244
}
201245
EndTimeProcess(true);
202-
203-
}
204-
private static void Zip(string path) {
205-
//バックアップがzipじゃない場合
206-
Logger.Info($"{path} の処理を開始します");
207-
try {
208-
ZipFile.CreateFromDirectory(path, $"{path}.zip");
209-
}
210-
catch (IOException) {
211-
Logger.Error($"{path}: zipping io exception");
212-
//Console.ReadLine();
213-
errorCount++;
214-
return;
215-
}
216246

217-
catch (Exception e) {
218-
Logger.Error(e.GetType().ToString());
219-
Logger.Error(e.Message);
220-
Logger.Error(e.StackTrace);
221-
//Console.ReadLine();
222-
errorCount++;
223-
return;
224-
}
225-
226-
Logger.Info($"{path} zip化完了");
227247
}
228248
public static void EndTimeProcess(bool normalTermination) {
229249
if (normalTermination) {
@@ -238,7 +258,7 @@ public static void EndTimeProcess(bool normalTermination) {
238258
Logger.Error(e.StackTrace);
239259
}
240260
}
241-
261+
242262
Logger.Info("Exit Process");
243263
try {
244264
Directory.Delete(tmpPath,true);

MinecraftAutoBackup.sln

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MABProcessAtWait", "MABProc
99
EndProject
1010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Zipper", "DoZipping\Zipper.csproj", "{0EB2598B-A2CE-45A6-9B68-D633DFB86D8E}"
1111
EndProject
12-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp2", "ConsoleApp2\ConsoleApp2.csproj", "{D8EBF79E-C235-4E4E-A4D7-9435962FC1F5}"
13-
EndProject
1412
Global
1513
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1614
Debug|Any CPU = Debug|Any CPU
@@ -29,10 +27,6 @@ Global
2927
{0EB2598B-A2CE-45A6-9B68-D633DFB86D8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
3028
{0EB2598B-A2CE-45A6-9B68-D633DFB86D8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
3129
{0EB2598B-A2CE-45A6-9B68-D633DFB86D8E}.Release|Any CPU.Build.0 = Release|Any CPU
32-
{D8EBF79E-C235-4E4E-A4D7-9435962FC1F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33-
{D8EBF79E-C235-4E4E-A4D7-9435962FC1F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
34-
{D8EBF79E-C235-4E4E-A4D7-9435962FC1F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
35-
{D8EBF79E-C235-4E4E-A4D7-9435962FC1F5}.Release|Any CPU.Build.0 = Release|Any CPU
3630
EndGlobalSection
3731
GlobalSection(SolutionProperties) = preSolution
3832
HideSolutionNode = FALSE

MinecraftAutoBackup/logs/MABProcess.txt

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)