如何删除linux文件夹中的海量文件

今日份问题:

思维进度:

  • 需要清空一个文件夹里的内容,文件夹中内容数量预估上亿条,324G

  • 考虑:第一反应就是rm -rf *

  • 担心:思考了一下,324G的话,数据量这么大,rm -rf *会不会出问题

  • 结论:肯定是会出问题的,很慢,进程会挂起,消耗很长时间

  • 解决办法: 咨询了公司运维同学,得出了rsync命令

  • 效果:成功解决,消耗时常 5分钟。处理过程中,服务器很卡顿,但是基本还是能够访问,能够操作,延时较大。

rsync命令学习

1、建立一个空目录

mkdir -p /tmp/rsync_blank

2、确立需要清空的目标目录

/data/web/vip/htdocs/tuan

3、使用rsync同步删除(注意目录后面的“/”),整体效率会快一个数量级的样子。

rsync --delete-before -a -H -v --progress --stats /tmp/rsync_blank//data/web/vip/htdocs/tuan/

选项说明:

–delete-before 接收者在传输之前进行删除操作

–progress 在传输时显示传输过程

-a 归档模式,表示以递归方式传输文件,并保持所有文件属性

-H 保持硬连接的文件

-v 详细输出模式

-stats 给出某些文件的传输状态

一般我们不需要显示进度,使用以下命令即可

rsync --delete-before -a -H /tmp/rsync_blank//data/web/vip/htdocs/tuan/

把某个文件删掉

1 建立空文件/tmp/empty.txt

2 rsync --delete-before -a -H -v --progress --stats /tmp/empty.txt /opt/bre/xuanji.xiao/test/app.log

3 这样置为空后就可以快速删掉

原理:把文件系统的目录与书籍的目录做类比,rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销。

你可能感兴趣的:(每日问题)