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 则是挨个数床位。