在计算机中,软连接(Symbolic Link,简称symlink)和硬连接(Hard Link)是两种不同的文件链接方式,它们用来创建文件的引用。下面是通俗的解释:
- 硬链接(Hard Link)
硬链接可以理解为给文件提供了一个“别名”,也就是说,硬链接创建了一个指向文件的额外入口。硬链接和原文件本质上是相同的,没有区别。它们指向的是同一个数据块(inode),并且没有“源文件”和“链接文件”之分,它们共享相同的 inode。
创建硬链接:
当你创建硬链接时,系统会给文件创建一个新的名称,这个新名称会指向原始文件的 inode。
这两个文件(原始文件和硬链接文件)拥有相同的 inode,因此它们完全等价,操作其中任何一个,都会影响到实际存储的文件内容。
硬链接特点:
不能跨文件系统:硬链接只能在同一个文件系统中创建。
共享 inode:多个硬链接指向同一个 inode,这意味着它们共享文件的内容。
删除时,只有所有指向该 inode 的硬链接都被删除后,文件数据才会被真正删除。即使原文件被删除,只要还有硬链接存在,文件内容不会消失。
无法链接目录:为了避免循环引用,硬链接通常不能链接目录(除非是系统管理员权限)。
例子: 假设你有一个名为 file1.txt 的文件,内容为 “Hello World”。
ln file1.txt file2.txt # 创建硬链接
这时,file1.txt 和 file2.txt 都指向相同的数据块,修改其中一个文件的内容,另一个文件的内容也会跟着改变。即便你删除了 file1.txt,file2.txt 依然存在,文件的内容不会丢失,直到所有硬链接都被删除。
- 软链接(Symbolic Link,Symlink)
软链接更像是一个“快捷方式”或“符号链接”,它指向的是一个文件路径,而不是文件本身。软链接保存的是原文件的路径信息,而不直接保存文件的内容或 inode。因此,软链接是一个独立的文件,它和目标文件是两个完全不同的实体。
创建软链接:
当你创建软链接时,你指定一个目标文件的路径,软链接文件将包含该路径信息。当访问软链接时,操作系统会根据路径跳转到实际的目标文件。
软链接特点:
可以跨文件系统:软链接可以指向任何位置,包括不同的文件系统和分区。
软链接有自己的 inode,和目标文件的 inode 不同。
如果目标文件被删除,软链接会失效(变成“悬空链接”或“死链接”)。换句话说,软链接仅仅是对文件路径的引用,如果目标文件不存在,软链接就无法访问。
软链接可以指向目录或文件。
例子: 假设你有一个名为 file1.txt 的文件,内容为 “Hello World”。
ln -s file1.txt file2.txt # 创建软链接
这时,file2.txt 会成为 file1.txt 的软链接。file2.txt 中保存的是 file1.txt 的路径。当你访问 file2.txt 时,系统会自动转到 file1.txt。如果删除了 file1.txt,file2.txt 就会变成一个“死链接”,无法再访问到 file1.txt。
- 总结
-
硬链接是文件的直接别名,它指向文件的 inode
和数据块,是同一个文件,删除任何一个硬链接或原文件,不会丢失数据,直到所有链接都被删除。 -
软链接是文件路径的快捷方式,指向文件名而不是数据块。如果目标文件被删除,软链接就会变得无效。软链接可以跨文件系统,支持目录链接。
1223

被折叠的 条评论
为什么被折叠?



