Linux学习笔记(软链接和硬链接)

Linux链接文件类似于windows下的快捷方式。
链接文件分为软链接和硬链接。
硬链接:硬链接只能链接普通文件,不能链接目录。
命令写法: ln 源文件名 链接文件名
软链接:软链接不占用磁盘空间。源文件删除则软链接失效,软链接可以链接目录。
命令写法:ln -s 源文件名 链接文件名

例:

硬链接

现在有一个文本文件名为ZaQiang.txt
在这里插入图片描述
现在我们看下该文件的属性:
Linux学习笔记(软链接和硬链接)_第1张图片
该文件的inode为673600,links数为1。

然后给ZaQiang.txt硬链接一个ZaQiang_hard.txt文件。
在这里插入图片描述
操作命令为 ln ZaQiang.txt ZaQiang_hard.txt。

这时再来查看这两个文件
Linux学习笔记(软链接和硬链接)_第2张图片
我们可以发现他们俩的inode都是673600,并且links数变为2。
Linux学习笔记(软链接和硬链接)_第3张图片
Linux学习笔记(软链接和硬链接)_第4张图片
并且他们两个的文件类型都为普通文件,操作权限也全都一样,创建时间一样,内容也是完全一样的。

Linux学习笔记(软链接和硬链接)_第5张图片
这时我们对ZaQiang_hard.txt进行了删除操作,ZaQiang.txt的links数又变回了1。
这就跟我们的智能指针很相似,当有指针指向某个对象时,指针内部的计数器的值会加1,再有指针指向这个对象,指针内的计数器会再加1,当有指针被销毁或者指向其他地方,指针内部的计数器会减1。
这时候我们的文件名就相当于是一个指针,links就相当于是指针内部的计数器,而inode就是文件存储的地址,指针指向的地址使同一个,并且内容相同,指针释放时计数器自动减1。

对文件进行拷贝
Linux学习笔记(软链接和硬链接)_第6张图片
这就可以看出来,链接并不是单纯的拷贝!拷贝出来的文件inode与源文件并不同,并且两个的links数都为1!

注意:
不能对目录进行硬链接!
在这里插入图片描述

软链接

对文件进行软链接
在这里插入图片描述
Linux学习笔记(软链接和硬链接)_第7张图片
我们可以看到文件类型为l(表示链接文件),并且文件名后有->指向源文件。
Linux学习笔记(软链接和硬链接)_第8张图片
并且链接文件与源文件的inode不同。
Linux学习笔记(软链接和硬链接)_第9张图片
文件内容是相同的。

如果删除源文件,则软链接失效,访问时提示找不到文件。
Linux学习笔记(软链接和硬链接)_第10张图片
删除源文件以后,对链接文件进行访问时系统提示找不到文件,并且链接文件名字变成红色,显示异常!

对目录进行软链接!
Linux学习笔记(软链接和硬链接)_第11张图片

总结:

硬链接与软链接的区别:
软链接:
(1)软链接以路径的方式存在,类似于windows中的快捷方式。
(2)软链接可以跨文件系统,硬链接不可以。
(3)软链接可以对一个不存在的文件名进行连接。
(4)软链接可以对目录进行链接。
硬链接:
(1)硬链接以文件副本的形式存在,但不占实际空间。
(2)不允许给目录创建硬链接。
(3)硬链接只能在同一个文件系统中才能创建。

你可能感兴趣的:(Linux)