软链接
符号连接(软连接):指向另一个文件的文件
- 符号连接也只能包含一种类型的数据;
- 一个符号连接包含了它所指向的文件的路径;
- 因为符号连接使用的是指向其他文件的路径名,所以符号连接可以指向其他文件系统上的文件。
查看符号连接
使用 ls -l 可以看出符号连接:文件类型码如果是 l 就表示是一个连接。
另外在显示结果的最后一列中:
- 在
->左边的是符号连接名, - 在
->右边的是所指向对象的完整路径,
显示结果中的大小为这个完整路径的字符个数。
创建软连接
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
软连接的工作原理
符号连接也要占用一个 inode,即软连接本身也是一个文件
使用symbolic link:
(1)首先系统利用符号连接名查找到这个软连接所对应的i节点。
(2)通过i节点中的指针查找到 link file 的数据块(其中,存放着所指向的 pointing file 的全路径和对应的 inode 号)。
(3)利用 link file 数据块中的数据查找到这个文件所对应的 inode 号。
(4)通过i节点中的指针查找到 pointing file 对应的数据块。
(5)对 pointing file 的数据块中的数据进行操作。
硬连接
硬连接:把文件名对应到inode
- 一个硬连接(Hard Link)是一个文件名与一个i节点之间的对应关系。
- 添加一个硬连接是在所对应的文件上添加一个路径名。
- 每一个文件都至少使用一个硬连接,在一个目录中的每一个记录都构成了一个硬连接。
- 可以将每一个文件名都看成为对应于一个i节点的硬连接。
- 为文件添加额外的 hard link 可以避免一些重要的信息被误删,因为当存储信息的文件被删除后,还可以通过硬连接访问对应的i节点并找到存储信息的数据块。
- 若将名为foo和bar的两个文件对应到一个i节点上:
- 则 foo、bar 使用相同的i节点记录
- 将文件foo误删,还可以通过文件bar把信息找回来。
- 若将名为foo和bar的两个文件对应到一个i节点上:
创建 hard link
ln 文件名 [连接名]
⚠️ 只能对文件建立硬连接,而不能对一个目录建立硬连接。