Linux 链接类型详解
在 Linux 系统中,存在两种主要的链接类型:硬链接(Hard Link)和软链接(符号链接,Symbolic Link)。这两种链接方式在文件系统中的作用和实现方式有所不同。
1. 硬链接(Hard Link)
硬链接可以将其理解为一个指向原始文件 inode 的指针,系统不会为它分配独立的 inode 和文件数据。原始文件和硬链接文件实际上是同一个文件,只是名字不同。
特点:
- 硬链接与原始文件共享同一个 inode。
- 每创建一个硬链接,该文件的 inode 链接数就会增加 1。
- 只有当文件的 inode 链接数为 0 时,文件才会被删除。
- 硬链接可以理解为文件副本,但不占用额外的硬盘空间。
- 硬链接不能跨文件系统创建。
- 不能为目录创建硬链接。
示例操作:
在 CentOS 中,创建硬链接的命令为 ln
。
[root@centos ~]# echo "Welcome to CentOS" > original.txt
[root@centos ~]# ln original.txt hardlink.txt
[root@centos ~]# ls -l original.txt hardlink.txt
-rw-r--r-- 2 root root 17 Mar 10 12:00 hardlink.txt
-rw-r--r-- 2 root root 17 Mar 10 12:00 original.txt
[root@centos ~]# rm original.txt
[root@centos ~]# cat hardlink.txt
Welcome to CentOS
上述操作中,删除 original.txt
文件后,通过 hardlink.txt
仍然可以访问到原始文件的内容。
2. 软链接(符号链接,Symbolic Link)
软链接是一个包含所链接文件路径名的特殊文件,因此它能够链接目录文件,也可以跨文件系统进行链接。
特点:
- 软链接存储的是指向原始文件路径的字符串。
- 软链接可以对不存在的文件名进行链接。
- 软链接可以跨文件系统进行链接。
- 软链接可以链接目录。
- 当原始文件被删除后,软链接将失效。
示例操作:
在 CentOS 中,创建软链接的命令为 ln -s
。
[root@centos ~]# echo "Hello from CentOS" > source.txt
[root@centos ~]# ln -s source.txt symlink.txt
[root@centos ~]# ls -l source.txt symlink.txt
-rw-r--r-- 1 root root 17 Mar 10 12:05 source.txt
lrwxrwxrwx 1 root root 10 Mar 10 12:05 symlink.txt -> source.txt
[root@centos ~]# cat symlink.txt
Hello from CentOS
[root@centos ~]# rm source.txt
[root@centos ~]# cat symlink.txt
cat: symlink.txt: No such file or directory
上述操作中,删除 source.txt
文件后,symlink.txt
链接失效,无法再访问原始文件的内容。
3. 链接命令详解
使用 ln
命令可以为文件创建一个链接。链接类型分为硬链接和软链接,默认的链接类型是硬链接。
硬链接:
ln source target # 创建硬链接
软链接:
ln -s source target # 创建软链接
4. 举例说明
为了更好地理解软链接和硬链接的不同特质,我们创建一个类似于 Windows 系统中快捷方式的软链接。
[root@centos ~]# echo "Welcome to CentOS" > readme.txt
[root@centos ~]# ln -s readme.txt readit.txt
[root@centos ~]# cat readit.txt
Welcome to CentOS
[root@centos ~]# rm readme.txt
[root@centos ~]# cat readit.txt
cat: readit.txt: No such file or directory
接下来对一个原始文件创建一个硬链接:
[root@centos ~]# echo "Welcome to CentOS" > readme.txt
[root@centos ~]# ln readme.txt readit.txt
[root@centos ~]# cat readit.txt
Welcome to CentOS
[root@centos ~]# rm readme.txt
[root@centos ~]# cat readit.txt
Welcome to CentOS
在上述示例中,删除 readme.txt
后,硬链接 readit.txt
仍然可以访问原始文件的内容,而软链接则不能。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。