Linux服务器磁盘满了,如何判断大文件在哪里?哪些文件可以删除?

今天用df -h 命令发现服务器磁盘空间快满了。

当服务器磁盘空间不足时,可通过以下步骤定位占用空间较大的目录和文件,以下操作基于Linux系统(以你提供的df -h输出为例,磁盘 /dev/vda1 挂载在 / 根目录,已使用81%):

一、快速定位大文件/目录的常用工具

1. du 命令(磁盘使用情况统计)

功能:递归扫描指定目录,统计各子目录/文件的磁盘占用大小。
常用参数

  • -h:以人类可读的格式显示(如GB、MB)。
  • -s:仅显示目录/文件的总大小(不显示子项)。
  • -d N:指定扫描深度(N为数字,如-d 1表示仅扫描当前目录的一级子目录)。

操作示例

# 扫描根目录(/)下的一级子目录,按大小排序(从大到小)
du -h --max-depth=1 / | sort -rh

# 查看当前用户家目录(~)的总大小
du -sh ~

输出解读
执行后会列出各目录的大小,如:

40G     /var
30G     /usr
5G      /home

数值最大的目录即为占用空间最多的位置。

2. ncdu 命令(可视化磁盘分析工具,需安装)

功能:交互式图形界面,更直观地展示目录结构和文件大小,支持键盘操作(如方向键、删除文件等)。
安装方法(以CentOS为例):

yum install ncdu -y

使用方法

ncdu /  # 扫描根目录
  • 方向键 移动光标,Enter 键进入子目录,d 键标记文件/目录删除(需谨慎!)。

3. find 命令(查找大文件)

功能:按文件大小过滤,快速定位单个大文件(如超过1GB的文件)。
常用参数

  • -size +Nc:查找大于N字节的文件(c为字节,M为MB,G为GB)。

操作示例

# 查找根目录下大于1GB的文件
find / -type f -size +1G -exec du -h {} \;

# 查找当前目录下最大的10个文件
find . -type f -exec du -h {} \; | sort -rh | head -n 10

二、常见大文件目录分析

根据Linux系统结构,以下目录常出现大文件,可优先检查:

目录路径 常见大文件类型 清理建议
/var/log 系统日志(.log、.log.gz) 删除过期日志,或配置日志轮转(logrotate)自动清理。
/var/lib 应用数据(如Docker镜像、数据库文件) 清理无用的Docker镜像/容器、数据库备份或临时文件。
/usr/local 自定义安装的软件或库 删除不再使用的软件安装包或编译缓存。
/home 用户文件(如上传文件、备份数据) 清理用户无用文件或迁移数据至外部存储。
/tmp 临时文件 直接清空(需确保无正在使用的进程):rm -rf /tmp/*
/root 管理员文件(如脚本、下载文件) 清理备份文件或临时脚本。

三、清理文件的注意事项

  1. 谨慎操作

    • 避免删除系统关键文件(如/etc/bin目录下的文件)。
    • 使用rm命令前务必确认文件用途,建议先备份重要数据。
  2. 日志清理

    • 系统日志通常位于/var/log,可通过logrotate服务自动管理,避免手动删除导致服务异常。
  3. 应用数据清理

    • 若使用Docker、MySQL等服务,需通过对应工具清理(如docker system prune、数据库备份删除)。
  4. 保留可用空间

    • 建议至少保留10%的磁盘空间,避免因空间不足导致系统故障。

四、示例操作流程

假设通过du -h --max-depth=1 /发现/var目录占用40GB:

# 进入/var目录,继续扫描二级子目录
du -h --max-depth=1 /var | sort -rh

# 发现/var/lib/docker占用30GB(Docker镜像/容器数据)
docker system prune -a  # 清理所有无用镜像和容器(谨慎操作!)

通过以上工具和方法,可逐步定位并清理大文件,释放磁盘空间。操作前建议先备份重要数据,并确认文件用途,避免误删导致服务异常。

posted @ 2025-05-31 15:03  夏威夷8080  阅读(1021)  评论(0)    收藏  举报