@@ -19,7 +19,7 @@ public AbstractProvider(IFileJobOptions jobOptions) : base(jobOptions)
1919 if ( syncJobOptions . SourcePath . StartsWith ( "scp:" ) )
2020 {
2121 SourceAccess = new ScpAccessProvider ( syncJobOptions . Credentials ) ;
22-
22+
2323 }
2424 else
2525 {
@@ -34,7 +34,7 @@ public AbstractProvider(IFileJobOptions jobOptions) : base(jobOptions)
3434 {
3535 DestinationAccess = new FileIoAccessProvider ( ) ;
3636 }
37-
37+
3838 }
3939
4040 public override void DeleteFiles ( )
@@ -47,31 +47,40 @@ public override void SyncSourceToDest()
4747 if ( ! ( JobOptions is IFileSyncJobOptions jobOptions ) )
4848 throw new ArgumentException ( "this instance has no information about syncing files, it has type " + JobOptions . GetType ( ) . ToString ( ) ) ;
4949 var sw = Stopwatch . StartNew ( ) ;
50+
5051 try
5152 {
5253 string formattedDestinationPath = string . Format ( jobOptions . DestinationPath , DateTime . Now ) ;
5354 DestinationAccess . UpdateAccessPath ( formattedDestinationPath ) ;
54- DestinationAccess . CreateDirectory ( "" ) ;
5555 }
56- catch ( Exception ex ) { logger ? . LogError ( ex , "exception creating destination directory {A}" , jobOptions . DestinationPath ) ; }
57- if ( JobOptions . Credentials != null )
58- {
56+ catch ( Exception ex ) { logger ? . LogError ( ex , "exception formatting destination accesspath with DateTime.Now as 0 arg {A}" , jobOptions . DestinationPath ) ; }
5957
60- }
58+ bool createDestinationDir = true ;
6159 int copied = 0 ;
6260 int skipped = 0 ;
6361 var minimumLastWriteTime = jobOptions . RememberLastSync ? ( LastRun - jobOptions . Interval - jobOptions . Interval ) : DateTime . MinValue ;
6462 bool error_occured = false ;
6563 try
6664 {
67- var sourceFiles = SourceAccess . GetFiles ( minimumLastWriteTime . DateTime , JobOptions . SearchPattern , recursive : JobOptions . Recursive , subfolders : JobOptions . Subfolders ) ;
68-
65+ var sourceFiles = SourceAccess . GetFiles ( minimumLastWriteTime : minimumLastWriteTime . DateTime ,
66+ pattern : JobOptions . SearchPattern ,
67+ recursive : JobOptions . Recursive ,
68+ subfolders : JobOptions . Subfolders ) ;
6969 foreach ( var sourceFile in sourceFiles )
7070 {
7171 var remoteFile = DestinationAccess . GetFileInfo ( sourceFile . Name ) ;
7272 bool copy = ! remoteFile . Exists || remoteFile . Length != sourceFile . Length || remoteFile . LastWriteTime != sourceFile . LastWriteTime ;
7373 if ( copy )
7474 {
75+ if ( createDestinationDir )
76+ {
77+ try
78+ {
79+ DestinationAccess . CreateDirectory ( "" ) ;
80+ }
81+ catch ( Exception ex ) { logger ? . LogError ( ex , "exception creating destination directory {A}" , jobOptions . DestinationPath ) ; }
82+ createDestinationDir = false ;
83+ }
7584 try
7685 {
7786 logger . LogDebug ( "Copy {A}" , sourceFile . Name ) ;
@@ -105,7 +114,7 @@ public override void SyncSourceToDest()
105114 LastRun = DateTimeOffset . Now ;
106115 }
107116 }
108- catch ( Exception exc )
117+ catch ( Exception exc )
109118 {
110119 logger . LogError ( exc , "Exception in main logic of abstract provider" ) ;
111120 }
0 commit comments