关于大量文件的copy,delete操作方式效率初探

简介:

    拷贝大量文件时,用cp有诸多不便(例如命令意外中断后,无法续传;如果强行覆盖的话,又会浪费时间;不覆盖的话,倒是可以通过echo "n"|cp -r /source /destination来完成,但是经过我的实验,在大量文件下,传递n给cp的覆盖提示也会时间延迟,所以对于已经存在的文件同样存在时间上的浪费)

rsync 拥有很多特性,可以避免上面提到cp的种种不便,但是考虑到操作大量文件,就不得不考虑效率

下面是对大量文件的拷贝、删除操作,基于cp、rm -rf、rsync三种方式的效率对比

实验过程拷贝47G的数据(大小基本分散在25M以下文件数量11041个)

一、拷贝

    1、通过cp方式

    time cp -rp -v /app/glusterfs/NetworkDisk /home/

    real    16m29.876s
    user    0m0.889s
    sys     1m59.575s

    2、rsync方式

    time rsync -av /app/glusterfs/NetworkDisk /home/

    real    16m34.557s
    user    8m53.267s
    sys     4m56.069s

二、删除

    1、通过rm -rf

    time rm -rf /home/NetworkDisk

    real    0m3.341s
    user    0m0.002s 
    sys     0m3.297s

    2、通过rsync --delete

    rsync -a --delete /empty /home/NetworkDisk

    real    0m1.709s
    user    0m0.014s
    sys     0m1.573s

通过以上对比:

    貌似在复制速度上,两者不相上下

    而在删除操作上,我们看到rsync --delete 比rm -rf快了约2s。

    为了得出更可信的结果,我又做了针对10W小文件的操作对比,如下

    首先生成10W小文件

    for i in {1..100000};do dd if=/dev/zero of=/app/test/$i bs=100k;done

一、拷贝

    1、time cp -rp -v /app/test /home/

    real    6m21.137s
    user    0m1.848s
    sys     0m34.099s

    2、rsync -av /app/test /home/、

    real    3m56.437s
    user    1m53.502s
    sys     1m21.125s

二、删除

    1、rm -rf /app/test

    real    0m4.527s
    user    0m0.143s
    sys     0m4.339s

    2、rsync -a --delete /empty /app/test

    real    0m0.122s
    user    0m0.000s
    sys     0m0.009s

通过以上对10W小文件的操作,可以得出结论,对于大量文件的拷贝、删除操作,rsync相比较cp和rm还是有很大优势的


最后附上一篇相关文章

http://www.linuxeden.com/html/news/20130613/140243.html

     本文转自kai404 51CTO博客,原文链接:http://blog.51cto.com/kaifly/1437539,如需转载请自行联系原作者



相关文章
|
5月前
|
存储 5G C语言
JavaFile实现对文件txt内容的增删该查操作
JavaFile实现对文件txt内容的增删该查操作
45 0
文件覆盖写入和追加写入:使用场景、命令和技巧详解
文件覆盖写入和追加写入:使用场景、命令和技巧详解
1039 0
|
2月前
|
Java Docker 容器
典型热点应用问题之修改Dockerfile中的COPY指令的问题如何解决
典型热点应用问题之修改Dockerfile中的COPY指令的问题如何解决
|
5月前
如何批量复制多个文件到多个目录中(批量复制文件,多对多文件高效操作的方法)
该文介绍了如何使用一个工具进行文件批量复制的操作。首先,提供了百度网盘和蓝奏云的链接,附有提取码,以获取所需工具。接着,展示了一个包含三个文件夹和两张图片的示例。操作步骤包括:打开工具,使用Ctrl+5进入批量复制模块,选择图片并拖拽至复制区域,然后选择目标文件夹(在这里是三个命名的空文件夹),点击“开始复制”,等待过程完成。工具提供复制选项供用户按需选择,且支持保存操作路径以备后续使用。完成后,目标文件夹将包含复制的图片,整个过程简便快捷。
|
5月前
|
关系型数据库 MySQL 测试技术
当update修改数据与原数据相同时会再次执行吗
当update修改数据与原数据相同时会再次执行吗
46 1
|
12月前
|
算法 C# C++
1000多个文件,占用空间10G,删除的效率
1000多个文件,占用空间10G,删除的效率
|
Java
IO案例,集合到文件数据排序、复制单级和多级文件夹及复制文件的异常处理
IO案例,集合到文件数据排序、复制单级和多级文件夹及复制文件的异常处理的简单示例
70 1
IO案例,集合到文件数据排序、复制单级和多级文件夹及复制文件的异常处理
C++中的拷贝控制操作
C++中的拷贝控制操作
148 0
C++中的拷贝控制操作
下一篇
无影云桌面