通过上文的学习我们知道,我们对于一个文件的查找,是通过其inode编号进行查找的,那么我们软硬链接是有啥作用的呢?
软链接和硬链接、都两种链接都是实现一个文件、有多个入口的效果。
不过其实现的底层是有本质区别的
硬链接是直接共享器inode实现文件分身、软链接的话是通过独立的inode指向目标文件路径。
软链接和硬链接的创建
硬链接:
ln abc def
那么就可以使abc这个文件名、也是指向的def这个文件的inode的。
abc和def的链接状态完全是一样的,其被称为文件的硬链接,内核记录了这个连接数。
我们在删除文件的时候就干两个事情
1、将目录中对应的记录删除
2、将硬链接数-1,如果为0,那么将对应的磁盘释放
软链接:
其是通过名字引用另外一个文件,但是实际上,新的文件和实际的文件的inode是不一样的,应用场景上我们可以将其和我们的快捷方式。
语法:
ln -s abc.s def
下面我们来说二者的区别:
首先就是软链接的inode和原文件的inode是不一样的,而且软链接的文件大小很小很小
硬链接的话文件的inode和原文件的inode是一样的
软链接实际上是一个独立的文件、因为其有唯一的inode编号、那么文件=文件内容+文件属性
那么其内容就是指向的文件的路径字符串
硬链接其不是一个独立的文件、因为其没有独立的inode编号
其本质就是在目录下,建立新的文件名和目标inode的映射关系、其并没有在系统层面上创建新的文件。所以硬链接是链接文件的备份这样。
那么我们为啥不直接cp呢?
首先就是cp就是要新建文件,然后有独立的空间,需要使用到磁盘空间。
硬链接不会多占空间,其只是通过改变硬链接数,其都是指向的一个inode底层的数据块区只有一个。
注意:
我们可以对目录和普通文件设置软链接,但是不可以对目录文件设置硬链接。
比如我们查找一个文件,然后呢这个文件的上级目录硬链接了home,那么就会造成死循环了。
应用场景:
软链接的使用场景非常广泛、其比较常见的就是充当快捷方式
硬链接就是起到备份的作用