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

时间:2011-12-01 07:30:35

标签: linux unix

我已经浏览了很多文档。在文件系统中占用任何空间的硬链接或软链接有很多不一致。任何人都可以为我清除这一点吗?

对于硬链接,我发现了这个:

我的主目录中有一个文件c1,我在同一个目录中与d1硬连接.c1和b1的大小为11字节。现在我正在做“ls -lrt”列出的所有文件的总字节数(不包括d隐藏的文件)是64字节。现在,当我删除硬链接d1并再次做一个ls -lrt它给了我60个字节。这并不意味着硬链接占用硬盘空间,但很多docs.negate这个事实,为什么?

我可以检查相同的方式为文件创建一个软链接,然后删除它,但由于我的软链接只有2bytes大小,我不认为删除它会对列出的圆形总大小有任何重大影响输出ls -lrt。

那是什么呢?

4 个答案:

答案 0 :(得分:10)

当然他们占据(一点点)空间:

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

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

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

答案 1 :(得分:6)

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

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

但是,空间量 minimal ,并且[几乎总是]被认为与文件本身的数据无关。

答案 2 :(得分:6)

ls错了!

多次计算硬链接文件。 ls -l只会将每个条目的块编号加起来,无论它有多少个硬链接。

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

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

答案 3 :(得分:1)

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