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

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

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

答案1

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

答案2

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

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

  • 在当前通常命名的历史 UNIX 文件系统中v7-fs,目录重复了 16 字节条目,其中包含 16 位 inode 号和 14 字节文件名。目录的“大小”对于read(2)操作来说是有意义的,并且总是增长或保持原样。.和条目..是通过手动将它们硬链接到当前目录和上一级目录来创建的。正常的空原始目录的链接计数是 2。

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

  • WOFS我在 1988 年夏天到 1991 年 5 月之间设计和实现的文件系统中,目录总是报告“大小”0,并且从来没有可以使用调用读取的内容类型read(2)。这是因为这WOFS是第一个写时复制文件系统,并且WOFS文件中报告它们所在的目录,而不是列在目录中。如果您WOFS使用 读取目录readdir(),您只能获取预期条目的数据,而不会获取.和 的数据..。空目录的链接计数WOFS为 1,整个行为完全符合 POSIX 标准。

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

  • 与 ZFS 类似,WAFL 复制了WOFS. Netapp 是在论文发表WAFL3 年后编写的WOFS,WAFL 是写时复制的,但 WAFL 似乎报告的“大小”值可能是假设目录有内容的“真实目录大小”。

答案3

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

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

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

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

答案4

目录只是一个目录,就像电话目录一样。它只是一个包含数字列表和数字旁边的名称的文件。每个数字引用文件系统中的一个文件(索引节点号),名称就是文件名。

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

相关内容