插件窝 干货文章 linux文件夹du的大小是什么

linux文件夹du的大小是什么

文件 大小 磁盘 占用 411    来源:    2025-04-14

在Linux系统中,du(Disk Usage)命令用于计算文件和目录的磁盘使用空间。关于文件夹的du大小,以下是关键点解析:


1. du 输出的含义

  • 默认行为:直接运行 du <目录名> 会递归显示该目录下每个子目录的磁盘使用量(以磁盘块为单位,通常为1块=512字节或4KB,取决于系统)。
  • 常见用法bash du -sh /path/to/directory # -s: 仅显示总计;-h: 人类可读格式(KB/MB/GB) 输出示例: 4.8G /home/user/documents 表示该目录实际占用 4.8GB 磁盘空间。

2. duls 的区别

  • du:计算文件实际占用的磁盘空间(考虑文件系统块分配、稀疏文件等)。
  • ls -l:显示文件的逻辑大小(即文件内容实际字节数,可能小于磁盘占用)。

    示例
    一个1字节的文件在ls中显示为1字节,但du可能显示4KB(因文件系统按块分配)。


3. 影响du大小的关键因素

  • 文件系统块大小:即使文件很小,也会占用至少1个块(通过 tune2fs -l /dev/sdX | grep 'Block size' 查看)。
  • 硬链接du默认只计算一次硬链接文件的空间。
  • 稀疏文件du报告实际分配的块,而非文件逻辑大小。
  • 挂载点du默认不跨越文件系统边界(需加 -x 选项限制)。

4. 常用命令选项

选项 作用
-h 以KB/MB/GB显示
-s 仅显示总计
--apparent-size 显示逻辑大小(类似ls
-a 显示每个文件的占用
-c 最后输出总计
--max-depth=N 限制递归深度

示例bash du -h --max-depth=1 /var # 查看/var下一级子目录大小


5. 常见问题排查

  • dudf不一致:可能是已删除文件仍被进程占用(通过 lsof +L1 检查未释放空间)。
  • 隐藏大文件:结合 find 定位: bash find /path -type f -size +100M -exec du -h {} +

总结

du报告的文件夹大小是其在磁盘上的实际占用空间,而非文件内容的简单相加。理解文件系统块分配、硬链接等机制有助于更准确分析存储使用情况。如需快速查看目录总大小,du -sh是最常用的命令。