cp命令太慢?竟然存在更快的命令!

Posted herosunly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cp命令太慢?竟然存在更快的命令!相关的知识,希望对你有一定的参考价值。



文章目录


1. 前言

  在Linux环境下进行文件复制,通常就是用cp命令。对于绝大多数人来说,由于它的通用性,该命令已经倒背如流。近来工作要频繁对文件进行复制,然后再进行处理。可不幸的是,常用的cp命令用起来却是好慢好慢。

cp命令太慢?竟然存在更快的命令!_文件复制

  为了提高效率,便打开谷歌搜索,寻找更好的解决方案。经过调研,得到了其余几个复制的命令,为了帮助大家,特意将命令分享如下(如果不想了解过程的,​想直接看结论的同学可以直接翻到文章末尾​)。

  下面就以指定的文件夹(/home/learn/files)为例进行实验和对比,为了让大家对该文件夹有更加直观的认识,先使用shell命令进行文件大小的分布情况进行统计。分为以下几个段大小进行统计:小于1K、 1K - 4K、 4K - 1M、1M - 10M、 10M - 1G、 1G 以上:

bins=(0-1k,1k-4k,4k-1m,1m-10m,10m-1g,1g-inf)
ls -Rla | awk print $9, $5 | column -t | awk -v bins_str=$bins BEGINsplit(bins_str,bins,",");ttl=0 ($2 <= 1024) a[1]++ (1024 < $2 && $2 <= 4096) a[2]++ (4096 < $2 && $2 <= 1048576) a[3]++ (1048576 < $2 && $2 <= 10485760) a[4]++ (10485760 < $2 && $2 <= 1073741824) a[5]++ (1073741824 < $2 ) a[6]++ ttl++ END for(i=0;i<length(a);++i) print bins[i],a[i],"percentiles:",(a[i]/ttl)*100,"%"

  结果如下所示:

范围

个数

比例

0-1k

51952

99.7964%

1k-4k

4

0.00768374%

4k-1m

41

0.0787583%

1m-10m

5

0.00960467%

10m-1g

56

0.107572%

2. 命令一: cp

time cp -a /home/learn/files /home/learn/test/cp
real 6m7.699s
user 0m0.568s
sys 0m48.372s

3. 命令二:tar

time (cd /home/learn/files; tar c .) | (cd /home/learn/test/tar ; tar x)
real 2m7.848s
user 0m1.209s
sys 1m12.826s

4. 命令三:rsync

time (cd /home/learn/files; rsync -a . /home/learn/test/rsync)
real 9m14.021s
user 4m8.799s
sys 3m10.757s

5. 命令四:cpio

time (cd /home/learn/files; find . -xdev) | cpio -pmd /home/learn/test/cpio
real 9m23.032s
user 0m7.435s
sys 1m35.024s

6. 结论

命令

时间

cp

6m7.7s

tar

2m7.8s

rsync

9m14s

cpio

9m23s

  ​tar命令是最快的​。

  ​rsync​虽然速度很慢,但是它支持​断点续传​。所以它可以用来复制差异文件。



以上是关于cp命令太慢?竟然存在更快的命令!的主要内容,如果未能解决你的问题,请参考以下文章

Centos基本命令

Centos基本命令

Linux 命令之 cp 命令详解

cp命令

linux学习笔记7---命令cp

Linux命令学习-cp命令