硬链接和软(符号)链接在linux文件系统中占用相同的空间吗?



我看了很多文档。它们在文件系统中占用任何空间的硬链接或软链接上有很多差异。谁能帮我清理一下?

对于硬链接,我发现如下:

我有一个文件c1在我的主目录,我硬链接到d1在同一目录。c1和b1的大小都是11字节。现在,当我执行"ls -lrt"命令时,列出的所有文件(当然不包括d个隐藏文件)的总字节是64字节。现在,当我删除硬链接d1并再次执行ls -lrt时,它会给我60字节。这并不意味着硬链接占用硬盘空间,而是大量文档。否定这个事实,为什么?

我可以用同样的方式检查为文件创建一个软链接,然后删除它,但是由于我的软链接只有2bytes大小,我认为删除它不会对ls -lrt输出中列出的四舍整总大小有任何显着影响。

这是怎么回事?

当然它们占用(一点点)空间:

  • 硬链接文件有多个目录项。每个条目占用目录本身的空间,但从那时起,它们共享相同的结构:inode和数据区是共享的。但我不确定这是如何计算的;

  • 可能目录项总是占用一定大小的倍数。
  • 符号链接也占用目录条目的空间,加上一个inode,该inode保存有关链接属性和链接目标本身的信息。

对于较小的大小(文件中只有11字节的数据),开销比实际数据更重要。但是,对于较大的文件,这几个字节的小开销可以忽略不计。

ls是错误的!

对硬链接文件进行多次计数。ls -l只会将每个条目的块号相加,无论它有多少个硬链接。

(使用ls -1si显示每个文件的inode号以及块使用情况)

请尝试du -Ssb .。这将为您提供以字节为单位的正确磁盘使用情况。除非您使用-l开关,否则将复制ls的行为。

是。它们都占用空间,因为它们都有目录条目。

硬链接条目(实际上是一个通常共享一个inode的"普通条目")占用空间,符号链接条目也占用空间,它必须以某种方式存储链接路径(文本本身)。由于分配/布局规则由确切的文件系统实现决定(例如块/树的大小和符号链接的存储方式),实际所需的空间略有不同。

然而,空间的数量是最小的,并且可以[几乎总是]被认为与文件本身的数据无关。

简而言之,硬链接是对文件系统内索引节点的引用。一些实用程序会错误地读取这个。它不会占用任何磁盘空间。

最新更新