Linux 硬链接或软链接是否占用文件系统中的任何空间?

Linux 硬链接或软链接是否占用文件系统中的任何空间?,linux,unix,Linux,Unix,我看过很多文件。在硬链接或软链接占用文件系统中的任何空间方面都有很多差异。有人能帮我澄清一下吗 对于硬链接,我发现: 我在我的主目录中有一个文件c1,我在同一目录中硬链接了d1。c1和b1都有11个字节的大小。现在当我做“ls-lrt”时,列出的所有文件(当然不包括d个隐藏文件)的总字节数是64个字节。现在,当我删除硬链接d1并再次执行ls-lrt时,它会给我60个字节。这不意味着硬链接会占用硬盘空间,而是会占用大量文档。否定这个事实,为什么 我可以用同样的方法为文件创建一个软链接,然后将其删除

我看过很多文件。在硬链接或软链接占用文件系统中的任何空间方面都有很多差异。有人能帮我澄清一下吗

对于硬链接,我发现:

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

我可以用同样的方法为文件创建一个软链接,然后将其删除,但由于我的软链接只有2字节大小,我认为删除它不会对ls-lrt输出中列出的四舍五入总大小产生任何显著影响


这是怎么回事?

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

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

但是,空间量是最小的,并且可以[几乎总是]认为与文件本身中的数据不相关。

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

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

  • 符号链接也为目录条目占用空间,另外还有一个inode,它保存有关链接属性以及链接目标本身的信息


由于大小很小(文件中有11个字节的数据),开销比实际数据要大。但是,对于更大的文件,这种少量字节的开销可以忽略不计。

简单来说,硬链接是对文件系统中inode的引用。某些实用程序会错误地读取此信息。它不会占用任何磁盘空间

ls
是错误的

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

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


试试du-Ssb。。这将为您提供正确的磁盘使用量(字节)。除非您使用
-l
开关,该开关将再现
ls
的行为。

从何时开始inode不占用空间。。。inode确实占用了空间,先生,我100%同意,但是提到inode就整个磁盘空间而言是可以忽略不计的。我希望这澄清了我的答案。这完全是错误的。链接是一条需要存储在“某处”的信息。根据您的文件系统,处理方式略有不同,但需要存储。无聊吗?对7年前的事情做出回应,我已经澄清了这一点。请延伸你的最后一句话:。。。除非它是一个有很多小文件的系统,并且你没有可用的索引节点。在某些文件系统上,这是一个现实的场景,我曾经遇到过,尽管没有与符号链接或硬链接结合使用。