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. 总结
硬链接和软连接总结:硬链接相当于给文件另外起一个别名,两个名字本质上还是同一个文件主体。软链接相当于给文件创建一个快捷方式。而快捷方式和源文件本质上是两个文件。