du 和 df 都是Linux系统的命令
du (Disk Usage): 查找文件和目录的磁盘使用情况
$ du /home/ # du获取/home/ 目录下所有文件及其子文件的使用情况 (递归查询)
$ du -h /home/ # 以人类可读的方式查看文件使用情况 (kb、mb 等显示文件/目录大小)
$ du -sh /home/ # 目录的总磁盘大小 (大小汇总)
$ du --max-depth=2 /home/ # 检索目录时 只递归两层进行检索 其余的忽略
df (disk free): 显示设备名称、总块数、总磁盘空间、已用磁盘空间、可用磁盘空间和文件系统上的挂载点
$ df
$ df -h # 以人类可读的方式 查看
$ df -hT /home/ # 显示特定分区的信息
PS.
df 和 du 在计算磁盘大小时 有本质的区别
du 会对文件逐一进行计算,如果要查找的文件目录很多 du会很慢 且会输出很多条信息
df 读取分区的超级块信息 获取分区使用情况.直接读取磁盘的元信息,速度会很快
这里会有一个情况就是,目录里不存在文件,但是磁盘上还有数据的情况。
常见的情况
1、还有进程持有这个文件的句柄,那么这个文件就不会真正在磁盘中被删除, 分区超级块中的信息也就不会更改。
2、回收站机制,有可能文件含有回收站机制。目录下文件被移到了回收站,但是磁盘上的数据还存在。
参考链接