df 命令用于显示 Linux 系统上各文件系统的磁盘使用情况统计,du 命令用于显示指定目录或文件所占用的磁盘空间。两个命令都能查询磁盘使用情况,但两者有什么区别呢?今天杜老师聊一下 df 和 du 的区别!

命令选项

df 命令的选项列表如下:

选项作用
-a包含所有文件系统
-h使用人类易读的格式
-H类似于 -h,但以 1000 为进制而非 1024
-i列出 Inode 信息,不列出已用 Block
-k等同于 –block-size=1024
-l仅列出本地文件系统
-m等同于 –block-size=1048576
–no-sync获取信息前不同步
–sync获取信息前同步
-t仅列出指定类型的文件系统
-T显示文件系统类型
-x仅列出非指定类型的文件系统
–help显示帮助
–version输出版本信息

du 命令的选项列表如下:

选项作用
-a显示目录中单个文件的大小
-b显示目录或文件大小时,以 byte 为单位
-c除显示单个目录或文件大小外,还显示所有目录或文件的总和
-D显示指定符号链接的源文件大小
-h使用人类易读的格式
-H类似于 -h,但以 1000 为进制而非 1024
-k以 K 为单位
-l重复计算硬链接文件
-L显示选项中所指定符号链接的源文件大小
-m以 M 为单位
-s仅显示总计
-S显示单个目录的大小时,不包含其子目录的大小
-x以最初处理时的文件系统为准,若遇到其他不同文件系统的目录则略过
-X指定目录或文件
–exclude略过指定的目录或文件
–max-depth超过指定层数的目录将予以忽略
–help显示帮助
–version输出版本信息

命令区别

df 命令从文件系统层面考虑,不仅统计文件占用的空间,还要统计被命令或程序占用的空间,最典型的情况是文件已删除但程序尚未释放空间;du 命令是面向文件的,只会计算文件或目录占用的空间。

如果把磁盘比作大学的宿舍,df 是从住宿登记表中查询,du 则是挨个数床位。