linux 传输大文件大小,Linux大文件传输(转)
我們經(jīng)常需要在機(jī)器之間傳輸文件。比如備份,復(fù)制數(shù)據(jù)等等。這個(gè)是很常見(jiàn),也是很簡(jiǎn)單的。用scp或者rsync就能很好的完成任務(wù)。但是如果文件很大,需要占用一些傳輸時(shí)間的時(shí)候,怎樣又快又好地完成任務(wù)就很重要了。在我的測(cè)試用例中,一個(gè)最佳的方案比最差的方案,性能提高了10倍。
復(fù)制文件
如果我們是復(fù)制一個(gè)未壓縮的文件。這里走如下步驟:
壓縮數(shù)據(jù)
發(fā)送到另外一臺(tái)機(jī)器上
數(shù)據(jù)解壓縮
校驗(yàn)正確性
這樣做會(huì)很有效率,數(shù)據(jù)壓縮后可以更有效的利用帶寬
使用ZIP+SCP
我們可以通過(guò)ZIP+SCP的組合實(shí)現(xiàn)這個(gè)功能。
gzip -c /home/yankay/data | ssh yankay01 "gunzip -c - > /home/yankay/data"
這條命令是將/home/yankay/data經(jīng)過(guò)GZIP壓縮,通過(guò)ssh傳輸?shù)統(tǒng)ankay01的機(jī)器上。
data文件的大小是1.1GB,經(jīng)過(guò)Zip壓縮后是183MB,執(zhí)行上面的命令需要45.6s。平均吞吐量為24.7MB/s
我們會(huì)發(fā)現(xiàn)Scp也有壓縮功能,所以上面的語(yǔ)句可以寫(xiě)成
scp -C -c blowfish /home/yankay/data yankay01:/home/yankay/data
這樣運(yùn)行效果是相同的,不通之處在于我使用了blowfish算法作為Scp的密匙算法,使用這個(gè)算法可以比默認(rèn)的情況快很多。單單對(duì)與scp,使用了blowfish 吞吐量是62MB/s,不使用只有46MB/s。
可是我執(zhí)行上面一條命令的時(shí)候,發(fā)現(xiàn)還是需要45s。平均吞吐量還為24MB/s。沒(méi)有絲毫的提升,可見(jiàn)瓶頸不在網(wǎng)絡(luò)上。
那瓶頸在哪里呢?
性能分析
我們先定義幾個(gè)變量
壓縮工具的壓縮比是 CompressRadio
壓縮工具的壓縮吞吐是CompressSpeed MB/s
網(wǎng)絡(luò)傳輸?shù)耐掏率?NetSpeed MB/s
由于使用了管道,管道的性能取決于管道中最慢的部分的性能,所以整體的性能是:
speed=min(NetSpeed/CompressRadio,CompressSpeed)
當(dāng)壓縮吞吐較網(wǎng)絡(luò)傳輸慢的時(shí)候,壓縮是瓶頸;但網(wǎng)絡(luò)較慢的時(shí)候,網(wǎng)絡(luò)傳輸/吞吐 是瓶頸。
根據(jù)現(xiàn)有的測(cè)試數(shù)據(jù)(純文本),可以得到表格:
壓縮比
吞吐量
千兆網(wǎng)卡(100MB/s)吞吐量
千兆網(wǎng)卡吞吐量,基于ssh(62MB/s)
百兆網(wǎng)卡(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
可以看出來(lái)。在千兆網(wǎng)卡下,使用QuickLZ作為壓縮算法,可以達(dá)到最高的性能。如果使用SSH作為數(shù)據(jù)傳輸通道,則遠(yuǎn)遠(yuǎn)沒(méi)有達(dá)到網(wǎng)卡可以達(dá)到的最佳性能。在百兆網(wǎng)卡的情況下,各個(gè)算法相近。對(duì)比下來(lái)QuickLZ是有優(yōu)勢(shì)的。
對(duì)于不同的數(shù)據(jù)和不同的機(jī)器,可以得出不同的最佳壓縮算法。但有一點(diǎn)是肯定的,盡量把瓶頸壓在網(wǎng)絡(luò)上。對(duì)于較慢的網(wǎng)絡(luò)環(huán)境,高壓縮比的算法會(huì)比較有優(yōu)勢(shì);相反對(duì)于較快的網(wǎng)絡(luò)環(huán)境,低壓縮比的算法會(huì)更好。
結(jié)論
根據(jù)上面的分析結(jié)果,我們不能是用SSH作為網(wǎng)絡(luò)傳輸通道,可以使用NC這個(gè)基本網(wǎng)絡(luò)工具,提高性能。同時(shí)使用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安裝到遠(yuǎn)程機(jī)器上,第二行在遠(yuǎn)程機(jī)器上使用nc監(jiān)聽(tīng)一個(gè)端口,第三行壓縮并傳送數(shù)據(jù)。
執(zhí)行上面的命令需要2.8s。平均吞吐量為402MB/s,比使用Gzip+Scp快了16倍!!
根據(jù)上文的公式,和自己的數(shù)據(jù),可以繪出上面的表格,就可以選擇出最適合的壓縮算法和傳輸方式。達(dá)到滿(mǎn)意的效果。如果是一個(gè)長(zhǎng)期運(yùn)行的腳本的話(huà),這么做是值得的。
linux大文件傳輸
Mysql復(fù)制,初始化服務(wù)器,備份/還原等大文件復(fù)制是很常見(jiàn)的任務(wù),他們完成的實(shí)際任務(wù)可以概括為: 1,(可選)壓縮文件 2,發(fā)送文件 3,解壓文件 4,驗(yàn)證文件一致性 下面介紹幾種方法: 1,最簡(jiǎn)單 ...
WCF大文件傳輸服務(wù)
由于項(xiàng)目需要,自己寫(xiě)一個(gè)基于WCF的大文件傳輸服務(wù)雛形.覺(jué)得有一定的參考價(jià)值,因此放在網(wǎng)上分享. 目前版本為v1.1特點(diǎn)如下: 1.文件傳輸端口為18650 2.上傳和下載文件 3.支持獲取文件傳輸狀 ...
轉(zhuǎn):wcf大文件傳輸解決之道(2)
此篇文章主要是基于http協(xié)議應(yīng)用于大文件傳輸中的應(yīng)用,現(xiàn)在我們先解析下wcf中編碼器的定義,編碼器實(shí)現(xiàn)了類(lèi)的編碼,并負(fù)責(zé)將Message內(nèi)存中消息轉(zhuǎn)變?yōu)榫W(wǎng)絡(luò)發(fā)送的字節(jié)流或者字節(jié)緩沖區(qū)(對(duì)于發(fā)送方而言 ...
轉(zhuǎn):wcf大文件傳輸解決之道(1)
首先聲明,文章思路源于MSDN中徐長(zhǎng)龍老師的課程整理,加上自己的一些心得體會(huì),先總結(jié)如下: 在應(yīng)對(duì)與大文件傳輸?shù)那闆r下,因?yàn)閣cf默認(rèn)采用的是緩存加載對(duì)象,也就是說(shuō)將文件包一次性接受至緩存中,然后生成 ...
Linux大文件分割splite
/********************************************************************** * Linux大文件分割splite * 說(shuō)明: * 編 ...
WCF大文件傳輸【轉(zhuǎn)】
http://www.cnblogs.com/happygx/archive/2013/10/29/3393973.html WCF大文件傳輸 WCF傳輸文件的時(shí)候可以設(shè)置每次文件的傳輸大小,如果是小 ...
利用Socket進(jìn)行大文件傳輸
分類(lèi): WINDOWS 最近接觸到利用socket進(jìn)行大文件傳輸?shù)募夹g(shù),有些心得,與大家分享.首先看看這個(gè)過(guò)程是怎么進(jìn)行的(如下圖):??? ? 所以,我們需要三個(gè)socket在窗體加載的時(shí)候初始化: ...
AetherUpload大文件傳輸
AetherUpload-Laravel是laravel框架下的一個(gè)大文件傳輸組件 github:https://github.com/peinhu/AetherUpload-Laravel 文件傳輸 ...
Linux命令-文件傳輸
Linux命令-文件傳輸 Linux lprm命令 Linux lprm命令用于將一個(gè)工作由打印機(jī)貯列中移除 尚未完成的打印機(jī)工作會(huì)被放在打印機(jī)貯列之中,這個(gè)命令可用來(lái)將常未送到打印機(jī)的工作取消.由于 ...
隨機(jī)推薦
SharePoint 2013 SP1發(fā)布了
好消息,SharePoint 2013 SP1終于發(fā)布了: SP1說(shuō)明:http://support.microsoft.com/kb/2880552 下載頁(yè)面:http://www.microsof ...
poj 1088 dp **
鏈接:點(diǎn)我 記憶化搜索很好寫(xiě) #include #include #include #include< ...
Eclipse搭建Android5.0應(yīng)用開(kāi)發(fā)環(huán)境 “ndk-build”:launchingfailed問(wèn)題解決
Eclipse搭建Android5.0應(yīng)用開(kāi)發(fā)環(huán)境 "ndk-build":launchingfailed問(wèn)題解決 詳細(xì)參考http://blog.csdn.net/loongem ...
64位Win10系統(tǒng)安裝Mysql5.7.11
最近在裝了64位Win10系統(tǒng)的mac book筆記本上用mysql-installer-community-5.7.11.0安裝Mysql5.7.11,在配置mysql server時(shí)老是卡住,報(bào)錯(cuò) ...
ES6 Module export與import復(fù)合使用
export與import復(fù)合使用 基本語(yǔ)法 export {...} from '文件'; 等價(jià)于 import {...} from "文件": export {...} 先加 ...
全局Ajax加載時(shí)呈現(xiàn)Loading
全局設(shè)置: 1 2 3 4 5 $(document).bind("ajaxSend",?function?() { ????????$("#loading_messag ...
如何在eclipse中對(duì)項(xiàng)目進(jìn)行重新編譯
有時(shí)由于eclipse異常關(guān)閉,當(dāng)我們重啟Eclipse,在啟動(dòng)項(xiàng)目時(shí),會(huì)報(bào)錯(cuò),說(shuō):ClassNotFound類(lèi)似的錯(cuò)誤,引起這種問(wèn)題的原因可能是由于,Eclipse異常關(guān)閉引起的. 解決:在一個(gè)項(xiàng)目 ...
BZOJ 4765 普通計(jì)算姬 (分塊 + BIT)
4765: 普通計(jì)算姬 Time Limit:?30 Sec??Memory Limit:?256 MBSubmit:?1547??Solved:?329[Submit][Status][Discus ...
CentOS 6.9 下安裝DB2
操作系統(tǒng):CentOS6.9_x64 DB2安裝文件: db2_v101_linuxx64_expc.tar.gz 安裝數(shù)據(jù)庫(kù) tar zxvf db2_v101_linuxx64_expc.tar. ...
總結(jié)
以上是生活随笔為你收集整理的linux 传输大文件大小,Linux大文件传输(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 阿里校招在线编程题
- 下一篇: linux 其他常用命令