Differences

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

2006-11-26 2007-04-03
no summary (68.108.197.159) 4.0 ftp, partly remade (martin)
Line 1: Line 1:
====== Supported Transfer Protocols ====== ====== Supported Transfer Protocols ======
-As of version 3.0, WinSCP supports two secure transfer protocols, SFTP and SCP. Currently, many SSH servers support both protocols. Both have advantages and disadvantages; this document contains a comparison to help you to decide which is most appropriate for your needs. The comparison describes features that are characteristic to the specific protocol as-is, and features that are caused by the implementation of the protocol in WinSCP.+As of version 4.0, WinSCP supports three transfer protocols, SFTP, FTP and SCP. Currently, many servers support all three protocols. All have its advantages and disadvantages, while FTP have one big disadvantage, being insecure. This document contains a comparison to help you to decide which is most appropriate for your needs. The comparison describes features that are characteristic to the specific protocol as-is, and features that are caused by the implementation of the protocol in WinSCP.
The default mode of operation is to use SFTP and fall back to SCP. Select your preferred protocol on [[ui_login_session#protocol_group|Login dialog]]. The default mode of operation is to use SFTP and fall back to SCP. Select your preferred protocol on [[ui_login_session#protocol_group|Login dialog]].
-===== [[scp]] SCP (Secure Copy Protocol) =====· +===== [[sftp]] SFTP (SSH File Transfer Protocol) ===== 
-SCP is mostly used with SSH-1. SCP is an older protocol but almost universally supported on Unix-like platforms as part of an SSH protocol suite. It is rarely supported on other platforms. SCP is a descendant of the ancient "rcp." +Despite SSH in its name, it is designed to work over any reliable data stream, but WinSCP supports only operation over SSH, which is also by far its most common usage.
-The SCP protocol allows only file transfers in both directions. WinSCP is able to offer other features, implemented using common shell commands like ''cd'', ''ls'', ''pwd'', ''rm'', ''ln'', etc. For this, WinSCP---unlike command-line SCP clients (which allow only file transfers)---requires full shell access and permission to execute other commands in addition to ''scp'' (see [[requirements]]). For access to non-UNIX servers it is necessary that the server have at least a UNIX-like shell.+Being operated over SSH, it is secure protocol. In its basic functionally it is similar to old FTP, while having better designed advanced functionality. Unfortunately not all SFTP server implementation takes advantage of the advanced features, yet.
-===== [[sftp]] SFTP (SSH File Transfer Protocol) =====+Especially in its later versions (from 4 upwards), it is more platform independent, compared to both FTP and SCP.
-SFTP is mostly operated as subsystem of SSH-2. SFTP is a +Unlike SCP, for connection with an SFTP server you do not need access to shell (although some implementations may still require that).
-newer and more modern protocol, designed to perform in a manner similar to FTP. It is widely supported, even on non-Unix-like platforms, but not nearly as universally as SCP.  Do not confuse SFTP  (based on SSH) with FTPS/Secure FTP (based on SSL); they are distinct protocols which do not interoperate.+
-WinSCP supports SFTP version 0 (since 3.4), version 1 (since 3.4), version 2 (since 3.1), [[&sftp3|version 3]] (since 3.0 beta), [[&sftp4|version 4]] (since 3.2) and [[&sftp5|version 5]] (since 3.6.7). Support for version 5 is experimental as no server supporting the version is known, and it currently does not bring any new functionality. +===== [[scp]] SCP (Secure Copy Protocol) =====  
 +SCP is mostly used with SSH-1. SCP is an older protocol but almost universally supported on Unix-like platforms as part of an SSH protocol suite. It is rarely supported on other platforms. SCP is a descendant of the ancient "rcp."  
 + 
 +The SCP protocol allows only file transfers in both directions. WinSCP is able to offer other features, implemented using common shell commands like ''cd'', ''ls'', ''pwd'', ''rm'', ''ln'', etc. For this, WinSCP---unlike command-line SCP clients (which allow only file transfers)---requires full shell access and permission to execute other commands in addition to ''scp'' (see [[requirements]]). For access to non-UNIX servers it is necessary that the server have at least a UNIX-like shell.
-Unlike SCP, for connection with an SFTP server you do not need access to shell. Thus it is more independent of the remote operating system.···+===== [[ftp]] FTP (File Transfer Protocol) ===== 
 +FTP, being the oldest of the three, is most widespread transfer protocol of nowadays. It is inherently insecure, sending all data (including passwords) unencrypted. Although there exists secure variants (FTP over SSL), they are not supported by WinSCP. Functionally it is inferior to SFTP. Also it is less platform independent than later versions of SFTP, mainly in respect to directory listing.
===== Protocol Comparison ===== ===== Protocol Comparison =====
Line 22: Line 25:
The list below shows only those features which differ between the protocols, so it is not complete listing. The list below shows only those features which differ between the protocols, so it is not complete listing.
-^ Feature ^ SCP ^ SFTP+^ Feature ^ SFTP ^ FTP ^ SCP
-^ Speed  | Transfers are faster in general. This protocol does not use packet confirmation, yet it causes some serious problems. | Transfers are slower in general due to necessity to wait for packet confirmations. In versions 3.7.2 and 3.4 several optimizations were introduced that greatly reduce the disadvantage over SCP. | +^ Speed  | Generally slowest (encryption and necessity to wait for packet confirmations). | Generally fastest file transfer (no encryption and efficient file transfer), yet transfer setup is slow, so transfer of large number of small files can be slow. | Medium (encryption, but efficient file transfer, yet it does not allow the transfer to be interrupted). | 
-^ [[resume|Transfer resume]] | Unsupported. | Supported. WinSCP supports resuming only since protocol version 2 (which introduces rename command). By default it resumes transfers for files larger than 100 kB only, since the overhead is excessive for smaller files. It is possible to change the threshold in Preferences. | +^ [[resume|Transfer resume]] | Supported. WinSCP supports resuming only since SFTP-2 (which introduces rename command). | Supported. | Unsupported. |· 
-^ Large files | Does not support files over 4 GB (32-bit boundary). | Supports files over 4 GB (uses 64-bit sizes). | +^ Large files | Supports files over 4 GB (uses 64-bit sizes). | Supports files over 4 GB. | Does not support files over 4 GB (32-bit boundary). | 
-^ Append to end of file | Unsupported. | Supported. | +^ Append to end of file | Supported. | Unsupported. | Unsupported. | 
-^ [[ui_progress#controlling_the_operation|Transfer cancellation]] | Transfer cannot be canceled without termination of session. | It is possible to cancel transfer and continue with work. | +^ [[ui_progress#controlling_the_operation|Transfer cancellation]] | Supported. | Supported, but can be time-consuming. | Transfer cannot be canceled without termination of session. | 
-^ Text (ASCII) [[transfer_mode|transfer mode]] | Not supported by the protocol. WinSCP emulates text mode by converting file before transfer. It is necessary to configure [[ui_login_environment#server_eol_characters|line-ending sequence]]. | Supported by protocol since version 4. For older versions WinSCP emulates text mode by converting files before transfer. It is necessary to configure [[ui_login_environment#server_eol_characters|line-ending sequence]]. | +^ Text (ASCII) [[transfer_mode|transfer mode]] | Supported since SFTP-4. For older versions WinSCP emulates text mode by converting files before transfer. | Supported. | Not supported by the protocol. WinSCP emulates text mode by converting file before transfer.
-^ Directory operations | Recursive operations with directories (deletion, permissions change), can be done with a single command (''rm'', ''chmod'', etc). Thus they are quick. On the other hand it limits some functionality. | Recursive operations with directories (deletion, permissions change) must be performed separately for each file. Thus operations can take a long time, especially for directories with a large number of files. | +^ Directory operations | Recursive operations with directories (deletion, permissions change) must be performed separately for each file. Thus operations can take a long time, especially for directories with a large number of files. || Recursive operations with directories (deletion, permissions change), can be done with a single command (''rm'', ''chmod'', etc). Thus they are quick. On the other hand it limits some functionality. | 
-^ [[task_rename|File renaming]] and [[task_move_duplicate#moving_remote_files|moving]] | Supported (''mv''). | Supported since version 2 of the protocol. | +^ [[task_rename|File renaming]] and [[task_move_duplicate#moving_remote_files|moving]] | Supported since SFTP-2. | Supported. | Supported (''mv''). | 
-^ [[task_move_duplicate#duplicating_remote_files|File duplication]] | Supported (''cp''). | Unsupported by the protocol. WinSCP can open a [[shell_session|separate shell session]] to execute the command. | +^ [[task_move_duplicate#duplicating_remote_files|File duplication]] | Unsupported by the protocol. WinSCP can open a [[shell_session|separate shell session]] to execute the command. | Unsupported. | Supported (''cp''). | 
-^ [[remote_command|Execution of arbitrary command]] | Supported as long as the command does not require user input. For example it is not possible to execute ''su root''. | Unsupported by the protocol. WinSCP can open a [[shell_session|separate shell session]] to execute the command. | +^ [[remote_command|Execution of arbitrary command]] | Unsupported by the protocol. WinSCP can open a [[shell_session|separate shell session]] to execute the command. | Unsupported. WinSCP allows user to execute arbitrary protocol command. | Supported as long as the command does not require user input. | 
-^ [[task_properties|Owner or group change]] | Supported (''chown'', ''chgrp''). | In version 2 and 3 of SFTP protocol, the owner and group can be changed only with knowledge of UID/GID (unsupported by WinSCP). Version 4 allows even change using user or group name. | +^ [[task_properties|Owner or group change]] | In SFTP-2 and SFTP-3, the owner and group can be changed only with knowledge of UID/GID (unsupported by WinSCP). Since SFTP-4 even change using user or group name is allowed. | Unsupported. | Supported (''chown'', ''chgrp''). | 
-^ [[task_link|Link creation]] | It is possible to create both symbolic and hard links (''ln''). Symbolic links can be edited also. | It is possible to create and edit symbolic links since version 3. Hard links are supported only since version 6 of the protocol (unsupported by WinSCP). | +^ [[task_link|Link creation]] | It is possible to create and edit symbolic links since SFTP-3. Hard links are supported only since SFTP-6 (unsupported by WinSCP). | Unsupported. | It is possible to create both symbolic and hard links (''ln''). Symbolic links can be edited also. | 
-^ User group list lookup | Supported (''groups''). | Unsupported. | +^ User group list lookup | Unsupported. | Unsupported. | Supported (''groups''). | 
-^ Influence of environment variables | As WinSCP uses shell, it is influenced by environment variables (date format, etc.). WinSCP requires the English environment. See [[requirements]]. | Generally unaffected by environment variables. | +^ Influence of environment variables | Generally unaffected by environment variables. || As WinSCP uses shell, it is influenced by environment variables (date format, etc.). WinSCP requires the English environment. See [[requirements]]. | 
-^ File modification [[timestamp|time-stamp]] | Some shell commands are influenced by daylight-saving time. For example, the ''ls'' command can return a different time than ''scp''. Thus, after transfer, the time-stamp of the file can be different. Also there can be an additional difference caused by the server timezone offset. This causes trouble when comparing directories and [[task_synchronize|synchronization]]. | Theoretically the problem does not occur, as the protocol requires timestamps to be in UTC. Practically some of the SFTP servers have problems with DST. | +^ File modification [[timestamp|time-stamp]] | Theoretically the problem does not occur, as the protocol requires timestamps to be in UTC. Practically some of the SFTP servers have problems with DST. | | Some shell commands are influenced by daylight-saving time. For example, the ''ls'' command can return a different time than ''scp''. Thus, after transfer, the time-stamp of the file can be different. Also there can be an additional difference caused by the server timezone offset. This causes trouble when comparing directories and [[task_synchronize|synchronization]]. | 
-^ [[ui_login|Configuration]] | For a successful connection to a server it is often necessary to properly set up several configuration options on the [[ui_login_scp|Login dialog]]. | Generally, only login information is needed. |+^ [[ui_login|Configuration]] | Generally, only login information is needed. || For a successful connection to a server it is often necessary to properly set up several configuration options on the [[ui_login_scp|Login dialog]]. |

Last modified: by martin