Differences

This shows you the differences between the selected revisions of the page.

scriptcommand_synchronize 2014-12-12 scriptcommand_synchronize 2024-04-25 (current)
Line 1: Line 1:
-====== synchronize ====== +====== synchronize command ====== 
-[[task_synchronize_full|Synchronizes directories]].+[[task_synchronize_full|Synchronizes]] content of a local directory with a remote one or vice versa or mutually.
-===== Syntax =====+===== [[syntax]] Syntax =====
  synchronize local|remote|both [ <local directory> [ <remote directory> ] ]   synchronize local|remote|both [ <local directory> [ <remote directory> ] ]
Line 8: Line 8:
===== Remarks ===== ===== 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 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. When directories are not specified, current working directories are synchronized.
Line 16: Line 16:
Switches: Switches:
^ Switch                  ^ Description ^ ^ Switch                  ^ Description ^
-| ''-preview''            | Preview changes only, do not synchronize. Transfer settings switches ''-permissions'', ''-nopermissions'', ''-speed'', ''-transfer'' and ''-resumesupport'' have no effect. | +| ''-==preview==''            | Preview changes only, do not synchronize. Transfer settings switches ''[[#permissions|-permissions]]'', ''[[#nopermissions|-nopermissions]]'', ''[[#speed|-speed]]'', ''[[#transfer|-transfer]]'' and ''[[#resumesupport|-resumesupport]]'' have no effect. | 
-| ''-delete''              | Delete obsolete files. Ignored for ''both''. | +| ''-==delete==''              | Delete obsolete files. Ignored for ''[[#both|both]]'' mode. | 
-| ''-mirror''              | [[task_synchronize_full#synchronization_mode|Mirror mode]] (synchronize also older files). Ignored for ''both''.  | +| ''-==mirror==''              | [[task_synchronize_full#mode|Mirror mode]] (synchronize also older files). Ignored for ''[[#both|both]]'' mode.  | 
-| ''-criteria=<criteria>'' | [[ui_synchronize#comparison_criteria|Comparison criteria]]. Possible values are ''time'', ''size'', ''either'' and ''none''. Ignored for ''both'' mode. | +| ''-==criteria===<criteria>'' | [[ui_synchronize#criteria|Comparison criteria]]. A comma-separated list of any of ''time'', ''size'' and ''checksum'', or ''none''. For backward compatibility, ''either'' is an alias to ''time,size''. Ignored for ''[[#both|both]]'' mode. | 
-| ''-preservetime''        | Preserve timestamp. Enforced by default unless ''-criteria'' is ''size'' or ''none''. | +| ''-==preservetime==''        | Preserve timestamp. Enforced by default unless ''[[#criteria|-criteria]]'' lacks ''time''. | 
-| ''-nopreservetime''      | Do not preserve timestamp. Ignored unless ''-criteria'' is ''size'' or ''none''. | +| ''-==nopreservetime==''      | Do not preserve timestamp. Ignored unless ''[[#criteria|-criteria]]'' lacks ''time''. | 
-| ''-permissions=<mode>''  | Set permissions ([[SFTP]] and [[SCP]] protocols only) | +| ''-==permissions===<mode>''  | Set permissions ([[SFTP]] and [[SCP]] protocols only).
-| ''-nopermissions''      | Keep default permissions | +| ''-==nopermissions==''      | Keep default permissions.
-| ''-speed=<kbps>''        | Limit transfer speed (in KB/s) | +| ''-==speed===<kbps>''        | Limit transfer speed (in KB/s).
-| ''-transfer=<mode>''    | ''%%binary|ascii|automatic%%'' \\ [[transfer_mode|Transfer mode]]: binary, ascii (text), automatic (by extension). |  +| ''-==transfer===<mode>''    | ''%%binary|ascii|automatic%%'' \\ [[transfer_mode|Transfer mode]]: binary, ascii (text), automatic (by extension). |  
-| ''-filemask=<mask>''    | ''%%<mask>[;<mask2>...]%%'' \\ Sets [[file_mask|file mask]]. | +| ''-==filemask===<mask>''    | ''%%<mask>[;<mask2>...]%%'' \\ Sets [[file_mask|file mask]]. | 
-| ''-resumesupport=·<state>'' | ''%%on|off|<threshold>%%'' \\ Configures [[resume#automatic|automatic resume/transfer to temporary filename]]. | +| ''-==resumesupport===<state>'' | ''%%on|off|<threshold>%%'' \\ Configures [[resume#automatic|automatic resume/transfer to temporary filename]]. |  
 +| ''-==rawtransfersettings== setting1=value1 setting2=value2 ...'' | Allows configuring any transfer settings using [[rawtransfersettings|raw format]] as in an INI file. E.g. to enable preserving of directory timestamps, use ''-rawtransfersettings PreserveTimeDirs=1''. The switch should come only after other parameters. |
-Effective [[scriptcommand_option|options]]: ''reconnecttime''+Effective [[scriptcommand_option|options]]: ''[[scriptcommand_option#reconnecttime|reconnecttime]]'', ''[[scriptcommand_option#failonnomatch|failonnomatch]]''
-XML log elements: ''[[logging_xml#download|download]]'' (with ''local'' or ''both''), ''[[logging_xml#upload|upload]]'' (with ''remote'' or ''both''), ''[[logging_xml#mkdir|mkdir]]'', ''[[logging_xml#touch|touch]]'' (with ''remote'' or ''both''), ''[[logging_xml#chmod|chmod]]'' (with ''remote'' or ''both'' and ''-permissions''), ''[[logging_xml#rm|rm]]'' (with ''remote'' and ''-delete'')+XML log elements: ''[[logging_xml#download|download]]'' (with ''[[#local|local]]'' or ''[[#both|both]]''), ''[[logging_xml#upload|upload]]'' (with ''[[#remote|remote]]'' or ''both''), ''[[logging_xml#mkdir|mkdir]]'', ''[[logging_xml#touch|touch]]'' (with ''remote'' or ''both''), ''[[logging_xml#chmod|chmod]]'' (with ''remote'' or ''both'' and ''[[#permissions|-permissions]]''), ''[[logging_xml#rm|rm]]'' (with ''remote'' and ''[[#delete|-delete]]'')
-===== Examples =====+===== [[examples]] Examples =====
<code winscp> <code winscp>
synchronize both synchronize both
Line 51: Line 52:
Switches mapping: Switches mapping:
^ Switch                  ^ Mapping ^ ^ Switch                  ^ Mapping ^
 +| ''-preview''            | Use [[library_session_comparedirectories|''Session.CompareDirectories'' method]] instead of ''Session.SynchronizeDirectories''. |
| ''-delete''              | Value ''true'' (''$True'' in PowerShell) for method parameter ''removeFiles''. | | ''-delete''              | Value ''true'' (''$True'' in PowerShell) for method parameter ''removeFiles''. |
| ''-mirror''              | Value ''true'' (''$True'') for method parameter ''mirror''. | | ''-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''. \\ [[library_powershell#enums|Enumeration syntax]] in PowerShell is like ''[WinSCP.SynchronizationCriteria]::Time''. |+| ''-criteria''            | Set method parameter ''criteria''. Use ''SynchronizationCriteria.Time'' for ''time'', ''SynchronizationCriteria.Size'' for ''size'', ''SynchronizationCriteria.Checksum'' for ''checksum'' and ''SynchronizationCriteria.None'' for ''none''. \\ [[library_powershell#enums|Enumeration syntax]] in PowerShell is like ''[WinSCP.SynchronizationCriteria]::Time''. |
| ''-permissions'' \\ ''-nopermissions'' \\  ''-transfer'' \\ ''-filemask'' \\ ''-resumesupport'' \\ ''-speed=<kbps>'' | [[library_from_script_transfer_settings|Converting transfer settings scripting switches]] to .NET assembly class ''TransferSettings''. | | ''-permissions'' \\ ''-nopermissions'' \\  ''-transfer'' \\ ''-filemask'' \\ ''-resumesupport'' \\ ''-speed=<kbps>'' | [[library_from_script_transfer_settings|Converting transfer settings scripting switches]] to .NET assembly class ''TransferSettings''. |
-To emulate ''[[scriptcommand_option|option batch abort]]'' mode, call ''[[library_operationresultbase|TransferOperationResult.Check]]'' on method's result. See also [[library_session#results|Capturing results of operations]].+To emulate the ([[scripting#using_scripting|default]]) ''[[scriptcommand_option#batch|option batch abort]]'' mode, call ''[[library_operationresultbase|TransferOperationResult.Check]]'' on method's result. See also [[library_session#results|Capturing results of operations]].
For example, following script snippet: For example, following script snippet:
<code winscp> <code winscp>
-option batch abort 
-... 
synchronize both d:\www /home/martin/public_html synchronize both d:\www /home/martin/public_html
</code> </code>
Line 72: Line 72:
    $session.SynchronizeDirectories(     $session.SynchronizeDirectories(
        [WinSCP.SynchronizationMode]::Both, "d:\www", "/home/martin/public_html", $False)         [WinSCP.SynchronizationMode]::Both, "d:\www", "/home/martin/public_html", $False)
-# Throw on any error to emulate "option batch abort"+# Throw on any error to emulate the (default) "option batch abort" mode
$synchronizationResult.Check() $synchronizationResult.Check()
</code> </code>

Last modified: by martin