【发布时间】:2014-07-20 12:18:49
【问题描述】:
我的服务器中有一个名为 today.log 的文件。
ls -l today.log 显示 400GB。
du -sh today.log。显示 240GB
ls和du有什么区别...
【问题讨论】:
我的服务器中有一个名为 today.log 的文件。
ls -l today.log 显示 400GB。
du -sh today.log。显示 240GB
ls和du有什么区别...
【问题讨论】:
du 显示文件使用了多少磁盘。 ls 显示文件有多大。这两个值可以不同。带孔的文件占用的空间比它们的大小要少。大多数文件并没有完全填满文件系统的块,因此它们占用的空间超过了它们的大小。具有单个字节的文件仍至少占用一个完整块。 (通常为 512 或 1024 字节。)例如,考虑在位置 183738475(随机输入的数字)处具有单个字节的文件。该文件可以使用单个块存储在磁盘上(每当内核向文件系统查询文件中的单个字节以外的字节时,文件系统会将它们报告为零,并且不需要存储任何内容。并非所有文件系统都有效这种方式。)但是文件的大小是183738475,所以ls会报告这个,du会报告文件系统使用了多少块。 du -h 将报告使用的块数乘以转换为人类可读格式的块大小。请记住,实际数字会因您的文件系统而异。例如:
$ echo > foo; ls -l foo |awk '{print $5}'; du foo; du -h foo
1
8 foo
4.0K foo
此文件大小为 1 字节,但占用磁盘上的 8 个块,块大小为 512,因此这 8 个块占用 4k。 (我的文件系统针对大文件进行了优化,小文件比较浪费空间。)
【讨论】: