linux的硬链接"ln "

硬链接 

    硬链接创建的语法是不加参数选项,直接“ln”即可

image.png

我们可以注意到创建硬连接前,“aaa.txt”显示的“inode”连接数为“1”,创建的硬链接文件“bbb.txt”后,它的源文件是“aaa.txt”与软链接文件“bbb.txt”的“inode”链接数目显示为“2”,也就是说他们使用了相同的“inode”如下图:

image.png

且这两个文件的大小与实际是一致,那如何查找硬连接文件呢?但实际上是不太好区分,比如让我们去找这个硬链接文件在哪,不太好找,除非是自己创建的,但有一个“find”命令是可以查找的,这里是说硬链接文件,所以先不说“find”命令。

总结:硬链接文件的特性,创建了一个硬链接文件,这个硬链接文件与它源文件的“inode”号一致相互为“硬链接文件”,不管谁是源文件或目标文件都无所谓,都一样。这点与软链接有所不同,软链接仅仅是一个快捷方式,它必须要有源文件且不能够删除源文件。硬链接删除任意一个文件还是存在的,不受影响,只是“inode”链接数目少了一个。因为硬链接相当于多一个文件使用了相同的“inode”号。打比方说:咱们用肉眼看到的文件名实际上它是这个文件的另一个名称。真正存数据的,存这个文件信息的在哪?如下图:

image.png

就是这“inoe”号 存放了数据与信息。“inode”号代表着它是一个“inode”。是存在文件系统中的特殊东西,它会去记录这个文件的属性详细信息,也相当与“ls -l”这些信息:

image.png

可以得出硬链接(hard link)的其实是命名一个文件名称并指向这个“inode”,真正的文件实在这个“inode”,那个文件看到的仅仅是一个名称这个文件不怕被删掉而丢出数据,因为它还有另一个文件名称指向这个“inode”,那“硬连接”文件会不会占用空间呢?当然是不会的,仅仅是一个文件的另一个名称而已,这就是硬连接。硬连接是不允许对目录做硬连接的,如下图:

image.png

不能在不同文件系统的文件间建立链接。因为 inode 是这个文件在当前分区中的索引值,是相对于这个分区的,当然不能跨越文件系统了。比如在“boot”下某个文件这一个硬连接到“root”下,如下图:

image.png

为什么呢?因为这两个分区是存在有相同“inode”的,比如“boot”下有个“inode”为“83”而“/”下同样也有一个“inode”为“83”的,也就是说分区之间都各自有独立的“inode”体系,在格式化分区的时候预先分配好的,如下图:

image.png

“boot”分区下有个“inode”为“83”,“/”分区下面也有一个“inode”为“83”的,现在把“boot”下“inode”号为“83”的创建硬连接到“/”下,那是不可能的,这是不允许的。

总结硬连接的特性:只能对文件做硬连接,不能对目录做硬连接且不能夸分区做硬连接,硬连接文件可以删除因为它还有其他文件名称使用这个“inode”。硬连接是一个文件的另一个名称,这个名称有多个,每个文件名称都指向同一个“inode”。这个文件名称可以删掉,但不能全部删掉,至少有一个文件名称指向这个“inode”。全部删掉也就是把这个文件删掉了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.gzievs.net.cn/post/51.html

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。