df -h /home

Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  914G  629G  247G  72% /

du 和 df 是两种常用的 Linux 命令,虽然都用于查看存储空间的使用情况,但它们的作用和工作方式有很大的区别:

  1. 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

  1. 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

  1. 主要区别

属性 du df
关注点 文件或目录的大小 文件系统(分区)的总使用和剩余空间
统计范围 统计指定目录或文件的实际使用空间 查看整个磁盘分区的空间占用情况
工作方式 遍历目录下的文件,逐一统计 从文件系统元数据读取空间信息
结果粒度 可以显示每个文件和子目录的使用情况 仅显示整个分区的总量、已用和可用空间
实际占用 vs 逻辑空间 统计的是文件的实际占用空间(包括重复和硬链接) 统计的是分区的逻辑空间
速度 较慢(需要遍历文件系统) 较快(直接读取文件系统信息)
常用场景 找出哪些目录或文件占用大量空间 检查分区是否快满,了解总可用空间

  1. 示例对比

假设有一个目录 /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: 当需要了解整个磁盘分区的总使用情况时。
•	它们互补使用,能帮助更全面地分析存储使用情况。