Linux 中链接用于建立文件系统对象之间的关系。链接分为符号链接和硬链接
硬链接
创建的硬链接和原来文件共享一个 inode 节点。inode 节点含有一个 i_nlink 计数器,记录使用该 inode 的硬链接的总数。Linux 中文件内容实际与 inode 一一对应,原来的文件就相当于一个硬链接。所以硬链接和原来文件不存在质的区别。
删除一个硬链接是只会使 i_nlink 数量减 1,只有当 i_nlink 等于 0 时,才会删除文件内容。
缺点:
- 硬链接不能跨越文件系统
- 硬链接不能指向一个文件夹
符号链接
符号链接具有独立的 inode,该 inode 只含有指向文件名的指针,给出了链接目标的路径。当目标文件删除时,符号链接仍然继续保持。符号链接的删除也不会影响目标文件。
符号链接克服了硬链接的以上缺点。所以倾向于使用符号链接。
使用方法及测试
使用方法:
/* 创建硬链接 */
ln ori_file hard_link_name
/* 创建符号链接 */
ln -s ori_file symbolic_link_name
实际测试
$ ln ori.txt hard_link.txt
$ ln -s ori.txt symbolic_link.txt
$ ls -li
total 8
1179960 -rw-rw-r-- 2 hello hello 12 Jul 9 00:03 hard_link.txt
1179960 -rw-rw-r-- 2 hello hello 12 Jul 9 00:03 ori.txt
1179972 lrwxrwxrwx 1 hello hello 7 Jul 9 00:05 symbolic_link.txt -> ori.txt