需求

有的开发代码写不好,导致单目录下缓存文件近900W个,要求删除这900W个文件,怎搞?

分析

如果是使用rm -rf 肯定不好,会卡死,提示参数过长,看来是把文件名当成参数了。顶多就80W个,已经很不错了。明显满足不了要求

可以用rsync同步清空,rsync统计文件名不会全部写在内存中了,超过一定数据会放在磁盘里,所以适合删除文件数比较多的情况

操作

[root@vm6Temp.old]$ ls -1f |wc -l8767765[root@vm6 tools]# cd /disk1/tools[root@vm6 tools]# time rsync --delete-before -d --progress --stats empty/ Temp.old/...Number of files: 1Number of files transferred: 0Total file size: 0 bytesTotal transferred file size: 0 bytesLiteral data: 0 bytesMatched data: 0 bytesFile list size: 15File list generation time: 0.001 secondsFile list transfer time: 0.000 secondsTotal bytes sent: 22Total bytes received: 12sent 22 bytes  received 12 bytes  0.00 bytes/sectotal size is 0  speedup is 0.00rsync warning: some files vanished before they could be transferred (code 24) at main.c(1039) [sender=3.0.6]real 753m37.972s(约12.5小时)user 1m26.525ssys 11m37.410s

可见统计和删除一共花了12.5小时,服务器是阿里云4核8G的,文件都是10多k-几十k

总结:

不要在一个目录中放大量的(通过超过200W的文件)文件,这样会对系统性能有影响,得细分成类,这样能提高性能也方便维护。

hualinux1.9 基础练习:如何删除900W单目录小文件相关推荐

  1. linux基础命令学习(五)目录或文件权限

    一.查看文件的详情 ls -al 二.改变目录或文件的权限 chmod [-cfvR] [--help] [--version] mode file 1. 必要参数 -c 当发生改变时,报告处理信息 ...

  2. 1222_SCons单目录多文件的编译实现

    全部学习汇总: GitHub - GreyZhang/g_SCons: A new member in my toolbox, looking forward to replacing make to ...

  3. 在Linux中同时删除一百万个小文件的最快方法

    最近,看到一个比较有意思的话题:在Linux下面如何最快的删除一个目录下的百万级的小文件?通常情况下,在Linux中删除文件首先会选择rm命令,但是处理数量巨大的文件的时候,其删除性能并不是非常好. ...

  4. eclipse 工程目录下 删除不掉目录或者文件的解决办法

    对于新手来说,有时操作失误就会导致eclipse目录中的某些子目录或者文件无法删除. 这样的原因是,在工程目录中(不是eclipse上显示的,是真实的物理磁盘上的)这个目录或者文件已经不存在了,所以在 ...

  5. Spark-HDFS 删除空文件 合并小文件

    一.引言 hive 执行任务后目录下生成过多小文件,过多的小文件会占用 namenode 的内存,对于 HDFS 非常不友好,所以可以通过删除空文件或者合并小文件的方法进行优化. 二.删除空文件 可以 ...

  6. find命令删除大量小文件

    在Linux下使用 "rm -rf *" 试图删除非常大量的小文件时,可能会报类似下边的错误: /bin/rm: Argument list too long. 这是因为通配符&q ...

  7. 算法设计 删除无序单链表中的值域重复的结点

    删除无序单链表中的值域重复的结点 题目: 有一个带头结点的单链表head,其中可能出值域重复的结点,设计一个算法删除值域重复的结点.要求在主函数中调用设计的算法,给出结果. 思路:删除某个结点值的重复 ...

  8. Linux循环链表删除节点,删除循环单链表开头元素

    要删除循环单链表中的开头节点,需要进行一些指针调整. 在开头有三种从循环单链表中删除节点的方案有以下几种. 情况1 :(链表为空) 如果链表为空,则条件head == NULL将变为true,在这种情 ...

  9. laravel基础课程---14、表单验证(lavarel如何进行表单验证)

    laravel基础课程---14.表单验证(lavarel如何进行表单验证) 一.总结 一句话总结: lavarel的验证的功能比tp要[简单]且[强大]很多 直接控制器中:添加[规则数组]和[修改提 ...

最新文章

  1. ASP.NET重用代码技术 - 用户控件技术
  2. html5转apicloud,使用APICloud编写优雅的HTML5代码
  3. 基于三层BP神经网络的人脸识别
  4. java如何访问局域网共享文件
  5. 数据类型_插入数据_选取数据_修改数据——删除行
  6. 通过听力写代码?盲人程序员就是这样做的
  7. vs mysql iss_MySQL5.7与8.0的连接问题(vs2015\2017)
  8. html怎么无损插入背景音乐,HTML插入背景音乐方法【全】
  9. 命令行编译和运行java
  10. 【ES6入门04】:数值扩展
  11. maven创建java项目_使用maven命令行创建java项目
  12. 通过kafka提供的命令来查看offset消费情况
  13. 江门android培训,基于selenium模块的江门市干部培训网络学院自动选课脚本
  14. 判断用户端有无安装flash插件并返回对应播放器选项提示
  15. Elasticsearch系列——(1.2)倒排索引 的实现
  16. 可以查看计算机主要自启动项的技术,电脑中怎么查看启动项
  17. 文本分割之水平投影法基于OpenCV(python)版实现
  18. Python之warnings模块忽略warning警告错误
  19. 特征值特征向量和奇异值分解精彩片段汇总
  20. 有人不理解,有人不屑,到底什么是UXD

热门文章

  1. 吴恩达《机器学习系列课程》学习笔记(一)
  2. python读取7个数(1-50)的整数值_python每日一题总结7
  3. Mybatis 源码解析(六) Mybatis方言支持
  4. 11对战平台服务器怎么修改,11对战平台无法登陆的解决方法
  5. 学微服务必经之路——Nacos新手入门(上)
  6. 如何准备校招技术面试+一只小菜鸟的面试之路
  7. git删除本地分支、删除远程分支
  8. sql注入学习笔记(4)--sqlmap注入心得
  9. 菌外膜囊泡包载的阿霉素纳米粒|巨噬细胞膜囊泡包四氧化三铁二氧化硅纳米粒
  10. Leetcode-标签为Tree 226. Invert Binary Tree