关于大量文件的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,如需转载请自行联系原作者



相关文章
|
10月前
|
自然语言处理 编译器 C语言
【C++ 20 新特性】参数包初始化捕获的魅力 (“pack init-capture“ in C++20: A Deep Dive)
【C++ 20 新特性】参数包初始化捕获的魅力 (“pack init-capture“ in C++20: A Deep Dive)
144 0
|
消息中间件 SQL API
Flink线上问题汇总篇(2)-时区不一致系统时间少8小时导致数据丢失问题
flink按月度汇总数据,月初时数据部分丢失问题
1757 0
|
8月前
|
存储 JSON 安全
Token验证技术文档
【7月更文挑战第6天】Token验证是现代Web应用中常见的安全措施,用于确保用户身份的合法性和请求的安全性。它基于令牌(Token)的概念,通过在客户端和服务端之间传递一个安全的、有时限的字符串来验证用户身份,替代传统的基于会话的认证机制。本文档旨在介绍一种基本的Token验证流程,并提供一个简单的代码示例,使用JSON Web Tokens (JWT) 实现这一过程。
1098 1
|
7月前
|
资源调度 运维 Devops
阿里云云效操作报错合集之yarn install时报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
8月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之整库同步mysql到starRock提交任务异常,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
9月前
|
人工智能 UED 智能硬件
未来智能家居中的人工智能技术应用与挑战
在未来智能家居的发展中,人工智能技术将扮演越来越重要的角色。本文探讨了人工智能在智能家居中的应用现状、技术挑战以及未来的发展方向,着重分析了其在安全性、用户体验和能效优化方面的创新应用。
125 1
|
9月前
|
算法 关系型数据库 MySQL
深入理解MySQL中的JOIN算法
深入理解MySQL中的JOIN算法
|
10月前
|
消息中间件 SQL Java
Flink报错问题之调用udf时报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
10月前
|
消息中间件 Java 关系型数据库
金三银四,如何远程面试拿下大厂offer?(附大厂面经+面试宝典)
“找工作 3 个多月了,还没有遇到合适的,坐标杭州。”“坐标北京,2 年工作经验,裸辞 1 个月了,Java/Python 方向都在找,投的简历都石沉大海了。”“金三银四找的全是 996 的,双休只有外企和非互联网行业。”“去年冬天被裁员的,今年到现在还没找着像样的工作。”“投了半个多月简历,一个面试机会都没有,送达,已读。”
|
10月前
|
机器学习/深度学习 算法 PyTorch
实战图像softmax分类模型
本文是学习softmax图像分类模型的总结,主要分享softmax图像分类模型的技术原理,以及用代码实现验证,供大家参考。
365 3