This is an old revision of the document!
synchronize
Advertisement
Syntax
synchronize local|remote|both [ <local directory> [ <remote directory> ] ]
Remarks
When the first parameter is local
, changes from remote directory are applied to local directory. When the first parameter is remote
, changes from the local directory are applied to the remote directory. When the first parameter is both
, both local and remote directories can be modified.
When directories are not specified, current working directories are synchronized.
Note: Overwrite confirmations are always off for the command.
Switches:
Switch | Description |
---|---|
-preview |
Preview changes only, do not synchronize. Transfer settings switches -permissions , -nopermissions , -speed , -transfer and -resumesupport have no effect. |
-delete |
Delete obsolete files. Ignored for both . |
-mirror |
Mirror mode (synchronize also older files). Ignored for both . |
-criteria=<criteria> |
Comparison criteria. Possible values are time , size , either and none . Ignored for both mode. |
-preservetime |
Preserve timestamp. Enforced by default unless -criteria is size or none . |
-nopreservetime |
Do not preserve timestamp. Ignored unless -criteria is size or none . |
-permissions=<mode> |
Set permissions (SFTP and SCP protocols only) |
-nopermissions |
Keep default permissions |
-speed=<kibps> |
Limit transfer speed |
-transfer=<mode> |
binary|ascii|automatic Transfer mode: binary, ascii (text), automatic (by extension). |
-filemask=<mask> |
<mask>[;<mask2>...] Sets file mask. |
-resumesupport= <state> |
on|off|<threshold> Configures automatic resume/transfer to temporary filename. |
Advertisement
Effective options: reconnecttime
XML log elements: download
(with local
or both
), upload
(with remote
or both
), touch
(with remote
or both
), chmod
(with remote
or both
and -permissions
), rm
(with remote
and -delete
)
Examples
synchronize both
synchronize remote -delete d:\www /home/martin/public_html
synchronize both -filemask="|*.bak; *.tmp"
Converting to .NET Assembly
When converting script to .NET Assembly, map synchronize
command to Session.SynchronizeDirectories
method.
Parameters mapping: Command parameter local|remote|both
maps to method parameter mode
, with values SynchronizationMode.Local
, SynchronizationMode.Remote
and SynchronizationMode.Both
, respectively. Command parameter local directory
maps to method parameter localPath
. Command parameter remote directory
maps to method parameter remotePath
. You have to convert relative paths to absolute paths.
Switches mapping:
Switch | Mapping |
---|---|
-delete |
Value true ($True in PowerShell) for method parameter removeFiles . |
-mirror |
Value true ($True ) for method parameter mirror . |
-criteria |
Set method parameter criteria . Use SynchronizationCriteria.Time for time , SynchronizationCriteria.Size for size , SynchronizationCriteria.Either for either and SynchronizationCriteria.None for none . Enumeration syntax in PowerShell is like [WinSCP.SynchronizationCriteria]::Time . |
-permissions -nopermissions -transfer -filemask -resumesupport |
Converting transfer settings scripting switches to .NET assembly class TransferSettings . |
-speed=<kibps> |
Not supported. |
To emulate option batch abort
mode, call TransferOperationResult.Check
on method’s result. See also Capturing results of operations.
For example, following script snippet:
option batch abort ... synchronize both d:\www /home/martin/public_html
Advertisement
maps to following PowerShell code:
$synchronizationResult = $session.SynchronizeDirectories( [WinSCP.SynchronizationMode]::Both, "d:\www", "/home/martin/public_html", $False) # Throw on any error to emulate "option batch abort" $synchronizationResult.Check()