在 Linux 系統(tǒng)維護(hù)過程中,磁盤空間管理至關(guān)重要。當(dāng)面臨大量文件占用磁盤空間,尤其是數(shù)據(jù)庫審計(jì)日志、應(yīng)用程序臨時(shí)文件等,若不及時(shí)清理過期文件,不僅會(huì)消耗系統(tǒng) inode 資源,還可能影響系統(tǒng)正常寫入。而直接使用 rm 命令刪除海量文件,不僅耗時(shí),還可能遇到 “-bash: /bin/rm: Argument list too long” 報(bào)錯(cuò)。本文將結(jié)合實(shí)際操作,介紹兩種在 Linux 系統(tǒng)環(huán)境下高效刪除海量文件的操作思路。
[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命令相關(guān)的參數(shù)說明如下:
-d, --dirs transfer directories without recursing --delete-before receiver deletes before transfer (default)
思路二:使用find命令的delete參數(shù)
使用find <需要清理刪除小文件的目錄> -type f -delete命令直接刪除大批小文件。
操作命令如下演示:
[oracle@test adump]$ nohup find /u01/gird/app/oracle/admin/testdb/adump/ -type f -delete &
可以參考下面的命令來簡單監(jiān)控刪除過程中Inodes使用率的變化:
while true; do df -i /; sleep 30; done
在使用find命令刪除文件時(shí),可以結(jié)合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)等常用參數(shù)進(jìn)行。