Linux大文件传输(转)
复制文件
- 压缩数据
- 发送到另外一台机器上
- 数据解压缩
- 校验正确性
使用ZIP+SCP
gzip -c /home/yankay/data | ssh yankay01 "gunzip -c - > /home/yankay/data"
这条命令是将/home/yankay/data经过GZIP压缩,通过ssh传输到yankay01的机器上。
scp -C -c blowfish /home/yankay/data yankay01:/home/yankay/data
这样运行效果是相同的,不通之处在于我使用了blowfish算法作为Scp的密匙算法,使用这个算法可以比默认的情况快很多。单单对与scp,使用了blowfish 吞吐量是62MB/s,不使用只有46MB/s。
性能分析
我们先定义几个变量
- 压缩工具的压缩比是 CompressRadio
- 压缩工具的压缩吞吐是CompressSpeed MB/s
- 网络传输的吞吐是 NetSpeed MB/s
由于使用了管道,管道的性能取决于管道中最慢的部分的性能,所以整体的性能是:
speed=min(NetSpeed/CompressRadio,CompressSpeed)
当压缩吞吐较网络传输慢的时候,压缩是瓶颈;但网络较慢的时候,网络传输/吞吐 是瓶颈。
根据现有的测试数据(纯文本),可以得到表格:
压缩比 | 吞吐量 | 千兆网卡(100MB/s)吞吐量 | 千兆网卡吞吐量,基于ssh(62MB/s) | 百兆网卡(10MB/s)吞吐量 | |
ZLIB | 35.80% | 9.6 | 9.6 | 9.6 | 9.6 |
LZO | 54.40% | 101.7 | 101.7 | 101.7 | 18.38235294 |
LIBLZF | 54.60% | 134.3 | 134.3 | 113.5531136 | 18.31501832 |
QUICKLZ | 54.90% | 183.4 | 182.1493625 | 112.9326047 | 18.21493625 |
FASTLZ | 56.20% | 134.4 | 134.4 | 110.3202847 | 17.79359431 |
SNAPPY | 59.80% | 189 | 167.2240803 | 103.6789298 | 16.72240803 |
NONE | 100% | 300 | 100 | 62 | 10 |
可以看出来。在千兆网卡下,使用QuickLZ作为压缩算法,可以达到最高的性能。如果使用SSH作为数据传输通道,则远远没有达到网卡可以达到的最佳性能。在百兆网卡的情况下,各个算法相近。对比下来QuickLZ是有优势的。
对于不同的数据和不同的机器,可以得出不同的最佳压缩算法。但有一点是肯定的,尽量把瓶颈压在网络上。对于较慢的网络环境,高压缩比的算法会比较有优势;相反对于较快的网络环境,低压缩比的算法会更好。
结论
根据上面的分析结果,我们不能是用SSH作为网络传输通道,可以使用NC这个基本网络工具,提高性能。同时使用qpress作为压缩算法。
scp /usr/bin/qpress yankay01:/usr/bin/qpress ssh yankay01 "nc -l 12345 | qpress -dio > /home/yankay/data" & qpress -o /home/yankay/data |nc yankay01 12345
第一行是将gpress安装到远程机器上,第二行在远程机器上使用nc监听一个端口,第三行压缩并传送数据。
执行上面的命令需要2.8s。平均吞吐量为402MB/s,比使用Gzip+Scp快了16倍!!
根据上文的公式,和自己的数据,可以绘出上面的表格,就可以选择出最适合的压缩算法和传输方式。达到满意的效果。如果是一个长期运行的脚本的话,这么做是值得的。
Linux大文件传输(转)相关推荐
- linux 传输大文件大小,Linux大文件传输(转)
我们经常需要在机器之间传输文件.比如备份,复制数据等等.这个是很常见,也是很简单的.用scp或者rsync就能很好的完成任务.但是如果文件很大,需要占用一些传输时间的时候,怎样又快又好地完成任务就很重 ...
- Linux大文件传输工具分享
sync--一个跨平台的文件传输工具,多用于Linux系统,下面也只介绍Linux上的应用. 这是我在远程传输大文件时找到的最有效便捷的"可断点重传"的工具,最大的优势就是可断点重 ...
- Linux、Windows都适用的跨国传输、大文件传输软件:飞驰传输
随着"走出去"战略的实施,中国越来越多的企业走向国外,跨国企业将是大的潮流和趋势.跨国企业的分支机构遍及全球各地,员工来自多个国家,使用不同的语言.由于各地IT基础设施建设水平和使 ...
- 大文件传输软件的优势有哪些?-镭速传输
互联网时代,大数据传输是企业面临的必不可免的问题,可以选择传统的FTP.网盘等方式来传输,对于小型文件或许是有优势的:但是对于大型文件数据的话,也许会出现传输速度慢,数据不可靠的情况,极大的影响了企业 ...
- 基于TCP的大文件传输c语言项目
文章目录 前言:功能实现 tcp文件传输的基本过程: 1.用户登录 1.1创建数据库 2.文件普通下载和上传的实现: 2.1 普通下载 2.2 普通上传 2.3 文件秒上传的实现 2.断点下载和断点上 ...
- c++ udp多线程 例子_[内附完整源码和文档] 基于udp实现tcp功能进行大文件传输
一.项目要求 Please choose one of following programing languages: C, C++, Java, Python; 本项目采用的是python3.6 L ...
- 邮箱附件、QQ、微信等社交工具大文件传输解决方案
工具说明:适用于邮箱附件.QQ.微信.钉钉.网盘等场景的大文件分割存储和传输. 下载地址:https://download.csdn.net/download/hj960511/85012515 作者 ...
- java rmi 文件传输_JAVA-RMI实现大文件传输
在使用java-rmi的过程中,必然会遇到一个文件上传的问题,由于在rmi中无法传输文件流(比如rmi中的方法参数不能是FileInputStream之类的),那么我们只好选择一种折中的办法,就是先用 ...
- window 与 linux 之间文件传输
window 与 linux 之间文件传输 linux 上安装工具 安装命令:yum install lrzsz 1.linux to windows sz filename 2.windows to ...
最新文章
- Effective java 43返回零长度的数组或者集合而不是null
- 美军称五角大楼遭网络袭击 2.4万份敏感文件被盗
- source insight(SI)C/C++符号标记含义
- tf.train.exponential_decay
- python数据展示平台_Python获取各大地图平台经纬度数据,哪家的数据最准确?
- 【jQuery】手机验证码倒计时效果
- android web3j 代币查询_Android通过web3j以太坊智能合约交互
- PaperNotes(15)-图神经网络、PyG极简版入门笔记
- python使用md5加密_如何使用Python创建自己的加密货币
- windows下ping命令的结果前加上系统的当前时间
- 360解压电脑版安装包_鲁大师电脑版2020下载-鲁大师pc版安装包exe下载v6.1020.3005.1020 官方最新版...
- 如何在Visual Studio 2012中撤消“范围到此”?
- Hue中Sqoop导数报错Could not load db driver class: com.mysql.jdbc.Driver
- 二次量子化与量子计算化学
- uniapp app 腾讯云 IM 通讯 UserSig 加密协议方案
- android 触摸接口,Android 多点触摸接口
- 使照片带有妙的电影色彩55款工具套件的lr微妙的电影调色预设
- linux下搜索文件名,Linux系统中怎么搜索文件命令大全
- 1 软件需求的本质(1)
- 从开发者的角度比较Kubernetes和Cloud Foundry
热门文章
- windows开启ssh当跳板机
- 天津理工大学c语言实验2答案,天津理工大学-c语言上机报告2.doc
- php判断邮箱是否合法性,php验证邮箱地址合法性
- 透过源码详解Spring Security 初始化流程
- Elasticsearch之分词
- iOS 开发 高级:使用 宏定义macros (#,##,...,__VA_ARGS_)
- python中的turtle函数_1.常用turtle功能函数
- matlab 二阶非线性微分方程组,二阶非线性常微分方程的打靶法matlab实现.doc
- 计算机安装两个键盘会怎样,外设门诊:一个键盘能否连接两个接收器?
- c++ 构造函数析构函数 数据安全_C++知识点 16:构造函数和析构函数的语法