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 ~]#

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

(0)

相关推荐

  • Linux使用scp命令进行文件远程拷贝详解

    前言 scp是 secure copy的缩写, scp是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令.Linux的scp命令可以在Linux服务器之间复制文件和目录. 使用语法: scp  [参数] [源路径] @IP:/目标路径 scp 参数如下: -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用IPv4寻址 -6: 强制scp命令只使用IPv6寻址 -B: 使用批处理模式(传输过程中不询问传输口令或短语) -C: 允许压

  • 使用scp获取远程linux服务器上的文件 linux远程拷贝文件

    一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度. 二.scp有什么用? 1.我们需要获得远程服务器上的某个文件,远程服务器既没有配置ftp服务器,没有开启web服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过scp命令便可轻松的达到目的. 2.我们需要将本机上的文件上传到远程服务器上,远程服务器没有开启ftp服务器或共享,无

  • linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器的方法

    如下所示: 拷贝远程服务器的文件到本地: scp -r -P  端口号   用户名@IP地址:/usr/local/tomcat_airc/webapps/        /tmp/kyj/ 拷贝本地文件到远程服务器: scp -r    /tmp/kyj/sys.war         用户名@IP地址:/usr/local/tomcat_airc/webapps/ 以上这篇linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器的方法就是小编分享给大家的全部内容了,希望能给大家一个参

  • Linux中拷贝 cp命令中拷贝所有的写法详解

    今天在编写一个脚本的时候,发现一个比较奇怪的问题:就是在使用cp拷贝当前目录下所有文件到目标目录的时候,源和目标目录大小不同.原来一直没有留意有这样的问题,后来查了些资料,才知道以前一直使用的格式有误, 一.预备 cp就是拷贝,最简单的使用方式就是: cp oldfile newfile 但这样只能拷贝文件,不能拷贝目录,所以通常用: cp -r old/ new/ 那就会把old目录整个拷贝到new目录下.注意,不是把old目录里面的文件拷贝到new目录,而是把old直接拷贝到new下面,结果

  • linux拷贝命令之高级拷贝scp命令详解

    Linux命令scp scp - secure copy (remote file copy program):她是一个安全的远程文件拷贝程序. SYNOPSIS :语法如下scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2 看

  • Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(Windows<->Windows, Windows<->Linux)

    最近学习Virtualbox的一些知识,记录下,Virtualbox下如何实现主机和虚拟机之间文件夹共享及双向拷贝 关于双向拷贝 1.设置虚拟机为"双向"共享粘贴 有的人反应只要设置双向粘贴就可以,但是我的不行,我还需要再给虚拟机安装一下增强功能.需要启动虚拟机,安装菜单项"设备"中的最后一项. 安装完增强功能,注意要重启虚拟机,双向拷贝才被启用. 关于文件夹共享 情况一: Host操作系统:Windows 7 Guest操作系统:Windows Server 1.

  • 详谈Linux写时拷贝技术(copy-on-write)必看篇

    COW技术初窥 在linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了"写时复制"技术,也就是只有进程空间的各段的内容要发生变化时,才将父进程的内容复制一份给子进程. 那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢?? 在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段.数据段.堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,其对应的物理空间是一

  • linux使用scp命令备份文件 scp拷贝文件

    因为一些原因,需要换一台VPS,所以就需要为服务器转移文件了.但是当我在为原来服务器上的东西打包的时候,问题来了,打包还没有一半,就提示服务器空间不足了!这个上次已经因为空间不足服务器都宕机了,那怎么办?不够空间的话没办法打包啊!然后突然想到SFTP,因为我服务器上没有装FTP,一直都是使用SFTP来当FTP使得,于是上网搜索了一下,还真找到了一个scp命令.使用起来也很简单,旧的服务器IP是204.152.221.90,要把上面的/home/wwwroot的文件拷贝过来,那么在新的服务器上面执

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

    拷贝数据 远程拷贝数据的时候,我们一般使用rsync命令,但是如果拷贝大量的小文件,会导致rsync的传输速度慢.使用tar pv lz4打包压缩传输,可以解决这问题,使用这个方法,等同于使用scp.rsync传输大文件. 实测,使用rsync传输1200G,单个文件大小为几十KB~2GB,千兆网卡,需要同时跑6个rsync才能把带宽跑满,每个速度20MB左右,速度波动大.每分钟可以拷贝4.5GB左右. 但是,使用tar pv lz4,跑一个就可以了,而且速度波动小.每分钟可以拷贝6.8GB左右

  • 浅谈Linux下通过find命令进行rm文件删除的小技巧

    我们经常会通过find命令进行批量操作,如:批量删除旧文件.批量修改.基于时间的文件统计.基于文件大小的文件统计等,在这些操作当中,由于rm删除操作会导致目录结构变化,如果要通过find结合rm的操作写成脚本,就会遇到一些麻烦,本文通过一个例子为大家进行介绍. 系统环境: SUSE Linux Enterprise Server 11 或 Red Hat Enterprise Linux 问题症状: 客户现场有一个自动化的脚本,有以下的find语句,每天运行以删除某个目录下7天以前的文件或目录,

  • Linux下scp无密码上传 下载 文件 目录的方法

    在Linux下远程备份的时候,需要配置scp的 无密码复制文件.目录.就把这个设置整理如下: 本地服务器:A 远程服务器:B 1.在 A 上运行 ssh-keygen -t rsa 在/root/.ssh 下生成id_rsa 和 id_rsa.pub 两个文件 在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A 如图所示 2. 在 B 上也同样运行 ssh-keygen -t rsa 3. 在 B 的 /root/.ssh 下创建authorized_ke

  • Linux下如何使用gdb调试core文件

    1.core文件 当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件.core文件是程序运行状态的内存映象.使用gdb调试core文件,可以帮助我们快速定位程序出现段错误的位置.当然,可执行程序编译时应加上-g编译选项,生成调试信息. 当程序访问的内存超出了系统给定的内存空间,就会产生Segmentation fault (core dumped),因此,段错误产生的情况主要有: (1)访问不存在的内存地址: (2)访问系

  • Linux下修改jar、zip等文件内的文件详解

    Linux下修改jar.zip等文件内的文件详解 看到很多同事在Linux环境下修改jar包内的文本文件或zip中的文本文件时,经常是先把jar包或zip包下载下来,然后修改,再上传.其实Linux针对此类文件提供了相应的操作功能. 平时修改Linxu文件时使用vi或vim命令来修改.其实修改jar包或zip可以同样使用此命令. 对文件执行vi或vim. vim xxx.jar 执行之后,会显示jar包或zip包中的文件. 通过以下命令根据文件名字查找文件: /index.ftl 比如上面的命令

  • Linux下将源文件编译成目标文件的过程解析

    简介 请讲一下linux如何源文件逐步编译成可执行文件. 解答 首先先上图对编译的整个过程有个感性的认识,然后再逐步分析各个过程. 以hello.c 程序为例 # include <stdio.h> main{ printf("hello\n"); } 一个.c源程序需要经过预处理器生成.i文件,再经过编译器生成.s文件,再经过汇编器生成可重定位目标文件.o文件,再与其他.o文件经过链接器生成最终的可执行目标程序. 预处理阶段.主要是处理源文件中以"#"

  • Linux下Oracle如何导入导出dmp文件详解

    前言 对于本机安装了oracle 客户端,下述命令都可以在 dos 执行,当然 dmp 文件导出在本地. 但在实际研发时,没人愿意在本机上安装庞大的 oracle 软件,这时你需要使用 Xshell/puTTY.. 远程工具连接到 Linux 进行操作,进行 Linux 上 dmp 文件的导入导出. 正文 a. 将用户 system 用户表导出到指定路径 D 盘 exp system/password@SID file=d:/daochu.dmp full=y b. 将用户 system 与 s

  • Windows和 Linux下生成以当前时间命名文件的方法

    Windows BAT批处理文件: 复制代码 代码如下: @echo off set time_hh=%time:~0,2% if /i %time_hh% LSS 10 (set time_hh=0%time:~1,1%) set filename=%date:~,4%%date:~5,2%%date:~8,2%_%time_hh%%time:~3,2%%time:~6,2% echo test >> %filename%.txt Linux Shell 脚本: 复制代码 代码如下: #!/

  • shell脚本实现拷贝大文件显示百分比的代码分享

    复制代码 代码如下: #!/bin/sh strace -q -eread cp -- "${1}" "${2}" 2>&1 \ | awk '{     count += $NF     if (count % 10 == 0) {         percent = count / total_size * 100         for (i=0;i<=percent;i++)             printf("="

  • Redhat Linux下Bind的快速安装

    1.使用光盘自带的软件包,安装以下包: bind bind-utils bind-libs (rpm -i xxx.rpm) 2. 将named服务设置为自启动 (使用ntsysv,chkconfig等工具) 3. 假设你需要解析bcomcn.com,如下操作: cd /var/named cp localdomain.zone bcomcn.zone vi bcomcn.zone $TTL  86400 @       IN      SOA     ns.bcomcn.com. root.b

随机推荐