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. Hadoop基准测试(转载)

    <hadoop the definitive way>(third version)中的Benchmarking a Hadoop Cluster Test Cases的class在新的版 ...

  2. SSD的基本架构

    在SSD的优势一章中,我们对比过HDD和SSD的内部区别.现在,我们再谈一下SSD的基本架构.                   上图为一款典型的SSD架构图解,各部分的解释如下:       操作 ...

  3. nefu 462 fib组合

    nefu 462 fib组合 (斐波那契数列的通项公式以及推倒过程) 分类: 数学2014-05-21 10:27 190人阅读 评论(0) 收藏 举报 题目链接:http://acm.nefu.ed ...

  4. Docker之dockerfile

    一.什么是dockerfile Docker通过对于在dockerfile中的一系列指令的顺序解析实现自动的Image的构建: 通过使用build命令,根据dockerfile的描述来构建镜像: bu ...

  5. nginx 使用安装问题及解决方案

    如何安装清参考:http://www.runoob.com/linux/nginx-install-setup.html 可以先不用配置,等理解后在配置. 在启动nginx时,出现提示: nginx: ...

  6. 今天碰到的angular 中的一个小坑

    最近在自个儿研究angular,在写一个demo的时候总是有问题,最后发现居然是大小写的问题,卧槽 特tm的坑爹了,代码如下: <!DOCTYPE html> <html lang= ...

  7. hibernate通过配置文件生成数据库信息

    hibernate可以通过配置文件在数据库生成相应的数据库信息.也可以把数据库的信息生成相应的代码(实体类操作类和映射文件) 下面是通过代码默认对hibernate.cfg.xml信息在数据库生成信息 ...

  8. sql Servers数据库基础

    1. 数据库约束包含:     ·非空约束     ·主键约束(PK) primary key constraint 唯一且不为空     ·唯一约束(UQ) unique constraint 唯一 ...

  9. this function has none of deterministic, no sql,or reads sql data in its declaration and binary logging is enabled

      原址:http://blog.chinaunix.net/uid-20639775-id-3031821.html   This function has none of DETERMINISTI ...

  10. A Byte of Python 笔记(7)数据结构:列表、元组、字典,序列

    第9章 数据结构 数据结构,即可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的. python 有三种内建的数据结构--列表.元组和字典. list = ['item1', 'item2' ...