linux下快速拷貝大文件


拷貝數據

遠程拷貝數據的時候,我們一般使用rsync命令,但是如果拷貝大量的小文件,會導致rsync的傳輸速度慢。使用tar pv lz4打包壓縮傳輸,可以解決這問題,使用這個方法,等同於使用scp、rsync傳輸大文件。
實測,使用rsync傳輸1200G,單個文件大小為幾十KB~2GB,千兆網卡,需要同時跑6個rsync才能把帶寬跑滿,每個速度20MB左右,速度波動大。每分鍾可以拷貝4.5GB左右。
但是,使用tar pv lz4,跑一個就可以了,而且速度波動小。每分鍾可以拷貝6.8GB左右。

rsync使用例子

rsync安裝:yum install -y rsync

# 推送
[root@vm5 ~]# rsync -auvzP -e "ssh -p22" mssh.tar.gz root@192.168.176.11:/data/
sending incremental file list
mssh.tar.gz
          1,977 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
sent 2,069 bytes  received 35 bytes  4,208.00 bytes/sec
total size is 1,977  speedup is 0.94

# 拉取
[root@vm5 ~]# rm -f mssh.tar.gz
[root@vm5 ~]# rsync -auvzP -e "ssh -p22" root@192.168.176.11:/data/mssh.tar.gz .
receiving incremental file list
mssh.tar.gz
          1,977 100%    1.89MB/s    0:00:00 (xfr#1, to-chk=0/1)
sent 43 bytes  received 2,069 bytes  4,224.00 bytes/sec
total size is 1,977  speedup is 0.94

參數auvzP解釋:參數a是歸檔傳輸,保留文件屬性,u是更新傳輸,源文件修改時間較新,則傳輸。v是顯示詳細過程,z是壓縮傳輸,P是斷點傳輸。
注意:rsync 傳輸文件夾時候,folder/ 帶/則是傳輸目錄下的文件,不帶/是把文件夾也傳輸過去。

使用壓縮傳輸

安裝pv、lz4工具

注意:服務器兩端都要安裝。
pv在yum源里面沒有,可以到pv官網

# 去pv官網,搞到個rpm包鏈接,直接rpm命令安裝
[root@vm5 ~]# rpm -ivh http://www.ivarch.com/programs/rpms/pv-1.6.6-1.x86_64.rpm
獲取http://www.ivarch.com/programs/rpms/pv-1.6.6-1.x86_64.rpm
警告:/var/tmp/rpm-tmp.mFbA6u: 頭V3 DSA/SHA1 Signature, 密鑰 ID 3fc56f51: NOKEY
准備中...                          ################################# [100%]
正在升級/安裝...
   1:pv-1.6.6-1                       ################################# [100%]
   
# lz4 可以直接yum安裝   
[root@vm5 ~]# yum install -y lz4

使用

[root@vm5 ~]# time tar -c go |pv |lz4 -B4 |ssh -p22 -c aes128-ctr 192.168.176.11 "lz4 -d |tar -xC /data/"
using blocks of size 64 KB
18.1MiB 0:00:00 [49.5MiB/s] [   <=>                                                                                                                                                                      ]
real        0m0.376s
user       0m0.080s
sys        0m0.108s
# 對比rsync
[root@vm5 ~]# time rsync -auvzP -e "ssh -p22" go 192.168.176.11:/data/
......
sent 11,741,677 bytes  received 10,451 bytes  7,834,752.00 bytes/sec
total size is 18,502,481  speedup is 1.57
real 0m1.130s
user       0m0.797s
sys        0m0.160s
[root@vm5 ~]#


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM