在CentOS中,find命令是查找大文件的核心工具,可根据文件大小、修改时间等条件筛选目标文件。
-type f(仅查找文件)、-size +N(大于N)参数,例如查找/data目录下大于100MB的文件:find /data -type f -size +100M
ls -lh显示详细信息:通过-exec参数调用ls -lh,可直接查看文件大小、权限等详情(如文件名、大小、修改时间):find /data -type f -size +100M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
-atime +N(N天内未访问)参数,例如查找30天未访问的大文件:find /data -type f -size +100M -atime +30
-print0(处理含空格文件名)与xargs -0 du -h组合,再通过sort -nr按大小降序排列,快速识别最大的文件:find /data -type f -size +100M -print0 | xargs -0 du -h | sort -nr
tar命令是CentOS中压缩/归档大文件的常用工具,支持结合gzip、bzip2等算法实现压缩,降低文件体积。
-czvf参数(创建、gzip压缩、显示详情、指定文件名),例如将/data/big_dir目录压缩为archive.tar.gz:tar -czvf archive.tar.gz /data/big_dir
-cjvf参数(bzip2压缩比更高,但速度较慢),例如:tar -cjvf archive.tar.bz2 /data/big_dir
-xzvf(解gzip)、-xjvf(解bzip2)参数,例如解压archive.tar.gz:tar -xzvf archive.tar.gz
split命令**按指定大小分割(如100MB/份),后续分别压缩:split -b 100M /data/big_file big_file_part_
分割后会生成big_file_part_aa、big_file_part_ab等文件,可使用cat合并:cat big_file_part_* > /data/big_file
清理无用大文件是释放磁盘空间的关键步骤,需谨慎操作以避免误删。
find与rm命令,例如删除/data目录下大于100MB的.log文件:find /data -type f -name "*.log" -size +100M -exec rm -f {} \;
echo >、cat >或truncate命令清空内容(如清空/var/log/big.log):echo > /var/log/big.log
# 或
cat /dev/null > /var/log/big.log
logrotate工具**定期轮转、压缩旧日志(默认配置在/etc/logrotate.conf),避免日志文件占用过多空间。手动触发轮转:logrotate -f /etc/logrotate.conf
/var/cache/yum或/var/cache/dnf目录,可使用以下命令清理:yum clean all # CentOS 7及以下
dnf clean all # CentOS 8及以上
通过分析工具可快速识别磁盘空间占用趋势,提前处理大文件。
df -h命令**显示各分区总大小、已用空间、可用空间(人类可读格式),例如:df -h
du命令**统计目录及其子目录的大小,-h(人类可读)、--max-depth=1(仅显示一级子目录)参数可简化结果:du -h --max-depth=1 /data | sort -nr
ncdu工具**(sudo yum install ncdu),通过终端界面直观查看目录大小,支持按键导航(如↑/↓选择、Enter进入、d删除):ncdu /data
cron定时任务**结合df命令,当磁盘空间低于阈值(如10%)时发送告警邮件,避免磁盘满导致系统故障。针对大文件存储,可通过文件系统选择与参数调整提升读写性能。
noatime参数(禁用访问时间更新),减少不必要的磁盘写操作(如/etc/fstab中添加defaults,noatime)。xfs_growfs扩展文件系统大小(适用于动态扩容),或通过tune2fs调整inode大小(如sudo tune2fs -I 512 /dev/sda1)。