1. Linux链接档种类
Linux 下的链接档有两个种类。一种类似于 win 电脑的快捷方式,称为软链接,软链接也可以叫做符号链接。另一种是通过文件系统的 inode 链接来产生的,类似于 win 电脑的复制,但是不产生新的文件,称为硬链接。硬链接也可以称作为实体链接。
2. 硬链接
2.1 inode介绍
inode 也叫做索引节点,内核会给每一个新创建的文件分配一个索引节点,这个索引节点就是 inode。 inode 用来存放文件信息,每个文件都会占用一个 inode,并且这个 inode 号是唯一的,可以把 inode 简单的理解为一个指针,它永远指向本文本的具体存储位置,文件的属性保存在 inode 里,系统是通过 inode 而不是文件名来定义每一个文件的。当系统要访问文件时, inode 就会被复制到内存,从而实现文件的快速访问。
使用 “ls -i”命令可以看到 inode 号。如下图所示:
2.2 硬链接介绍
硬链接是一个新的链接到某个 inode 号码的记录。这个链接指向 inode ,系统并不给他重新分配 inode 。也就是说会有多个文件对应同一个 inode ,如果两个文件的 inode 一样, 那么这两个文件就是完全一样的。可以用 ln 命令来建立硬链接。
格式: ln [源文件] [目标文件]
常用参数 -f ,就是说强制创建,无论目标文件是否存在都要创建链接。
举例:使用命令 touch test1.txt 创建文件 test1.txt,然后使用命令ln test1.txt test11.txt为 test1.txt 创建一个名为 test11.txt 的硬链接,
然后使用“ls -i”命令查看inode信息如下图所示:
可以发现 test1.txt 和 test11.txt 他们的 inode 号码都是 29898401 。因为 inode 号一样,所以这两个文件的权限和属性也是一摸一样的,也就是 test1.txt 和 test11.txt 是两个完全一样的文件。 如下图所示:
观察test1.txt以及test11.txt两行,上图中的数字 2,这个代表的是有 2 个档名链接到了这个 inode 号。
2.3 硬链接特点
硬链接文件具有以下特点:
① 具有相同inode的多个文件互为硬链接文件,创建一个硬链接文件相当于给文件起一个别名。
② 对于硬链接文件,只有删除了源文件以及对应的所有硬链接文件,文件本身才会被删除。
③ 根据硬链接文件的特点,我们可以通过给文件创建硬链接的方式来防止文件误删除。
④ 对于硬链接,不论修改源文件还是链接文件,另一个文件的数据都会被改变。
⑤ 硬链接不能跨文件系统。
⑥ 硬链接不能链接到目录。
2.4 硬链接的优缺点
2.4.1 优点
第一方便,虽然类似于 win 的复制,但通常不占用实际空间。而且不管是修改源文件或者是修改对应的硬链接文件,只要修改一个,文件就会被同时修改。
第二是安全,防止误删除。即使删除了源文件和对应的硬链接文件中的任意一个,还可以通过其他链接来访问文件,可以利用硬链接这个特点来做文件的备份。
2.4.2 缺点
第一,只能在同一个文件系统才可以创建硬链接。原因是不同的文件系统管理方式不同, 甚至有的文件系统没有索引号,它不是索引文件系统。哪怕他有索引号,两个文件系统的索引号含义不一定是相同的,即使它的索引号相同,但是不同的文件系统中也有可能使用该 inode 的其他文件,这样就会发生冲突,所以说只能在同一个文件系统中才能创建硬链接。
第二,目录之间不能创建硬链接(太复杂,现在还不支持)。如果说将根目录下的 etc 用硬链接创建一个硬链接的目录,那么不只是我们的文件要被创建,这个文件下面所有的文件名都要创建一个硬链接,这样呢就会给工作环境造成一个很大的工作量,而且非常的复杂,所以现在还不支持。
3. 软链接
软链接类似于 win 上的快捷方式。可以用 ln 命令来建立软链接。
格式: ln [-s] [源文件] [目标文件]
注意:必须加上-s 参数,使用 ln 如果不加任何参数的话,那么就是 Hard Link ,而且源文件要用绝对路径,不能使用相对路径。
当前目录下【/home/topeet/Desktop/】的内容如下图所示。
使用命令ln -s /home/topeet/Desktop/test1.txt test4.txt 为 test1.txt 创建一个软链接,如下图所示:
上图中可以发现 test1.txt 和 test4.txt 的 inode 号是不一样的,所以这两个文件是完全独立的。
软链接就是创立了一个新的文件,当访问这个链接文件的时候,系统就会发现他是一个链接文件,然后读取链接文件找到真正要访问的文件。 类似于 win 上的快捷方式,如果删掉源文件 test1.txt ,那么 test4.txt 就不能打开了,如下图所示(红色背景代表无效):
软链接虽然没有硬链接安全,但是限制少,所以使用范围广泛。
4. 总结
硬链接和软连接总结:
硬链接相当于给文件另外起一个别名,两个名字本质上还是同一个文件主体。
软链接相当于给文件创建一个快捷方式。而快捷方式和源文件本质上是两个文件。