Linux传输工具介绍

0    161    1

👉 本文共约3420个字,系统预计阅读时间或需13分钟。

1、常见工具

常见的用于传输文件的工具有scp、ftp、sftp、rsync、nc、wget、bbcp等工具。

不过,经过我的测试,速率最好的还属bbcp,bbcp可以参考:https://www.xmmup.com/biscpgengkuaidechuanshugongjubbcpjieshao.html

若bbcp不能使用,则可以考虑scp和wget比较好使。

2、准备工作

刨除网络带宽等其他因素,我们就 Linux 服务器之间传输文件做个对比,看看到底什么工具才是最快、最适合我的场景。

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

我们就上面这些传输工具在文件实际大小和文件数量多少的层次上分别做个速度和简便性对比:

首先准备环境,配置两个机器ssh互信,创建两个文件夹,以不同的方式创建一个50G左右的大文件和51200个1M的小文件:

小提示:这里采用了两种方式制造大文件,大家可以参考使用,生成文件确实是50G,字节数与之对应,至于为什么du工具计算出来是51G,这里并不是计算机1024与1000的数值换算的原因,而是因为du命令计算的是该文件累计使用到文件系统的总块数,可能出现使用的部分块空间占用并不完整的情况,导致数值偏大。

2.1、测试 SCP

第一个测试的是scp,这是作者使用频率最多的一个远程传输工具,通常Linux系统会安装有该工具。

说明

  • 类似于cp命令,由于跨机器文件加密传输导致其速度稍慢于copy操作;
  • 如果存在生产环境中无法使用ssh协议的情况,可以采用nc 文件传输;
  • 优点:该工具对于机器的系统资源占用少、影响较小,使用方便;

2.2、测试 FTP

下面测一下 ftp,看看效果如何。

说明:

  • 基于TCP 传输协议,ftp客户端发出命令到服务端进行文件下载、上传或者变更目录;
  • 适用于内网的文件归集以及公共文件的调阅。
  • 偶发性的文件传输,为了保障各主机之间的安全性,一般不会使用这种方式进行数据传输。

2.3、测试 SFTP

sftp 就是在 ftp 的基础上补充了 加密/解密 的技术,我们也一起看下和 ftp 的传输速度差异:

说明:

  • 相较于ftp工具,在提升安全等级的基础上对ssh传输进行加密,sftp 的传输速率降低了70%左右;
  • 使用 sftp 和 ftp 的使用需要搭建服务,使用麻烦,且 sftp 的传输速率类似于 scp。

2.4、测试 RSYNC

再看看 rsync 工具的测试:

说明:

  • rsync从比scp稍微快一点,Centos 中默认安装;
  • 占用带宽少,因为 rsync 在两端服务器之间传输数据块时会进行解压缩处理。
  • 优势:rsync 只会同步发生变化的文件,如果没有变更, rsync 不会进行覆盖处理,即 rsync 适合增量同步(由于场景原因,这里没有过多演示);
  • 如果传输文件数量多的时候,rsync 工具可能会导致磁盘的 I/O 偏高,如果文件系统中存在数据库会产生一定影响。

2.5、测试 TFTP

类似于 sftp,测一下tftp的速度怎么样:

说明:

  • tftp 工具是基于UDP协议进行数据传输,同样需要配置相关服务,使用过于麻烦;
  • 测试50G大文件传输仅仅1.8G,发生超时中断,fail,且时间较长;
  • 测试1个1G文件传输时间为354s,推测50倍时间较长,放弃该工具的测试。

2.6、测试NC

小编补充 nc 工具肯定是遇到了上述工具无法完成数据传输的场景,我们测下速度:

说明:

  • 这个工具的功能很是强大,可以实现任意TCP/UDP端口的监听与扫描;
  • 优势:速度相比于 scp 快很多,几乎没有网络协议的开销;
  • 跨机器传输文件只是它的功能之一,其他功能等待大家探索,据说可以网络测速哦。

2.7、测试python和wget工具

如果还有nc无法解决的场景,我们再试下使用 python 的 SimpleHTTPServer 模块吧:

说明:

  • 使用python的 SimpleHTTPServer 模块或者 python3 的 http.server 模块实现了一个轻量级的HTTP协议的Web服务器;
  • Linux发行版本几乎都内置有 python,所以该工具使用也较为方便。
  • 正常情况下,多文件传输有些麻烦,文件名可能无规律,需要单文件挨个处理。

3、总结

测试工具1 * 50G测试时间1M*51200测试时间压缩加密速度
SCP06:17 = 377s20m43.875s = 1243.875s-C 选项支持ssh 协议加密较快
FTP150s14m32.032s = 872.032s
SFTP06:37 = 397s19m43.154s = 1183.154sssh 协议加密较快
RSYNC8m17.039s = 657.039s15m21.548s = 921.548s-z 选项支持ssh 协议加密较快
TFTP10m30.114s test fail
NC2m30.663s = 150.663s11m38.400s = 698.400s
python工具2m 35s = 155 s9m 19s = 559s
  1. 大文件传输速率:FTP > NC > python 工具 > SCP > SFTP > RSYNC 。
  2. 小文件传输速率:python 工具 > NC > FTP > RSYNC > SFTP > SCP 。
  3. 不同工具具有不同的应用场景,RSYNC在增量同步或定期归档的情况下优势很大;FTP工具搭建部署麻烦,适用于内网的文件归集以及公共文件的调阅,安全性低。
  4. 如果由于生产安全限制,关闭了SSH连接或22端口的使用,可以使用基于其他协议的连接访问,推荐nc工具。
  5. 对比每个工具可能同容量的文件数量测试,小文件会导致CPU多次读取匹配信息,增加CPU负担,IO的次数也会增多,存在一定的IO瓶颈,同容量的大文件和多个小文件传输对比会有一定的速度优势。
  6. 如果是大量文件传输,可根据文件名特点分批次设置多个传输进程,从而达到源端服务器并发传输的效果,更好的利用网络带宽。

参考

https://mp.weixin.qq.com/s/M7VcrylYfphKxFEnEbbycQ

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    16 + 1 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部