硬链接和软连接
maiaimei 2024/3/20 Linux
在Linux中,文件名和文件的数据是分开保存的。
链接是一种文件共享的方式。
ln
(link)命令功能是为某一个文件/目录在另外一个位置建立一个同步的链接。
# 硬链接
硬链接(Hard Link),是对原文件起了一个别名。
特性:
(1)文件有相同的 inode 及 data block;
(2)只能对已存在的文件进行创建;
(3)不能交叉文件系统进行硬链接的创建;
(4)不能对目录进行创建,只可对文件创建;
(5)删除一个硬链接文件并不影响其他有相同inode 号的文件;
(6)只有文件的硬链接数等于零,文件才会被删除。
创建硬链接:
ln 被链接的源文件 链接文件
1
查找指定文件的硬链接:
# 获取文件的inode号码
stat test.txt
# 根据Inode号码查找,把错误提示丢弃
find / -inum 1486772 >/dev/null
1
2
3
4
5
2
3
4
5
# 软连接
软链接(Soft Link),也叫符号链接(Symbolic Link),它包含了到原文件的路径信息,类似于Windows的快捷方式。
特性:
(1)软链接有自己的文件属性及权限等;
(2)可对不存在的文件或目录创建软链接;
(3)软链接可交叉文件系统;
(4)软链接可对文件或目录创建;
(5)创建软链接时,链接计数 i_nlink 不会增加;
(6)删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
创建软链接:
ln -s 被链接的源文件 链接文件
1
查找指定文件的软连接:
find ./ -type l -exec ls -l {} \;| grep 'test.txt'
1
# 硬链接和软链接的区别
硬链接 | 软链接 | |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode号 | 相同 | 不同 |
跨设备 | 不支持 | 支持 |
文件夹 | 不支持 | 支持 |
相对路径 | 原始文件相对路径是相对于当前工作目录 | 原始文件的相对路径是相对于链接文件的相对路径 |
文件类型 | 和原文件相同 | 链接文件,和原文件无关 |
文件大小 | 和原文件相同 | 原文件的路径的长度 |
链接数目 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 创建或删除,链接数不会变化 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 链接文件将无法访问 |