This is an old revision of the document!
Session.SynchronizeDirectories Method
This feature is available only in the latest beta release.
Advertisement
Syntax
C#
public SynchronizationResult SynchronizeDirectories( SynchronizationMode mode, string localPath, string remotePath, bool removeFiles, bool mirror = false, SynchronizationCriteria criteria = SynchronizationCriteria.Time, TransferOptions options = null )
VB.NET
Public Function SynchronizeDirectories( _ ByVal mode As SynchronizationMode, _ ByVal localPath As String, _ ByVal remotePath As String, _ ByVal removeFiles As Boolean, _ ByVal Optional mirror As Boolean = False, _ ByVal Optional criteria As SynchronizationCriteria = 1, _ ByVal Optional options As TransferOptions = Null _ ) As SynchronizationResult
Parameters
Name | Description |
---|---|
SynchronizationMode mode | Synchronization mode. Possible values are SynchronizationMode.Local , SynchronizationMode.Remote and SynchronizationMode.Both . |
string localPath | Full path to local directory. |
string remotePath | Full path to remote directory. |
bool removeFiles | When set to true , deletes obsolete files. Cannot be used for SynchronizationMode.Both . |
bool mirror | When set to true , synchronizes in mirror mode (synchronizes also older files). Cannot be used for SynchronizationMode.Both . Defaults to false . |
SynchronizationCriteria criteria | Comparison criteria. Possible values are SynchronizationCriteria.None , SynchronizationCriteria.Time (default), SynchronizationCriteria.Size and SynchronizationCriteria.Either . For SynchronizationMode.Both SynchronizationCriteria.Time can be used only. |
TransferOptions options | Transfer options. Defaults to null , what is equivalent to new TransferOptions() . |
Advertisement
Return Value
SynchronizationResult
. See also Capturing results of operations.
Exceptions
Exception | Condition |
---|---|
InvalidOperationException | Session is not opened. |
ArgumentException ArgumentOutOfRangeException |
Invalid combination of values of TransferOptions properties, SynchronizationMode , mirror or SynchronizationCriteria . |
SessionLocalException | Error communicating with winscp.com . See the exception documentation for details. |
TimeoutException | Timeout waiting for winscp.com to respond. |
Remarks
Event Session.FileTransferred
is raised for every uploaded or downloaded file.
Examples
C# Example
using System; using WinSCP; class Example { public static int Main() { try { // Setup session options SessionOptions sessionOptions = new 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" }; using (Session session = new Session()) { // Will continuously report progress of synchronization session.FileTransferred += FileTransferred; // Connect session.Open(sessionOptions); SynchronizationResult synchronizationResult; synchronizationResult = session.SynchronizeDirectories( SynchronizationMode.Remote, @"d:\www", "/home/martin/public_html", false); // Throw on any error synchronizationResult.Check(); } return 0; } catch (Exception e) { Console.WriteLine("Error: {0}", e); return 1; } } private static void FileTransferred(object sender, TransferEventArgs e) { if (e.Error == null) { Console.WriteLine("Upload of {0} succeeded", e.FileName); } else { Console.WriteLine("Upload of {0} failed: {1}", e.FileName, e.Error); } if (e.Chmod != null) { if (e.Chmod.Error == null) { Console.WriteLine("Permisions of {0} set to {1}", e.Chmod.FileName, e.Chmod.FilePermissions); } else { Console.WriteLine("Setting permissions of {0} failed: {1}", e.Chmod.FileName, e.Chmod.Error); } } else { Console.WriteLine("Permissions of {0} kept with their defaults", e.Destination); } if (e.Touch != null) { if (e.Touch.Error == null) { Console.WriteLine("Timestamp of {0} set to {1}", e.Touch.FileName, e.Touch.LastWriteTime); } else { Console.WriteLine("Setting timestamp of {0} failed: {1}", e.Touch.FileName, e.Touch.Error); } } else { // This should never happen with Session.SynchronizeDirectories Console.WriteLine("Timestamp of {0} kept with its default (current time)", e.Destination); } } }
Advertisement
VB.NET Example
Imports System 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 ' Will continuously report progress of synchronization AddHandler session.FileTransferred, AddressOf Example.FileTransferred ' Connect session.Open(sessionOptions) Dim synchronizationResult As SynchronizationResult synchronizationResult = _ session.SynchronizeDirectories( _ SynchronizationMode.Remote, "d:\www", "/home/martin/public_html", False) ' Throw on any error synchronizationResult.Check End Using Return 0 Catch e As Exception Console.WriteLine("Error: {0}", e) Return 1 End Try End Function Private Shared Sub FileTransferred(ByVal sender As Object, ByVal e As TransferEventArgs) If e.Error Is Nothing Then Console.WriteLine("Upload of {0} succeeded", e.FileName) Else Console.WriteLine("Upload of {0} failed: {1}", e.FileName, e.Error) End If If Not e.Chmod Is Nothing Then If e.Chmod.Error Is Nothing Then Console.WriteLine("Permisions of {0} set to {1}", e.Chmod.FileName, e.Chmod.FilePermissions) Else Console.WriteLine("Setting permissions of {0} failed: {1}", e.Chmod.FileName, e.Chmod.Error) End If Else Console.WriteLine("Permissions of {0} kept with their defaults", e.Destination) End If If Not e.Touch Is Nothing Then If e.Touch.Error Is Nothing Then Console.WriteLine("Timestamp of {0} set to {1}", e.Touch.FileName, e.Touch.LastWriteTime) Else Console.WriteLine("Setting timestamp of {0} failed: {1}", e.Touch.FileName, e.Touch.Error) End If Else ' This should never happen with Session.SynchronizeDirectories Console.WriteLine("Timestamp of {0} kept with its default (current time)", e.Destination) End If End Sub End Class
Advertisement