"飞吧,去寻觅红色的流星!"
一、软硬链接简介
软链接: 软链接又叫 符号链接 ,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
软链接
硬链接: 硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。再说白点,所谓 链接 无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
硬链接
举个例子,软链接很像我们Windows平台下的快捷方式 任何一个快捷方式都是一串路径!
双击快捷方式,就等于去这个路径底下,找到.exe文件运行。
二、Linux下如何建立软硬链接
ln (-s(软链接选项)) file.exe(被链接的文件) flie.link(链接文件)
三、再谈软硬链接
(1)软链接和硬链接的区别
你说了这么多,我还是知道软硬链接有什么区别。它们各自都是干什么用的!
从上面的图,你最直观的感受是什么?
当然是inode! 硬链接的inode 和 链接文件的inode是同样一个。 但是软链接的inode却是独立的!
因此,它们两个的本质区别在于: 是否是新创建了文件! 本质在于,一个inode一个独立的文件!
创建硬链接系统做了什么?
建立硬链接根本没有创建文件! 因为没有独立的inode。因此你这个硬链接的文件属性内容,一定是别人的属性集合和inode集合。
如果此时我们删除原文件呢?
我们此时可以看到,文件的inode的链接数从2变成了1。 那么文件是否还存在?! 答案是是的!
inode内部有一个计数器(引用计数),如何判别一个文件该被真正删除了?当这个硬链接数变为0的时候!
为什么软链接在那里疯狂闪红?
我们先来谈谈软链接具体是什么。
由此,更加应证了我们说的,软链接是一个快捷方式的说法。 那么它是一个文件,那它的数据块存储的是什么呢? 没错! 就是链接文件的 绝对路径!
此时,我们重新创建test.c,惊奇地发现软链接不再"框框"闪红了。
软链接是按照文件名作为自己的内容属性
硬链接则并非独立的文件,而只是指向了已经存在的inode
四、目录与软硬链接
我们随便创建一个目录文件,再看硬链接数,为什么是2呢?
任何一个目录,都有隐藏的硬链接文件"." 、 "..",linux文件系统的访问是树状结构,但是也有指向自己和上级目录的硬链接。我们平常执行的./test = /empty/test。
为什么linux系统不允许用户给目录自定义建立链接?
引入了对目录的硬连接就有可能在目录中引入循环,在目录遍历的时候系统就会陷入无限循环当中,这样导致无法定位到访问目录。Linux的目录结构是一棵以“/目录”为根节点的树,如果允许自定义硬连接,则很有可能会破坏这个结构,甚至形成循环;而一旦形成循环,对于需要遍历目录树的命令,是致命的。所以为了避免对目录树结构的破坏,linux不允许用户自定义硬连接在目录上。
总结
①linux下如何建立软硬链接? ln (-s) file.c file.link
②软链接是独立的文件内容是链接文件的绝对路径,硬链接不是独立的文件,会被inode里的引用计数++,一旦引用计数为0 表示该文件可以被真正删除。
③目录也是有硬链接的,但是linux系统处于自己的考虑,不会让用户给目录建立硬链接
本篇到此结束,
感谢你的阅读
祝你好运~