Differences
This shows you the differences between the selected revisions of the page.
| 2016-02-04 | 2016-03-07 | ||
| hashtable style sessionoptions initilization (martin) | symplifying C# example (martin) | ||
| Line 48: | Line 48: | ||
| <code csharp> | <code csharp> | ||
| using System; | using System; | ||
| - | using System.Globalization; | ||
| - | using System.IO; | ||
| using WinSCP; | using WinSCP; | ||
| Line 73: | Line 71: | ||
| session.Open(sessionOptions); | session.Open(sessionOptions); | ||
| - | string stamp = DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture); | + | // Download files |
| - | string fileName = "export_" + stamp + ".txt"; | + | TransferOptions transferOptions = new TransferOptions(); |
| - | string remotePath = "/home/user/sysbatch/" + fileName; | + | transferOptions.TransferMode = TransferMode.Binary; |
| - | string localPath = "d:\\backup\\" + fileName; | + | |
| - | + | ···············TransferOperationResult transferResult; | |
| - | // Manual "remote to local" synchronization. | + | ···············transferResult = session.PutFiles("/home/user/*", @"d:\download\", false, transferOptions); |
| - | + | ||
| - | // You can achieve the same using: | + | ···············// Throw on any error |
| - | // session.SynchronizeDirectories( | + | ···············transferResult.Check(); |
| - | // SynchronizationMode.Local, localPath, remotePath, false, false, SynchronizationCriteria.Time, | + | |
| - | // new TransferOptions { FileMask = fileName }).Check(); | + | ···············// Print results |
| - | if (session.FileExists(remotePath)) | + | ···············foreach (TransferEventArgs transfer in transferResult.Transfers) |
| - | { | + | |
| - | bool download; | + | |
| - | if (!File.Exists(localPath)) | + | |
| - | { | + | |
| - | Console.WriteLine("File {0} exists, local backup {1} does not", remotePath, localPath); | + | |
| - | ·······················download = true; | + | |
| - | } | + | |
| - | else | + | |
| - | { | + | |
| - | DateTime remoteWriteTime = session.GetFileInfo(remotePath).LastWriteTime; | + | |
| - | DateTime localWriteTime = File.GetLastWriteTime(localPath); | + | |
| - | + | ||
| - | if (remoteWriteTime > localWriteTime) | + | |
| - | ························{ | + | |
| - | ····························Console.WriteLine( | + | |
| - | ································"File {0} as well as local backup {1} exist, " + | + | |
| - | ································"but remote file is newer ({2}) than local backup ({3})", | + | |
| - | remotePath, localPath, remoteWriteTime, localWriteTime); | + | |
| - | download = true; | + | |
| - | ·······················} | + | |
| - | else | + | |
| - | { | + | |
| - | Console.WriteLine( | + | |
| - | "File {0} as well as local backup {1} exist, " + | + | |
| - | ·······························"but remote file is not newer ({2}) than local backup ({3})", | + | |
| - | remotePath, localPath, remoteWriteTime, localWriteTime); | + | |
| - | download = false; | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | if (download) | + | |
| - | { | + | |
| - | ························// Download the file and throw on any error | + | |
| - | ·······················session.GetFiles(remotePath, localPath).Check(); | + | |
| - | + | ||
| - | Console.WriteLine("Download to backup done."); | + | |
| - | } | + | |
| - | } | + | |
| - | else | + | |
| { | { | ||
| - | Console.WriteLine("File {0} does not exist yet", remotePath); | + | Console.WriteLine("Download of {0} succeeded", transfer.FileName); |
| } | } | ||
| } | } | ||