cp命令太慢?竟然存在更快的命令!
Posted herosunly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cp命令太慢?竟然存在更快的命令!相关的知识,希望对你有一定的参考价值。
文章目录
1. 前言
在Linux环境下进行文件复制,通常就是用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命令太慢?竟然存在更快的命令!的主要内容,如果未能解决你的问题,请参考以下文章