sftp传输⼤⽂件⼤⼩_SCPvsSFTP:应该选择哪⼀个进⾏⽂件
传输呢?
SCP vs SFTP: 应该选择哪⼀个进⾏⽂件传输呢?
SCP (Secure Copy Protocol) 和 SFTP (Secure File Transfer Protocol) 都是 FTP (File Transfer Protocol) 的变体,三者都是⽤来完成⽂件拷贝的⼯作,通过⽹络将⼀台主机上的⽂件拷贝到另外⼀个主机上。然⽽, FTP 是以明⽂的形式发送数据,数据未经过加密, 缺乏安全性,SCP 和 SFTP 则是通过SSH (Secure
Shell) 来进⾏通信,对数据进⾏了加密处理,更加安全。
SCP 和 SFTP 是什么呢?
SCP (Secure Copy Protocol),安全拷贝协议
SCP是⼀个⾮交互式的⽂件传输协议,借助ssh操作来安全地将⽂件在两台计算机之前进⾏传输,SCP是之前RCP的安全增强版。FTP呢也将ssh操作引⼊进来,形成了⾃⼰的安全增强版本SFTP。虽然从覆盖的功能来看,SFTP的能⼒⽐SCP更多,但是在通过脚本来进⾏⽂件传输时,SCP通常是⼀个更常⽤的选择。
SCP可以将本地主机的⽂件拷贝到远程主机,也可以从远程主机拷贝⽂件到本地。SCP其实是将待拷贝⽂件的数据以字节流的形式写⼊到ssh隧道中,ssh隧道负责将数据送达远程⽬的主机或者本地⽬的主机。⽽ssh呢还可以负责完成完整性校验、数据压缩等更加负责的处理。
SCP can be used with wildcard statements as well when transferring multiple files based on your selected criteria. These wildcards can also be used to send and receive files.
SCP再传输⽂件的时候可以使⽤shell的通配符来匹配多个⽂件。
SCP可以在本地主机和远程主机之间互相拷贝⽂件,也可以在远程两台主机之间拷贝⽂件。
Related: Transfer Files Securely Using SCP in Linux
SFTP (Secure File Transfer Protocol),安全⽂件传输协议
SCP是⾮交互式的,⽽SFTP是交互式的,SFTP可以在在⼀个ssh加密后的控制信道中传输多种操作命令。
SFTP有⼏个特⾊,如⽀持数据压缩、公钥认证,允许连接和登录特定的主机,并交互式地输⼊控制命令执⾏对应操作。
大文件发送SFTP 容易让⼈联想到 Simple File Transfer Protocol 或者 SSH File Transfer Protocol,后者是设计⽤来和ssh协作实现安全⽂件传输,前者是⼀个轻量级的ftp实现,构建在tftp之上,运⾏在端⼝115上,已废弃。
SFTP如果使⽤了⾮交互式认证⽅式的话,也可以⾃动接收⽂件(从远程拷贝到本地),如果使⽤了交互式认证的话,认证成功后才可以接收⽂件。
While it works with many protocols, SFTP commonly uses SSH for secure authentication.
尽管SFTP⽀持多种协议认证,但是最常⽤的还是使⽤SSH来进⾏相关的认证。
Note: SFTP并不是⼀个构建在SSH之上的协议,它是⼀个新协议(内置了SSH的能⼒)。
Related: How to Use SFTP to Transfer Files to/from Linux Servers
SCP 和 SFTP 之间的区别
SCP和SFTP之间存在⼀些相似性,如都是⽤tcp端⼝22,都运⾏ssh协议来保证安全性。
它们也都⽀持数据加密、公钥认证,另外,也都⽀持⼤⽂件的传输,因为它们都没有⽂件⼤⼩限制。
⼆者最主要的不同,还是它们的设计⽬标和实际功能。
功能不同
SCP主要关注数据传输过程中避免数据被拦截、窃取,SFTP呢主要是关注与访问数据、传输数据、管理数据。
SCP的设计,不难看出其更适合于那种⽹络主机上⼀次性的⽂件传输场景,⽽SFTP除了⽂件传输还有⽀持⼀些管理数据的能⼒,如查看⽂件列表、删除⽂件等。
操作不同
SCP不能执⾏查看⽬录⽂件列表、删除⽂件的操作,只能传输⽂件,但是SFTP可以。
SFTP提供了⼀个GUI⼯具来执⾏远程⽂件管理,更像是⼀个远程⽂件系统,SCP并不提供类似能⼒。
⽂件传输速率
SCP⽐SFTP区分接收到的数据分组更加⾼效,SFTP需要对每个很⼩的包进⾏确认,这在⾼负载⽹络环境下性能影响⽐较突出。
SCP的其他优势还包括,它采⽤了⼀个更加⾼效的⽂件传输算法。
⽂件传输中断后的恢复
SCP不⽀持⽂件传输中断后再恢复,SFTP⽀持。
命令⾏
SCP是⾮交互式的,不能够读取⽤户命令,要拷贝的⽂件这些都要事先写好。SFTP呢,是交互型的,它可以随时键⼊操作命令,或者从其他⽂件读取命令。
到底应该选择哪个进⾏⽂件传输呢?SCP 还是 SFTP?
SCP和SFTP有相似性,也有不同,说哪⼀个⽐哪⼀个更优是很⽚⾯的做法,在传输安全性⽅⾯,它们最终的效果都类似于跑在加密后的ssh隧道中传输数据,安全特征是类似的。实际选择哪个⼯具进⾏⽂件传输,还是要结合⾃⼰的场景、环境来决定:传播速度的要求、操作功能的要求、安全性要求等。