首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >du -h和ls -lh有什么区别?

du -h和ls -lh有什么区别?
EN

Server Fault用户
提问于 2011-07-13 20:31:27
回答 4查看 29.1K关注 0票数 35

我很难掌握读取文件大小的正确方法,因为每个命令都会给出不同的结果。我还在http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html上看到一个帖子,上面写着:

du给出文件的大小,因为它驻留在文件系统上。(将永远给你一个可被1024除的结果)。ls会给出文件的实际大小。您要查看的是文件的实际大小与它占用的磁盘空间大小之间的差异。(也称为文件系统效率)。

它驻留在文件系统上和实际大小有什么区别?

EN

回答 4

Server Fault用户

回答已采纳

发布于 2011-07-13 20:41:07

这称为松弛空间

当数据文件小于文件系统能够跟踪的最小数据单元时,单个位和字节之上的每个抽象层都会导致空间浪费。扇区、集群或块中的这种浪费空间通常称为空闲空间,通常不能用于存储其他数据。对于单个256字节扇区,最大浪费空间为255字节.对于64 64集群,最大浪费空间为65,535字节。

因此,如果您的文件系统以64 KB为单位分配空间,并且存储一个3 KB文件,那么:

  • 文件的实际大小是3KB。
  • 该文件的驻留大小为64 KB,因为该单元中剩余的61 KB不能分配给其他文件,因此丢失。

注意:一些文件系统支持块子分配,这有助于通过将多个小文件(或大型文件的尾部)分配到同一个块来缓解这个问题。

票数 53
EN

Server Fault用户

发布于 2011-07-13 23:22:15

这里还有另一种选择,它还没有被覆盖--稀疏文件。在这种情况下,du显示的大小比简单的ls -l要小,因为ls将文件的“大小”报告为明显的大小(如果需要大量的零,您可以读取的字节数),而du将继续使用实际使用的磁盘块数。

有趣的技巧:创建大量的大型稀疏文件,然后用你有多少磁盘空间给你的朋友留下深刻印象(“看,我在我的硬盘上存储了7万个1TB文件!”)好吧,那就没那么有趣了。

票数 25
EN

Server Fault用户

发布于 2011-07-13 20:40:34

文件系统由块组成。文件不必整齐地放入块中。如果一个文件是1024字节,它的大小( ls和du )将是1024。如果文件大小为1025,则大小在ls中为1025,du中为2048。

注意,上面的示例假定块大小为1024。更大的块体尺寸是现在的常态,

代码语言:javascript
复制
ls -l fred
-rw-r--r-- 1 iain users 1024 Jul 13 22:06 fred

du -h fred
8.0K    fred
票数 6
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/290088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档