软链接:又称符号链接,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。软链接可对文件或目录创建。 软链接主要应用于以下两个方面:一是方便管理,例如可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;另一方面就是解决文件系统磁盘空间不足的情况。例如某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中,这样就可以很好的解决空间不足问题。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。 使用ln -s 命令即可创建符号链接,命令如下:
ln -s old.file soft.link
ln -s old.dir soft.link.dir
硬链接:
硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是允许的,像这样的链接就是硬链接。硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。如果删除硬链接对应的源文件,则硬链接文件仍然存在,而且保存了原有的内容,这样可以起到防止因为误操作而错误删除文件的作用。 由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。 硬链接可由命令 link 或 ln 创建,如:
link oldfile newfile
ln oldfile newfile
接下来拓展一个知识点:inode节点。
inode节点又称索引节点号,这是Linux文件系统管理文件的方式。在建立文件系统时,会建立一个索引节点表,里面包含一定数量的索引节点。每当建立一个文件时,就会为他分配一个索引节点号,相当于文件的地址。
总结一下:软链接和硬链接的区别:
对于软链接来说:
a:可以对目录创建软链接,遍历操作会忽略目录的软链接;
b:可以跨文件系统;
c:可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了;
d:源文件和链接文件的iNode节点不同,链接文件中存储的内容为源文件的绝对路径。
对于硬链接来说:
a:只能对普通文件进行硬链接,不能对目录进行硬链接;
b:不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下;
c:不能对不存在的文件创建硬链接.
以上就是我所总结的在Linux操作系统下,软链接和硬链接的区别。