关于硬链接和软链接的简单理解:
2021-2-19
1、众所周知,Linux里一切皆文件,所以不妨理解一下文件在Linux中的特点:
![](https://i-blog.csdnimg.cn/blog_migrate/f849e69b2a49b1325ee6ba5c518619fe.jpeg)
-
我们通过文件名打开文件(过程见下图)时,需要途径inode,然后才能访问到文件的真实内容,即文件数据块data blocks:
![](https://i-blog.csdnimg.cn/blog_migrate/437d88af95c0dcb9002b77f9055ba51c.png)
-
移动和重命名文件并不会改变文件的索引节点号inode。
Linux引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。
2、硬链接和软链接有啥区别呢,说了半天inode,到底和inode有啥关系呢,整这个有啥用呢?哈哈哈哈疑问三连(
来来来一个个解决一下
(1)硬链接和软链接分别是什么,与inode有什么联系?
硬链接:一个文件即一个inode号对应多个文件名。
对文件创建硬链接:
硬链接可由命令link或link创建。
如下图对硬链接file1创建新文件名newfile。
创建后file1和newfile有相同的inode号。
#ln命令可以同步对文件的修改。
link file1 newfile
ln file1 newfile
注意:
1、Linux创建目录后,硬链接数为2。因为每创建一个目录,就会在创建的目录下默认新增…上级目录的硬链接和.当前目录的硬链接。
![](https://i-blog.csdnimg.cn/blog_migrate/874afc441fd8e0e35515c69ff05684ad.png)
软链接的创建:
ln -s 源文件 目标文件
注意:
1、软链接的用户数据可以是另一个软链接的路径。
2、创建软链接的时指向路径时最好使用绝对路径。避免使用相对路径后,软链接被移动后,该软链接成为一个死链接。
(2)区别:
区别一:能否对不存在的文件进行创建
硬链接只能对已存在的文件进行创建;
软链接可以对一个不存在的文件进行链接。
区别二:能否对目录进行创建
硬链接只能对文件创建,不能对目录进行创建;
软链接可以对目录进行连接。
区别三:删除时的区别
所有硬链接都指向同一个I节点。删除链接中的文件,对同样inode号的其他文件没有影响,只要链接数>0,文件就一直存在。
软链接不适用I节点作为文件指针,而是用文件路径名作为指针。删除链接文件对于源文件没有影响,但是删除源文件时,链接文件就会找不到要指向的文件。
区别四:是否占用空间
硬链接通常情况下不会占用inode和磁盘空间大小。
软链接有自己的inode,在磁盘有一小片空间存放路径。
区别五:能否跨文件系统
硬链接不能跨文件系统建立。不同文件系统中可能会有相同的inode。创建硬链接后,链接数会增加。
软连接可以跨文件系统建立。创建软链接后,链接数不会增加。
(3)inode和链接的作用:
i.当文件名包含特殊字符时,可以直接通过指认inode号来识别。
ii.我们可以将链接理解为Windows中的快捷方式,便于更好地共享文件。
iii.硬链接可以便于“误删”,便于“随心”移动。只有最后一个链接被删除后,文件的数据块和目录的链接才会被释放。
网站链接传送门