一.Linux系统硬链接和软链接
在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。
查看bin下面的文件
$ cd /bin
$ ls -l
上图文件列表中第一列权限位标识第一个字符显示的是文件类型
-:为一般文件
d:为目录
l:显示的就是链接文件
直接读取所有的链接,所有的位标识字符位l
$ cd /bin
$ ls -alR | grep ^l
二.软链接硬链接区别
参考网址
Linux 文件被分成两个部分:用户数据 (user data) 与元数据 (metadata)
用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;
元数据,是文件的附加属性,如文件大小、创建时间、所有者等信息。
在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。
为解决文件的共享使用,Linux 系统引入了两种链接
硬链接(Hard Link)
软链接(Soft Link),又称符号链接(Symbolic Link)
可以看出
硬链接:一个 inode 号对应多个文件名,或者说同一个文件使用了多个别名
软链接:文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接
区别
(1)对象不同
硬链接:只能应用于文件,而不能应用于目录,而且不能跨文件系统(即分区)。
软链接:可以应用于文件,而且可以应用于目录和可跨文件系统(分区)。
(2)作用原理
硬链接:一个 inode 号对应多个文件名,如果删除其中任何一个文件,另外一个文件还能连接数据块,还是有效的文件,只是对应的inode节点号减少,其它并无影响。只有inode节点号减少到0,数据块才会被系统回收,即硬链接文件和原文件其实是同一个文件,只是名字不同
软链接:假如说A文件是B文件的软连接文件,则A和B的inode节点号不同,每创建一个新的软链接,就会有一个新的节点号。而A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
二.软链接、硬链接使用
(1)创建方法
软链接(符号链接) ln -s source target
硬链接 (实体链接)ln source target
创建test_link文件夹,并在里面创建 infile文件
创建目录A,硬链接不能指向目录
软连接可以,如
$ ln -s A infile_name
(2)删除方法