相信对于刚接触linux不久的新手来说,就听到过硬链接与软链接这两个专业术语,那么到底什么是硬链接什么是软链接,他们之间又有什么区别呢?
先说一下软链接是怎么回事:
相信大部分的人都知道windows系统里有快捷方式这么个东西,我们可以在windows里面给文件建立一个快捷方式到桌面上,通过点击快捷方式就可以打开相应的文件。
其实在linux中,软链接就相当于windows里的快捷方式,软链接是指向文件的,打开软链接相当于间接执行软链接所指向的文件。
创建软链接命令: ln -s f1 f2 (创建f1的软链接f2)
再来说一下硬链接:
也许硬链接这个概念对于大部分人来说没有软链接那么好理解。简单点说,硬链接是指向磁盘存储位置的
例如,我现在给文件f1创建一个硬链接f2 命令为: ln f1 f2
在这里f1为原文件,f2为f1的硬链接。我现在告诉你,f2其实就是f1的完全复制体,什么意思呢?在linux系统中,我们可以把所有的文件都看做成硬链接,因为磁盘中的数据我们其实是看不见的,它必须以某种方式表现出来,这种表现方式就是一个一个的文件,每一个文件指向磁盘中特定的存储位置。当我们给一个文件创建一个硬链接,只不过是给原文件所指向的磁盘存储位置增加了一条索引,其实原文件的本质也同样是一条索引。
硬链接与软链接的概念可由下图表示:
从图中可以看出,原文件与硬链接都是指向磁盘存储位置的,而软链接是指向原文件的。
当我们删除原文件后,软链接会变成无效链接,因为指向丢失。而硬链接则不会失效,因为我们删除原文件只不过是删除了相应的磁盘存储位置的一条索引,并不是删除了磁盘中的数据,硬链接是指向磁盘的,所以依然会读取出磁盘中的数据。
如果我们把原文件和原文件所有的硬链接都删除后,是不是就真正的删除了磁盘中的数据呢? NO
如果我们删除原文件和原文件所有的硬链接,只不过是删除了相应磁盘存储位置的所有索引,数据其实还存在于磁盘中,但此时该磁盘区域会变成一种特殊的模式:可覆盖模式
可覆盖模式:处于该模式的磁盘区域虽然存有数据,但当磁盘写入新的数据时,新数据可以存入该磁盘区域并覆盖原来的数据。处于可覆盖模式的磁盘区域也会被系统算入磁盘剩余空间中。正式因为该模式的存在,才使磁盘数据恢复变成了可能,数据恢复的原理就是为相应的磁盘存储区域添加一条索引。