1- using Serilog ;
2- using System ;
1+ using System ;
32using System . Collections . ObjectModel ;
43using System . IO ;
54using System . IO . Compression ;
@@ -14,80 +13,59 @@ public static void Archive(string backupFolder, string archiveFolder, int maxArc
1413 string currentDateTime = String . Format ( "{0:yyyyMMdd_HHmmss}" , DateTime . Now ) ;
1514 string archiveFileName = $ "{ currentDateTime } _{ Path . GetFileName ( backupFolder ) } .zip";
1615
17- if ( ExecuteArchive ( backupFolder , Path . Combine ( archiveFolder , archiveFileName ) ) == true )
16+ if ( CreateArchive ( backupFolder , Path . Combine ( archiveFolder , archiveFileName ) ) == true )
1817 PurgeOldArchives ( archiveFolder , Path . GetFileName ( backupFolder ) , maxArchivesToKeep ) ;
1918 }
2019
21- public static ObservableCollection < Models . FileAttributes > GetArchivesList ( string archiveFolder )
20+ public static ObservableCollection < Models . ArchiveFileAttributes > GetArchivesList ( string archiveFolder )
2221 {
23- ObservableCollection < Models . FileAttributes > archiveFiles = new ObservableCollection < Models . FileAttributes > ( ) ;
22+ ObservableCollection < Models . ArchiveFileAttributes > archiveFiles = new ObservableCollection < Models . ArchiveFileAttributes > ( ) ;
2423
25- try
24+ if ( String . IsNullOrWhiteSpace ( archiveFolder ) == false && Directory . Exists ( archiveFolder ) == true )
2625 {
27- if ( String . IsNullOrWhiteSpace ( archiveFolder ) == false && Directory . Exists ( archiveFolder ) == true )
26+ var directory = new DirectoryInfo ( archiveFolder ) ;
27+ foreach ( FileInfo fileInfo in directory . GetFiles ( ) . OrderByDescending ( p => p . CreationTime ) )
2828 {
29- var directory = new DirectoryInfo ( archiveFolder ) ;
30- foreach ( FileInfo fileInfo in directory . GetFiles ( ) . OrderByDescending ( p => p . CreationTime ) )
31- {
32- archiveFiles . Add ( new Models . FileAttributes ( fileInfo . Name , fileInfo . DirectoryName , fileInfo . LastWriteTime , fileInfo . Length ) ) ;
33- }
29+ archiveFiles . Add ( new Models . ArchiveFileAttributes ( fileInfo . Name , fileInfo . DirectoryName , fileInfo . LastWriteTime , fileInfo . Length ) ) ;
3430 }
3531 }
36- catch ( Exception ex )
37- {
38- Log . Error ( "Error while getting list of all archives: {EX}" , ex ) ;
39- }
4032
4133 return archiveFiles ;
4234 }
4335
44- private static bool ExecuteArchive ( string backupFolder , string archiveFileName )
36+ private static bool CreateArchive ( string backupFolder , string archiveFileName )
4537 {
4638 bool success = false ;
4739
48- try
40+ if ( Directory . Exists ( backupFolder ) == true && Directory . GetFiles ( backupFolder , "*" , SearchOption . AllDirectories ) . Length > 0 )
4941 {
50- if ( Directory . Exists ( backupFolder ) == true && Directory . GetFiles ( backupFolder , "*" , SearchOption . AllDirectories ) . Length > 0 )
51- {
52- FileSystemManager . EnsureFolderExists ( archiveFileName ) ;
42+ FileSystemManager . EnsureFolderExists ( archiveFileName ) ;
5343
54- ZipFile . CreateFromDirectory ( backupFolder , archiveFileName , CompressionLevel . Fastest , false ) ;
44+ ZipFile . CreateFromDirectory ( backupFolder , archiveFileName , CompressionLevel . Fastest , false ) ;
5545
56- success = true ;
57- }
58- }
59- catch ( Exception ex )
60- {
61- Log . Error ( "Error while executing archive: {EX}" , ex ) ;
46+ success = true ;
6247 }
6348
6449 return success ;
6550 }
6651
6752 private static void PurgeOldArchives ( string archiveFolder , string archiveFilePattern , int maxArchivesToKeep )
6853 {
69- try
54+ if ( Directory . Exists ( archiveFolder ) == true )
7055 {
71- if ( Directory . Exists ( archiveFolder ) == true )
56+ string [ ] archiveFileNames = Directory . GetFiles ( archiveFolder , $ "*{ archiveFilePattern } .zip") ;
57+ if ( archiveFileNames . Length > maxArchivesToKeep )
7258 {
73- string [ ] archiveFileNames = Directory . GetFiles ( archiveFolder , $ "*{ archiveFilePattern } .zip") ;
74- if ( archiveFileNames . Length > maxArchivesToKeep )
75- {
76- Array . Sort ( archiveFileNames , StringComparer . InvariantCulture ) ;
59+ Array . Sort ( archiveFileNames , StringComparer . InvariantCulture ) ;
7760
78- int filesToDelete = archiveFileNames . Length - maxArchivesToKeep ;
79- for ( int i = 0 ; i < filesToDelete ; i ++ )
80- {
81- if ( File . Exists ( archiveFileNames [ i ] ) == true )
82- File . Delete ( archiveFileNames [ i ] ) ;
83- }
61+ int filesToDelete = archiveFileNames . Length - maxArchivesToKeep ;
62+ for ( int i = 0 ; i < filesToDelete ; i ++ )
63+ {
64+ if ( File . Exists ( archiveFileNames [ i ] ) == true )
65+ File . Delete ( archiveFileNames [ i ] ) ;
8466 }
8567 }
8668 }
87- catch ( Exception ex )
88- {
89- Log . Error ( "Error while purging old archives: {EX}" , ex ) ;
90- }
9169 }
9270 }
9371}
0 commit comments