df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv 914G 629G 247G 72% /
du 和 df 是两种常用的 Linux 命令,虽然都用于查看存储空间的使用情况,但它们的作用和工作方式有很大的区别:
-
du 命令
• 全称: Disk Usage(磁盘使用情况)。
• 用途: 显示目录或文件的实际空间使用情况。
• 工作方式: 遍历目录中的文件,统计它们占用的存储空间。
常用选项:
• du -h:以人类可读的形式(如 KB、MB、GB)显示每个目录的大小。
• du -sh:仅显示指定目录或文件的总大小。
• du --max-depth=N:限制显示的目录深度。例如,--max-depth=1 只显示当前目录的大小。
适用场景:
• 用于检查某个目录下的文件和子目录的空间占用。
• 分析哪些文件或子目录占用了大量磁盘空间。
示例:
查看当前目录的大小
du -sh .
输出:50G .
查看 /home 目录下每个子目录的大小(只查看一级子目录)
du -h --max-depth=1 /home
输出:
100G /home/user1
50G /home/user2
200G /home
-
df 命令
• 全称: Disk Free(磁盘可用空间)。
• 用途: 显示文件系统的总大小、已用空间、剩余空间以及挂载点。
• 工作方式: 通过读取文件系统元数据获取信息,而不是逐个扫描文件。
常用选项:
• df -h:以人类可读的形式(如 KB、MB、GB)显示每个分区的总大小、已用空间和可用空间。
• df -T:显示文件系统类型(如 ext4、xfs 等)。
• df -i:显示 inode 的使用情况。
适用场景:
• 查看整个磁盘分区的使用情况。
• 检查文件系统是否即将达到容量限制。
示例:
查看所有分区的使用情况
df -h
输出:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 10G 38G 21% /
/dev/sda2 100G 60G 40G 60% /home
- 主要区别
属性 du df
关注点 文件或目录的大小 文件系统(分区)的总使用和剩余空间
统计范围 统计指定目录或文件的实际使用空间 查看整个磁盘分区的空间占用情况
工作方式 遍历目录下的文件,逐一统计 从文件系统元数据读取空间信息
结果粒度 可以显示每个文件和子目录的使用情况 仅显示整个分区的总量、已用和可用空间
实际占用 vs 逻辑空间 统计的是文件的实际占用空间(包括重复和硬链接) 统计的是分区的逻辑空间
速度 较慢(需要遍历文件系统) 较快(直接读取文件系统信息)
常用场景 找出哪些目录或文件占用大量空间 检查分区是否快满,了解总可用空间
- 示例对比
假设有一个目录 /home/user1 占用 100G 的空间,并且整个根分区 / 总共 500G,已用 300G。
du 示例
du -sh /home/user1
输出:
100G /home/user1
• du 仅统计 /home/user1 目录及其子目录实际使用的 100G 空间。
df 示例
df -h /
输出:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 500G 300G 200G 60% /
• df 显示整个根分区 / 已使用 300G,可用空间 200G。
总结
• 用 du: 当需要检查特定目录或文件的大小时。
• 用 df: 当需要了解整个磁盘分区的总使用情况时。
• 它们互补使用,能帮助更全面地分析存储使用情况。