linux平台上各种文件传输工具比较

除了已知的ftp/sftp/scp/rcp/wget这些数据传输工具,还有rsync/lftp/curl更为加强大的传输工具

传输速度

因为经常在服务器见进行文件传输,就对传输速度和带宽有要求,这里总结一下可以影响以上rcp,scp,rsync,ftp,sftp,lftp,wget,curl这6个命令的传输速度和带宽的参数:

(1)    rcp:没有参数可以调整带宽和传输速度

(2)    scp:如果传输的文件没有压缩,可以使用-C参数(-C 使能压缩选项)。-c 选择使用那个加密算法,具体对应到ssh的-c cipher-spec,这个参数值会被传给ssh,可选择值3des,blowfish,des),使用blowfish会快很多,可以参看man ssh 中的-c cipher-spec。可以使用-l 限制使用带宽,Kbit/s。避免因为传输文件而影响其他程序使用带宽。-o ssh_option使用ssh选项

(3)    rsync:-B, –block-size=SIZE 检验算法使用的块尺寸,默认是700字节;-z, –compress 对备份的文件在传输时进行压缩处理;–bwlimit=KBPS 限制I/O带宽,KBytes per second ;-e, –rsh=COMMAND 指定使用rsh、ssh方式进行数据同步

(4)    ftp:FTP>ascii 将文档传送类型配置为默认的 ASCII。说明:linux ftp命令参数支持两种文档传送类型,ASCII 码和二进制图像,在传送文本文档时应该使用ASCII。Binary二进制传输。

(5)    sftp: -B buffer_size, -C使用压缩,-ossh_option使用ssh选项

(6)    lftp:可以调整进程数等

(7)    wget: –limit-rate=amount限制带宽。

(8)    curl:-B/–use-ascii和–ciphers<list of ciphers>,–compressed等。

总结

(1)      传输性能:wget 通过支持后台执行及断点续传提高文件传输效率; rsync 则以其高效的传输及压缩算法达到快传输的目的。

(2)       配置难度:rcp 只需进行简单的配置,创建.rhost文件以及设置/etc/hosts文件中主机名与IP地址列表; wget设置方便简单,只需在客户端指定参数执行命令即可; rsync 在使用前需要对服务端/etc/rsyncd.conf 进行参数设定,配置内容相对复杂。

(3)      安全性能:ftp、rcp不保证传输的安全性,scp、rsync则均可基于ssh 认证进行传输,提供了较强的安全保障。wget 也可通过指定安全协议做到安全传输。

 

通过上述的对比不难发现,每种文件传输方法基于其自身的特点与优势均有其典型的适用场景:

(1)      ftp 作为最常用的入门式的文件传输方法,使用简单,易于理解,并且可以实现脚本自动化;但是需要安装ftp server才可以访问远程ftp server

(2)      rcp 相对于ftp可以保留文件属性并可递归的拷贝子目录;

(3)      scp 利用ssh传输数据,并使用与ssh相同的认证模式,相对于rcp提供更强的安全保障;

(4)      wget实现递归下载,可跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,适合实现远程网站的镜像;

(5)      curl 则适合用来进行自动的文件传输或操作序列,是一个很好的模拟用户在网页浏览器上的行为的工具;

(6)      rsync 更适用于大数据量的每日同步,拷贝的速度很快,相对wget来说速度快且安全高效。

(7)      sftp使用在数据连接上使用ssh2,所以文件的传输是尽可能地安全。但传输速度慢。是ftp的替代品,比ftp安全,不能访问http资源。

(8)      lftp可以访问ftp资源,也可以访问http资源。支持断点续传,多进程下载。

发表评论