'ls -l' 命令的输出中目录的大小是什么意思?

Hem*_*ant 77 ls size directory

ls -l命令输出中目录的大小是什么意思?

txw*_*ger 54

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

  • @ЯрославРахматуллин [目录条目](http://pubs.opengroup.org/onlinepubs/009695299/basedefs/dirent.h.html) 由 inode 编号和文件名组成。 (6认同)
  • 当一个目录包含数千个文件时,目录本身的大小很容易> 10KB (4认同)
  • 那么目录的“大小”只与里面的文件数有关,与文件的大小无关? (4认同)

sch*_*ily 17

的印有“的目录的大小”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.

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

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

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


h3r*_*ler 15

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

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

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

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


Sté*_*las 5

目录只是一个目录,就像电话目录一样。它只是一个带有数字列表和旁边的名称的文件。每个编号引用文件系统中的一个文件(一个 inode 编号),名称是文件名。

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

  • @naxa,这取决于文件系统,甚至在文件系统(如 ext4)中,这取决于您启用的选项,所以我宁愿将其保留为“它取决于文件系统”,而不是尝试详尽无遗,这不会很与这个问题相关。 (3认同)