linux-3.1.1-连接(link)

连接(link)

  1. 符号连接(软连接):指向另一个文件的文件

符号连接也只能包含一种类型的数据;

一个符号连接包含了它所指向的文件的路径;

因为符号连接使用的是指向其他文件的路径名,

所以符号连接可以指向其他文件系统上的文件。

º。查看符号连接:使用 ls -l

    文件类型码如果是“l”表示是一个连接。

另外在显示结果的最后一列中,

在->左边的是符号连接名,

在->右边的是所指向对象的完整路径,

显示结果中的大小为这个完整路径的字符个数。

º。创建软连接:

1
2
3
4
5
6
7
8
9
10
11
12
ln  -s  abs_path/文件名  abs_path/[连接名]
[⚠️]可以对目录建立软连接
文件名:连接指向的文件
连接名:新建的link file的名字
缺省为与指向文件同名
[⚠️]注意两文件的path都要写绝对路径
若使用相对路径会出现软连接断开的问题:
使用连接时会报错:
Too many levels of symbolic links.
可对link file使用file命令发现错误:
$ file link_file
abs_path/link_file:broken symbolic links to 'pointing file'

º。软连接的使用:

对 link_file rwx == 对 pointing_file rwx

º。软连接的工作原理

/*符号连接也要占用一个i节点,即软连接本身也是一个文件*/

使用symbolic link:

(1)首先系统利用_符号连接名_查找到这个软连接所对应的i节点。

(2)通过i节点中的指针查找到_link file_的数据块(其中,存放着所_指向文件_的全路径和对应的i节点号)。

(3)利用_link file_数据块中的数据查找到这个文件所对应的i节点号。

(4)通过i节点中的指针查找到_pointing file_对应的数据块。

(5)对_pointing file_的数据块中的数据进行操作。

  1. 硬连接:把文件名对应到inode

一个硬连接(Hard Link)是一个文件名与一个i节点之间的对应关系。

添加一个硬连接是在所对应的文件上添加一个路径名。

每一个文件都至少使用一个硬连接,

在一个目录中的每一个记录都构成了一个硬连接。

可以将每一个文件名都看成为对应于一个i节点的硬连接。

为文件添加额外的hard link可以避免一些重要的信息被误删,因为当存储信息的文件被删除后,还可以通过硬连接访问对应的i节点并找到存储信息的数据块。

若将名为foo和bar的两个文件对应到一个i节点上:

foo、bar使用相同的i节点记录。

    将文件foo误删,还可以通过文件bar把信息找回来。

º。创建hard link

1
2
ln 文件名 [连接名]
[⚠️]只能对文件建立硬连接,而不能对一个目录建立硬连接。