Linux连接档概念
1.Linux 下的连接档种类
一个是类似于win 电脑的快捷方式,我们称为软连接,一种是通过文件系统的inode 连接来产生的,类似于win 电脑的复制,但是不产生新的文件,我们称为硬连接。
2.什么是inode?
inode 是用来存放文件信息的,每个文件都会占用一个inode,并且这个inode 号是唯一的,文件的内容都是inode 来指定的,而不是文件名,当系统要访问文件时,inode 就会被复制到内存,从而实现文件的快速访问,使用ls -i 命令则可以看到inode 号-i 参数为打印文件的inode 号
3.什么是硬连接
硬连接只是一个新的链接到某个inode 号码的记录而已。这个链接指向inode,系统并不给他重新分配inode。
可以用ln 命令来建立硬连接。
格式:ln 源文件目标文件
常用参数-f 无论目标文件是否存在都要创建连接。
举例:
在例子中我们可以发现test1.c 和test2.c 他们的inode 号码都是44564692。因为inode 号一样,所有这个俩个文件的权限和属性也是一模一样的,也是test1.c 和test2.c 是俩个完全一样的文件。
连接数也由1 变成了2,这个代表的是有多少个档名链接到了这个inode 号。
我们在创建一个硬连接。使用ln test1.c tset3.c 命令后,则会发现我们这个连接数从2 变成了3
4.使用硬连接的优缺点是什么?
优点:
第一个方便,虽然类似于win 的复制,但是通常并不占用实际空间。而且不管我们是修改test1.c 或者是修改test2.c 还是test3.c,只要修改一个,我们的文件就会被同时修改,因为他们的inode 号都是相同的。
举例:
我们修改test3.c 的内容为如下图所示:
test1.c 和test2.c 的内容也被修改成了nihao,如下图所示:
第二是安全,防止误删除,我们删除test1.c 或者是test2.c 或test3.c 任意一个,我们还是可以通过剩下的连接来访问文件。除非都删掉。
举例:
我们删掉test1.c。但是test2.c 或test3.c 还是可以访到“nihao”这个内容。
缺点:
只能在同一个文件系统才可以创建硬连接(因为不同的文件系统管理方式不同),并且目录之间不能创建硬连接。(太复杂,现在还不支持)
5.什么是软连接
这个就比较好理解了,类似win 上的快捷方式。
可以用ln 命令来建立软连接。
格式:ln -s 源文件目标文件(必须加上-s 参数,使用ln 如果不加任何参数的话,那么就是Hard Link,而且源文件要用绝对路径)-s 为创建一个软连接
举例:
上图中我们可以发现test1.c 和test2.c 的inode 号是不一样的,所以这个俩个文件是完全独立的,总之软连接就是创立了一个新的文件,当访问这个连接文件的时候,系统就会发现他是一个连接文件,然后读取连接文件找到真正要访问的文件。
因为类似于win 的快捷方式,我们删掉源文件test2.c ,test1 就不能打开了,如下图所示:
红色背景代表无效。
软连接虽然没有硬链接安全,但是限制少,所以使用范围还是很广泛的延申内容:
ubuntu 系统中各个文件的颜色含义:
蓝色:文件夹,ls -l 或ll 时可以看到权限部分的第1 个字母是d
红色:压缩文件
绿色:可执行文件
白色:文本文件
红色闪烁:错误的符号链接
淡蓝色:符号链接
黄色:设备文件
灰色:其它文件