Linux硬链接和软链接

 

一个系统里面可以存放多少文件?

依据剩余i 结点的个数。在linux系统中,任何一个独立(注意:这里强调是独立的文件)的文件,都会为其分配一个i 结点,它们是对应的,

然后通过i结点再找到相应的文件的实际存储内容。

 

硬链接实际上跟我们的源文件是一样的。而软链接则是重新建立了一个独立的文件。

事实上,硬链接的本质就是一条文件名和i结点的关联记录而已。

 

删除了源文件之后,硬链接还能正常显示原本的内容,而软链接则提示文件不存在

软链接是建立了另一个新的独立的文件,它指向源文件,因为源文件没了,所以它就不能正常指向了;而硬链接为什么依旧能显示原来的内容呢?

硬链接实际是一条文件名与i 结点的记录。所以,在删除源文件的时候,系统则将链接数减1;只有将所有指向文件内容的指针,也即链接数减为0时,

内核才会把文件内容从磁盘上删除。

 

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一些不足之处:
1.不允许给目录创建硬链接。
2.不可以在不同文件系统的文件间建立链接。
因为 inode 是这个文件在当前分区中的索引值,是相对于这个分区的,当然不能跨越文件系统了。

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,

甚至可以跨越不同机器、不同网络对文件进行链接。

 

软链接与硬链接,区别不仅仅是在概念上,在实现上也是完全不同的。

区别:
1.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;

2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;

3.链接数目是不一样的,软链接的链接数目不会增加;

4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了

5.软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

当然软链接也有硬链接没有的缺点:

因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,

想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

 

posted @ 2021-11-05 14:00  listxue  阅读(67)  评论(0编辑  收藏  举报