温馨提示×

CentOS Cleanup如何识别大文件

小樊
40
2025-12-23 12:29:32
栏目: 智能运维

识别大文件的高效方法

一、快速定位占用空间的位置

  • 查看各分区使用情况:df -h,确认哪个挂载点(如 //var/boot)使用率异常。
  • 查看目录级占用:du -h --max-depth=1 /path | sort -rh | head,逐层下钻到具体目录。
  • 检查是否耗尽索引节点:df -i,若 Use%100%,需按“文件数量”而非“容量”清理。
  • 若已删除文件但空间未释放:lsof -n | grep deleted,定位仍占用已删文件的进程并处理。

二、按大小精确查找文件

  • 基本用法:find <路径> -type f -size +<N>[cwbkMG]
    • 单位说明:c=字节、k=KiB、M=MiB、G=GiB(默认单位为 512 字节块)。
  • 示例
    • 全盘查找大于 100MB 的文件并显示详情:
      find / -type f -size +100M -exec ls -lh {} \;
    • 按大小排序输出(更直观):
      find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
    • 查找 100MiB–200MiB 区间的文件:
      find / -type f -size +100M -size -200M -ls
    • 仅输出前 N 个最大文件:
      find / -type f -printf '%s\t%p\n' | sort -n | tail -10
  • 提示:避免直接在 / 下无过滤执行删除,建议先定位到具体目录再处理。

三、交互式与图形化辅助

  • 安装并使用 ncdu(按目录/文件大小交互式浏览,便于快速定位):
    sudo yum install ncdu -y && sudo ncdu /
  • 桌面环境可用 Baobab(磁盘使用分析器)进行可视化分析:
    sudo yum install baobab -y && baobab

四、清理建议与注意事项

  • 日志与临时文件
    • 清理 systemd 日志:sudo journalctl --vacuum-size=500M--vacuum-time=7d
    • 清理旧压缩日志:find /var/log -type f -name "*.gz" -delete
    • 清理临时文件:sudo find /tmp -type f -atime +7 -deletesudo find /var/tmp -type f -atime +7 -delete,或使用 systemd-tmpfiles-clean.service 按配置自动清理。
  • 包管理器缓存
    • sudo yum clean allsudo dnf clean all
  • 旧内核(谨慎)
    • 查看当前内核:uname -r;保留最新 2 个内核:sudo package-cleanup --oldkernels --count=2
  • 安全删除流程
    • 先用 du/df/ncdu 确认目标与路径;对正在写入的日志,优先用 truncate -s 0 <file>> <file> 清空,避免直接删除导致服务异常;删除前做好备份。

0