6
6
using System . Linq ;
7
7
using System . Threading . Tasks ;
8
8
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
+
9
22
namespace Zipper {
10
23
class Process {
11
24
public static string tmpPath ;
@@ -40,12 +53,17 @@ public static void MainProcess(string[] args) {
40
53
dirs = Directory . GetDirectories ( AppConfig . BackupPath ) . ToList ( ) ;
41
54
List < string > worlds = new List < string > ( ) ;
42
55
foreach ( string dir in dirs ) {
56
+ Logger . Debug ( $ "game directory : { dir } , ({ Directory . Exists ( dir ) } )") ;
43
57
worlds . AddRange ( Directory . GetDirectories ( dir ) ) ;
44
58
}
45
59
foreach ( var w in worlds ) {
60
+ Logger . Debug ( $ " world data : { w } , ({ Directory . Exists ( w ) } )") ;
46
61
backups . AddRange ( Directory . GetDirectories ( w ) ) ;
47
62
backups . AddRange ( Directory . GetFiles ( w ) ) ;
48
63
}
64
+ foreach ( var p in backups ) {
65
+ Logger . Debug ( $ " backup data : { p } , (dir { Directory . Exists ( p ) } ,file { File . Exists ( p ) } )") ;
66
+ }
49
67
50
68
51
69
if ( args [ 0 ] == "0" ) {
@@ -77,8 +95,8 @@ private static void TmpProcess() {
77
95
}
78
96
}
79
97
Logger . Info ( "tmpファイルを作成します" ) ;
80
-
81
- try {
98
+
99
+ try {
82
100
FileSystem . CreateDirectory ( tmpPath ) ;
83
101
}
84
102
catch ( Exception e ) {
@@ -110,22 +128,35 @@ private static void ZipProcess(List<string> backups) {
110
128
Logger . Info ( $ "{ pasess . Count ( ) } 件のバックアップを検討します") ;
111
129
foreach ( var path in pasess ) {
112
130
Logger . Info ( $ "-------{ path } の検討をします-------") ;
113
- Logger . Info ( $ "zipファイル判定:{ path . Contains ( ".zip" ) } ") ;
114
-
131
+ Logger . Info ( $ "zipファイル判定:{ path . Contains ( ".zip" ) } \n ({ path } )") ;
115
132
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化完了") ;
116
151
117
- // -------Zip--------
118
- Zip ( path ) ;
119
-
120
- // -------Delete--------
152
+ // ---Delete---
121
153
try {
122
154
FileSystem . DeleteDirectory ( path , UIOption . OnlyErrorDialogs , RecycleOption . DeletePermanently ) ;
123
155
}
124
156
catch ( Exception e ) {
125
157
Logger . Error ( e . GetType ( ) . ToString ( ) ) ;
126
158
Logger . Error ( e . Message ) ;
127
159
Logger . Error ( e . StackTrace ) ;
128
- //Console.ReadLine();
129
160
errorCount ++ ;
130
161
continue ;
131
162
}
@@ -142,13 +173,13 @@ private static void ZipProcess(List<string> backups) {
142
173
private static void DecompProcess ( List < string > backups ) {
143
174
List < string > pasess = backups ;
144
175
Logger . Info ( "=========Decompression=========" ) ;
145
-
146
176
Logger . Info ( $ "{ pasess . Count ( ) } 件のバックアップを検討します") ;
147
177
foreach ( var path in pasess ) {
148
178
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 ) } ") ;
150
181
if ( path . Contains ( ".zip" ) ) {
151
- //バックアップがzipの場合
182
+ // ---Decomp---
152
183
Logger . Info ( $ "{ path } の処理を開始します") ;
153
184
try { ZipFile . ExtractToDirectory ( $ "{ path } ", path . Substring ( 0 , path . Length - 4 ) ) ; }
154
185
catch ( IOException ) {
@@ -171,11 +202,24 @@ private static void DecompProcess(List<string> backups) {
171
202
continue ;
172
203
}
173
204
205
+ // ---Delete---
174
206
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
+ }
175
218
catch ( Exception e ) {
176
219
Logger . Error ( e . GetType ( ) . ToString ( ) ) ;
177
220
Logger . Error ( e . Message ) ;
178
221
Logger . Error ( e . StackTrace ) ;
222
+ //Console.ReadLine();
179
223
errorCount ++ ;
180
224
continue ;
181
225
}
@@ -199,31 +243,7 @@ private static void DecompProcess(List<string> backups) {
199
243
return ;
200
244
}
201
245
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
- }
216
246
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化完了") ;
227
247
}
228
248
public static void EndTimeProcess ( bool normalTermination ) {
229
249
if ( normalTermination ) {
@@ -238,7 +258,7 @@ public static void EndTimeProcess(bool normalTermination) {
238
258
Logger . Error ( e . StackTrace ) ;
239
259
}
240
260
}
241
-
261
+
242
262
Logger . Info ( "Exit Process" ) ;
243
263
try {
244
264
Directory . Delete ( tmpPath , true ) ;
0 commit comments