Differences
This shows you the differences between the selected revisions of the page.
| 2012-02-18 | 2012-02-18 | ||
| c# heading and missing semicolon (martin) | vbnet example (martin) | ||
| Line 35: | Line 35: | ||
| ===== Example ===== | ===== Example ===== | ||
| - | ==== C# Example ==== | + | ==== [[csharp]] C# Example ==== |
| <code csharp> | <code csharp> | ||
| using System; | using System; | ||
| Line 128: | Line 128: | ||
| </code> | </code> | ||
| + | ==== [[vbnet]] VB.NET Example ==== | ||
| + | <code vbnet> | ||
| + | Imports System | ||
| + | Imports System.Globalization | ||
| + | Imports System.IO | ||
| + | Imports WinSCP | ||
| + | |||
| + | Friend Class Example | ||
| + | |||
| + | Public Shared Function Main() As Integer | ||
| + | |||
| + | Try | ||
| + | ' Setup session options | ||
| + | Dim sessionOptions As New SessionOptions | ||
| + | With sessionOptions | ||
| + | .Protocol = Protocol.Sftp | ||
| + | .HostName = "example.com" | ||
| + | .UserName = "user" | ||
| + | .Password = "mypassword" | ||
| + | .SshHostKey = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" | ||
| + | End With | ||
| + | |||
| + | Using session As Session = New Session | ||
| + | ' Connect | ||
| + | session.Open(sessionOptions) | ||
| + | |||
| + | Dim stamp As String = DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture) | ||
| + | Dim fileName As String = "export_" & stamp & ".txt" | ||
| + | Dim remotePath As String = "/home/user/sysbatch/" & fileName | ||
| + | Dim localPath As String = "d:\backup\" & fileName | ||
| + | |||
| + | ' Manual "remote to local" synchronization. | ||
| + | |||
| + | ' You can achieve the same using: | ||
| + | ' session.SynchronizeDirectories( | ||
| + | ' SynchronizationMode.Local, localPath, remotePath, false, false, SynchronizationCriteria.Time, | ||
| + | ' new TransferOptions { IncludeMask = fileName }).Check(); | ||
| + | If session.FileExists(remotePath) Then | ||
| + | Dim download As Boolean | ||
| + | If Not File.Exists(localPath) Then | ||
| + | Console.WriteLine("File {0} exists, local backup {1} does not", remotePath, localPath) | ||
| + | download = True | ||
| + | Else | ||
| + | Dim remoteWriteTime As DateTime = session.GetFileInfo(remotePath).LastWriteTime | ||
| + | Dim localWriteTime As DateTime = File.GetLastWriteTime(localPath) | ||
| + | |||
| + | If remoteWriteTime > localWriteTime Then | ||
| + | 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 local backup ({3})", _ | ||
| + | remotePath, localPath, remoteWriteTime, localWriteTime) | ||
| + | download = False | ||
| + | End If | ||
| + | End If | ||
| + | |||
| + | If download Then | ||
| + | ' Download the file and throw on any error | ||
| + | session.GetFiles(remotePath, localPath).Check | ||
| + | Console.WriteLine("Download to backup done.") | ||
| + | End If | ||
| + | Else | ||
| + | Console.WriteLine("File {0} does not exist yet", remotePath) | ||
| + | End If | ||
| + | End Using | ||
| + | Return 0 | ||
| + | Catch e As Exception | ||
| + | Console.WriteLine("Error: {0}", e) | ||
| + | Return 1 | ||
| + | End Try | ||
| + | |||
| + | End Function | ||
| + | |||
| + | End Class | ||
| + | </code> | ||