我想计算或估计一下在 Linux 上清空 1000 个文件夹或 1000 个空文件需要多少磁盘空间。您能估算一下这需要多少磁盘空间吗?
答案1
每个文件夹一开始会占用 1 个块,再加上 Linux 内部目录条目中包含的任何数据。块大小因文件系统而异。要检查块大小,您可以运行blockdev 命令。
根据 GNU 文档,目录条目包含以下内容:
char d_name[] 这是以空字符结尾的文件名组件。这是所有 POSIX 系统中唯一可以信赖的字段。
ino_t d_fileno 这是文件序列号。为了与 BSD 兼容,您也可以将此成员称为 d_ino。在 GNU/Linux 和 GNU/Hurd 系统以及大多数 POSIX 系统上,对于大多数文件,这与 stat 将为文件返回的 st_ino 成员相同。请参阅文件属性。
unsigned char d_namlen 这是文件名的长度,不包括终止空字符。其类型为 unsigned char,因为这是适当大小的整数类型。此成员是 BSD 扩展。如果此成员可用,则定义符号 _DIRENT_HAVE_D_NAMLEN。
unsigned char d_type 这是文件的类型,可能未知。为其值定义了以下常量:
DT_UNKNOWN 类型未知。只有某些文件系统完全支持返回文件类型,其他文件系统可能始终返回此值。
DT_REG 常规文件。
DT_DIR 一个目录。
DT_FIFO 命名管道或 FIFO。请参阅 FIFO 特殊文件。
DT_SOCK 本地域套接字。
DT_CHR 字符设备。
DT_BLK 块设备。
DT_LNK 一个符号链接。
总共有 3 个字符串。它们的大小将根据名称的长度而变化。
此外,还需要考虑权限代码,这将是另一个字节左右。
添加您的块大小(通常默认值为 4 KB)并计算总数。
如果我们制作一个 SWAG,其中所有内容总计为 5KB 数据,那么整个 SWAG 所消耗的总空间将达到大约 5000KB。
我在我的 RHEL 服务器上尝试了这个,一个空文件夹使磁盘利用率增加了 4 千字节。 这表示文件夹保留的空间,直接来自文件系统中使用的块大小。由于我使用 4kb 块,因此文件系统保留了 4kb。
在您自己的服务器上测试:
从命令提示符运行:df -hk
请记下“AVAILABLE”列下的数值。
mkdir“随便”
再次运行 df -hk 并注意差异。