当前位置: 首页 > 编程笔记 >

linux下如何实现快速拷贝大文件

宰父夕
2023-03-14
本文向大家介绍linux下如何实现快速拷贝大文件,包括了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 ~]#

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍如何使用Python脚本实现文件拷贝,包括了如何使用Python脚本实现文件拷贝的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了如何使用Python脚本实现文件拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.实现目的 统一时间对服务器某文件夹内文件进行备份保存,如若备份成功则不提示任何错误,否则将以邮件的形式告知

  • 本文向大家介绍深拷贝浅拷贝的区别和实现?相关面试题,主要包含被问及深拷贝浅拷贝的区别和实现?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 数组的浅拷贝: 如果是数组,我们可以利用数组的一些方法,比如slice,concat方法返回一个新数组的特性来实现拷贝,但假如数组嵌套了对象或者数组的话,使用concat方法克隆并不完整,如果数组元素是基本类型,就会拷贝一份,互不影响,而如果是对象或数

  • 本文向大家介绍使用mmap实现多进程对大文件拷贝,包括了使用mmap实现多进程对大文件拷贝的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了mmap实现文件多进程拷贝,供大家参考,具体内容如下 假设有一个超大文件,需对其完成拷贝工作。为提高效率,可采用多进程并行拷贝的方法来实现。假设文件大小为len,共有n个进程对该文件进行拷贝。那每个进程拷贝的字节数应为len/n。但未必一定能整除,

  • 本文向大家介绍jQuery的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?相关面试题,主要包含被问及jQuery的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?时的应答技巧和注意事项,需要的朋友参考一下 [jQuery] jQuery的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?

  • 问题内容: 我刚刚开始学习来自Android的iOS的Apple Swift编程。我现在基本上可以阅读和操作swift代码,还学习了iOS swift编程中使用的一些通用类,但是仍然对语法和所有内容感到困惑。 我正在尝试下载文件。就像,让我们说来自这个网址 在一个按钮中单击。也许也有视觉进步 通过在stackoverflow中搜索,我偶然发现了Alamofire。我可以尝试一下,但是我不确定这是否

  • 本文向大家介绍java 实现文件夹的拷贝实例代码,包括了java 实现文件夹的拷贝实例代码的使用技巧和注意事项,需要的朋友参考一下 java 实现文件夹的拷贝实例代码         这里就直接上代码,废话不多说,很简单很实用。 实例代码: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!