目录的大小在'ls -l'命令的输出中意味着什么?


Answers:


45

这是磁盘上用于存储目录(即属于该目录的文件表)的元信息的空间大小。如果它是1024,则意味着为此使用了磁盘上的1024个字节(始终分配完整的块)。


3
并且当一个目录包含数千个文件时,目录本身的大小可以轻松地> 10KB
glenn jackman 2011年

1
@txwikinger我认为目录包含索引节点列表,而不是实际的文件名。
ЯрославРахматуллин

6
@ЯрославРахматуллин 目录条目包含一个索引节点编号和一个文件名。
200_success

2
因此,目录的“大小”仅与内部文件的数量有关,与文件的大小无关吗?

1
@李:是的,是的。

14

印刷的“目录大小” ls -l(与任何文件类型一样)是stat()调用中报告的值statbuf.st_size

st_size对目录意味着什么,完全取决于文件系统类型。除非您了解文件系统类型并了解其概念,否则您无法从中的值推论出任何东西st_size

  • 在当前通常命名为的历史性UNIX文件系统中v7-fs,目录重复了16个字节的条目,其中包含16位的索引节点号和14个字节的文件名。目录的“大小”对于read(2)操作而言是有意义的,并且始终保持不变。的...条目由手动硬联它们免受电流和目录上方的水平产生。一个健全的空少女目录的链接计数为2。

  • 在自1989年以来被称为BSD-4.2文件系统(SVr4)中ufs,目录是一系列可变长度记录,这些记录使用的格式不被授予稳定的格式,因此不允许用户空间命令读取该格式。报告的“大小”是与v7-fs中一样的字节大小,该大小通常按原样增加或保持不变,但是在某些情况下,较新版本的文件系统可能会缩小大小-但并非总是如此。报告的空目录链接计数为2,与相同v7-fs

  • WOFS1988年夏季至1991年5月之间设计和实现的文件系统中,目录始终报告“ size” 0,并且永远不会包含可通过read(2)调用读取的内容类型。这是因为这是WOFS第一个写时复制文件系统,并且是因为在WOFS文件中报告了它们所在的目录,而不是在目录中列出。如果WOFS使用阅读目录readdir(),则只会获取预期条目的数据,而不会获取.和的数据..。一个空目录的链接计数WOFS为1,整个行为完全符合POSIX。

  • 在中ZFS,这是在阅读WOFS论文后实施的。ZFS是一个写时复制文件系统,其作者并不否认他们从复制了概念WOFS。ZFS上的目录报告number of directory entriesin st_size,因此对于目录数据中的已占用磁盘空间,报告的“大小”没有实际意义。ZFS目录中没有...条目,但是如果调用readdir(),这些条目将被伪造并返回前两个操作。ZFS是列表中唯一不支持硬链接目录的FS,但是报告的目录链接数始终为2。ZFS中的这两个不规则之处是为了减少非POSIX历史程序中的混乱而实现的。

  • 与ZFS相似,WAFL复制了的部分想法,但不是全部WOFS。Netapp WAFL是在WOFS论文发表三年后写成的,WAFL是写时复制的,但是WAFL似乎报告了“大小”值,在目录具有内容的假设下,该值可能是“实际目录大小”。


13

目录为有关其自身及其内容的元数据保留4096个字节(至少)。

另外,4096字节是ext2 / ext3 / ext4文件系统的默认分配单位(块),因此目录不能更小。

在不同的文件系统上,您可能会找到具有不同默认大小的目录,这是由于文件系统的默认块大小所致。

目录大小在填充时也可以动态增长,但是一旦填充,保留给元数据的空间就无法在不删除目录的情况下重新分配。


1
您指的是什么元数据?
斯特凡Chazelas

1
详细信息取决于文件系统,但通常包括元数据,如文件名,索引节点号,文件类型(文件,目录,FIFO,套接字,设备节点,符号链接等),所有者,组,权限,属性,ACL,符号链接目标。
cas 2012年

6
@CraigSanders,该目录包含对象的名称和相应的inode数。索引节点包含对象的类型,所有者/组,权限,对保留ACL和扩展属性的位置的引用,...否则将严重破坏POSIX文件系统语义。
vonbrand

我的UFS在每个目录中只为自己的元数据保留512个字节。
FUZxxl

4

目录只是一个目录,例如电话目录。它只是一个带有数字列表和数字名称的文件。每个数字都引用文件系统中的一个文件(一个索引节点编号),名称是文件名。

您需要磁盘空间来保存该数据,数据的分配,增长和收缩方式取决于文件系统。


您可以包括保留哪些元数据的实际详细信息以及有关大小增长的块分配注意事项。如果已经给出了很好的寓言,它将做出更准确的答案。:)
n611x007 2014年

3
@naxa取决于文件系统,甚至在文件系统内(如ext4),也取决于您启用的选项,因此我宁愿将其保留为“取决于文件系统”,而不是尝试详尽无遗,这不是很与这个问题有关。
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.