Linux软硬链接
1,如何建立软连接
操作:ln -s +要被建立链接的文件 +软连接文件
看到第三行,可以看到有个箭头指向,就是给test.c建立了软链接,也可以看到他们的inode不一样,那么我们来分别cat一下这两个文件看看结果:
由此可以得出结论,软连接的本质是一个独立文件,与源文件有不同的inode,用cat打开查看两文件时发现两文件内容一模一样,其作用就和windos中的快捷方式一样。
2,如何建立硬链接
操作:ln +被链接文件名 + 链接文件名:
可以看到,建立硬链接之后,他们的inode都一样,而且第三列的数字由之前的1变成了2:
由此知道,硬链接不是一个独立的文件,由于都是指向同一个inode,所以cat出来的内容自然也是一样的:
3,如何理解软硬链接
a,软链接有独立的inode,软连接的内容是保存目标文件的路径,就像window中的快捷方式。
b,硬链接不是独立的文件,没有独立的inode,硬链接本质就算一组文件名和已经存在的文件的映射关系!
我们用指令:ls -i的时候有一下数字1,2:
表示有多少个文件与目标文件有硬链接关系,也是inode本身的引用技术:硬链接数。
如果删了目标文件而没有删除之前硬链接的文件,就相当于给文件重命名:
这相当于给文件做了一次备份,所以在Linux中备份是不需要拷贝复制源文件,直接备份文件名就行,方便快捷减时间。
但是同时软连接就失去了连接路径爆红:
4,关于目录文件的软硬链接
a,目录文件可以建立软链接:
建立目录软链接之后,可以直接cd到软连接的目录地址
b,关于目录文件的硬链接
Linux不允许对目录建立硬链接,只有系统自带的几个文件可以对目录进行硬链接:
首先我们新建一个目录:
可以看到,之前我不是说过目录不可以建立硬链接,那么为什么这两硬链接数为2?
大家应该听说过.和..分别带包本地目录和上级目录吧,我们进到目录去看一看:
可以看到,.文件与test文件的inode一样,我们再在test里建一个目录:
可以看到,在test里建立的test1文件中..目录,表示上级目录,就和test硬链接在一起,这个时候test文件硬连接数应该就是3,我们出去看一下:
所以可以根据文件的硬连接数判断有多少文件,
其中根目录的..文件指向自己,但是不计入引用计数:
如果我们要手动给文件建立硬链接:
系统直接不给建立,原因是为了防止链接闭环,目录可以建立软连接也会形成文件路径闭环,但是软连接可以直达,硬链接会无限查找,了解就行。