linux中的文件复制命令——CP

linux中文件剪切的命令——MV

1.问题背景

今天在某个目的动作过程中想把一个文件夹下的文件复制到另外的一个文件夹下

cp -fr   ./dir1/   /dir2/

发现终端一直在提示运行中,就是一直在复制,好一会儿都没有停。我要复制的文件都不是很大,全部加起来也就80M的样子,但是有很多零散的小文件,很多。

此时我已经按下enter很久了。。。。但是提示符一直闪啊闪。。。就是不停

2,问题探索

看看究竟发生了什么

cp -vfr   ./linux-source-3.8.0/   /wa/

这家伙足足闪了八分钟。。。还好,最后停了。。。

尝试用rm把一个文件夹里面的文件移动到另外的文件夹

可以看到这里只有一个“动作”--->

而用cp命令的时候,每一个文件都有一个--->“动作”

我们可以大胆的推理,这里rm实质上只是交换了指针变量里储存的地址,而cp命令要把所有的文件地址变量都找到,然后读取内容,然后再另外的文件夹地址下开辟一块内存去储存文件内容。这就涉及到寻址。而寻址就是造成这种“出奇的慢”的原因。

3.对于cp和win里的ctrl+c相比很慢的解释----文件系统寻址方式造成的差异

求助了贴吧的“小_埃”,这是他的解释

“零散文件会导致硬盘频繁寻道,去看看硬盘的平均寻道时间参数吧,一次就若干毫秒,这段时间之内所有读写操作全要停下来等”

“另外,不同文件系统对于小文件的处理方式,也会对性能造成巨大的影响。
楼主说Win7比Linux复制同样的文件快,这不是不可能的,而且是很有可能的。
ext4是怎么实现的我不太清楚,我就说FAT32和NTFS两个文件系统的实现吧。
FAT32是不管文件的情况,一律把文件名等信息放在文件分配表里,然后把文件内容放在磁盘后面的扇区中。
而NTFS则会判断文件大小,如果文件足够小,则将文件名、文件内容一起放进MFT里,如果文件大小更大,不适合放进MFT里,则会把文件名等信息放在MFT里,并把文件内容放在磁盘后面的扇区中。

这两种文件系统在处理零散小文件时,性能差距非常巨大,前者需要磁盘频繁寻道,复制每一个小文件需要寻道4次以上,而后者复制若干个零散小文件,只需要寻道几次就够了。7200rpm的硬盘平均寻道时间都在6~9ms左右,因此性能差距立见分晓”

为什么cp很多小文件非常慢——对cp和rm命令的一些思考的更多相关文章

  1. 如何利用Hadoop存储小文件

    **************************************************************************************************** ...

  2. 用Hadoop AVRO进行大量小文件的处理(转)

    使用 使用使用 使用 HDFS 保存大量小文件的缺点:1.Hadoop NameNode 在内存中保存所有文件的“元信息”数据.据统计,每一个文件需要消耗 NameNode600 字节内存.如果需要保 ...

  3. linux 用 rsync 快速删除大量小文件

    假设我们在目录 /tmp/to_delete 下有很多小文件 a1 a2 a3 f1 f2 f3 现在我们想快速的删除f 开头的文件. 如果文件量大,用rm 可能会失败,而且会很慢, 所以用rsync ...

  4. MaxCompute小文件问题优化方案

    小文件背景知识 小文件定义 分布式文件系统按块Block存放,文件大小比块大小小的文件(默认块大小为64M),叫做小文件. 如何判断存在小文件数量多的问题 查看文件数量 desc extended + ...

  5. Spark SQL 小文件问题处理

    在生产中,无论是通过SQL语句或者Scala/Java等代码的方式使用Spark SQL处理数据,在Spark SQL写数据时,往往会遇到生成的小文件过多的问题,而管理这些大量的小文件,是一件非常头疼 ...

  6. 数仓面试高频考点--解决hive小文件过多问题

    本文首发于公众号:五分钟学大数据 小文件产生原因 hive 中的小文件肯定是向 hive 表中导入数据时产生,所以先看下向 hive 中导入数据的几种方式 直接向表中插入数据 insert into ...

  7. 干货!Apache Hudi如何智能处理小文件问题

    1. 引入 Apache Hudi是一个流行的开源的数据湖框架,Hudi提供的一个非常重要的特性是自动管理文件大小,而不用用户干预.大量的小文件将会导致很差的查询分析性能,因为查询引擎执行查询时需要进 ...

  8. HDFS 07 - HDFS 性能调优之 合并小文件

    目录 1 - 为什么要合并小文件 2 - 合并本地的小文件,上传到 HDFS 3 - 合并 HDFS 的小文件,下载到本地 4 - 通过 Java API 实现文件合并和上传 版权声明 1 - 为什么 ...

  9. 彻底解决Hive小文件问题

    最近发现离线任务对一个增量Hive表的查询越来越慢,这引起了我的注意,我在cmd窗口手动执行count操作查询发现,速度确实很慢,才不到五千万的数据,居然需要300s,这显然是有问题的,我推测可能是有 ...

随机推荐

  1. 【转】android权限列表

    访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permiss ...

  2. 美国vps哪个比较好,vps国内访问速度最快!

    沃网中国是一家成立于2008年的国内idc商,提供基于hyper-v架构的VPS产品,数据中心包括国内电信.美国洛杉矶等,他们采用的是国内访问最快的加州机房ping值,160-180左右相当给力的速度 ...

  3. SPOJ 687 Repeats(后缀数组+ST表)

    [题目链接] http://www.spoj.com/problems/REPEATS/en/ [题目大意] 求重复次数最多的连续重复子串的长度. [题解] 考虑错位匹配,设重复部分长度为l,记s[i ...

  4. Android应用开发基础篇(4)-----TabHost(选项卡)

    一.概述 TabHost是一种用来显示标签的组件,不清楚?看一下来电通这个应用就知道了.这个组件用起来与其他组件不太一样,它需要继承TabActivity这个类,还有它的布局文件与我们平时用的也有些不 ...

  5. 套接字socket 的地址族和类型、工作原理、创建过程

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

  6. Android首席设计师宣称移动概念已死,开发人员应该面向屏幕编写应用而非移动

    腾讯科技对Android首席设计师Duarte"移动已死"訪谈内容的翻译错得离谱,被到处转载,误人视听. 而要真正理解Duarte所想表达的含义,须要深入了解互联网前沿设计理念以及 ...

  7. asp.net MVC过滤器的用法(转)

    转自:http://www.studyofnet.com/news/257.html APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再 ...

  8. MSSQL数据库统计所有表的记录数

    今天需要筛选出来库中行数不为零的表,于是动手写下了如下存储过程. CREATE PROCEDURE TableCount AS BEGIN SET NOCOUNT ON ),RowsCount INT ...

  9. ADO.NET知识的运用一(Day 26)

    哈哈,又到了总结的时间了,来回顾一下今天主要学了关于ADO.NET的哪些知识吧.(这次学的ADO访问数据库主要以访问SQL数据库为主) 理论:  首先我们要知道为什么要学习ADO.NET? 因为我们之 ...

  10. iOS网络请求基础

    这篇是关于网络请求的,结合公司的实际情况编写,如果有不同意见欢迎留言共同讨论. iOS在9.0之后彻底放弃了NSURLConnection,现在已经改用了NSURLSession进行网络请求.一般现在 ...