帮助中心 >  行业资讯 >  云计算 >  Linux环境下删除海量文件的方式

Linux环境下删除海量文件的方式

2025-02-27 09:56:19 496

在 Linux 系统维护过程中,磁盘空间管理至关重要。当面临大量文件占用磁盘空间,尤其是数据库审计日志、应用程序临时文件等,若不及时清理过期文件,不仅会消耗系统 inode 资源,还可能影响系统正常写入。而直接使用 rm 命令删除海量文件,不仅耗时,还可能遇到 “-bash: /bin/rm: Argument list too long” 报错。本文将结合实际操作,介绍两种在 Linux 系统环境下高效删除海量文件的操作思路。


思路一:使用rsync命令删除

首先创建一个空文件夹,然后通过rsync --delete-before -d <空文件夹> <需要清理删除小文件的目录> 命令,达到删除海量小文件的目的。以下以删除Oracle数据库审计日志的操作步骤。

[oracle@testdb adump]$ mkdir /data/null
[oracle@testdb adump]$ ls -l /data/null
total 0
[oracle@testdb ~]$ nohup rsync --delete-before -d /data/null/ /u01/gird/app/oracle/admin/testdb/adump/ &

使用man rsync查看rsync命令相关的参数说明如下:

-d, --dirs transfer directories without recursing
--delete-before receiver deletes before transfer (default)

思路二:使用find命令的delete参数

使用find <需要清理删除小文件的目录> -type f -delete命令直接删除大批小文件。

操作命令如下演示:

[oracle@test adump]$ nohup find /u01/gird/app/oracle/admin/testdb/adump/ -type f -delete &

可以参考下面的命令来简单监控删除过程中Inodes使用率的变化:

while true; do df -i /; sleep 30; done

在使用find命令删除文件时,可以结合maxdepth 、+n(for greater than n)、-n(for less than n)、n(for exactly n)、-ctime n(File's status was last changed n*24 hours ago)等常用参数进行。

通过上述两种删除海量文件的操作思路,即使用 rsync 命令和 find 命令的 delete 参数,用户可以根据实际情况选择合适的方法来高效清理文件。在实际操作中,要注意结合系统存储 IO 情况,并采用 nohup 方式在后台执行,以避免终端超时退出,确保文件清理工作的顺利进行,从而有效管理 Linux 系统磁盘空间,保障系统稳定运行。

蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,也可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,蓝队云期待与你一起探索,助力你在 Linux 运维之路上稳步前行。



提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: