硬链接
本质上是给一个文件起一个新的名称,实质是同一个文件
特点
- 创建硬链接会在对应的目录中增加额外的记录项用以引用文件
- 对应于同一个文件系统上一个物理文件
- 每个目录引用相同的inode 号
- 创建时链接数递增
- 删除文件时:rm 命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除
- 不能跨驱动器或分区
- 不支持目录创建硬链接
软链接(符号链接)
一个符号链接指向另一个文件,与windows中的快捷方式类似,本质上不是同一个文件
特点
- 一个符号链接的内容是它引用文件的名称
- 可对目录创建软链接
- 可跨分区的文件实现
- 指向的是另一个文件的路径;其大小是指向路径字符串的长度;不增加或减少目标文件inode 的引用计数
- 软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录
硬链接和软链接的区别总结
硬链接 | 软链接 | |
---|---|---|
命令格式 | ln filename [linkname] | ln -s filename [linkname] |
本质 | 同一个文件 | 不是同一个文件 |
跨设备 | 不支持 | 支持 |
inode | 相同 | 不同 |
链接数 | 创建,链接数增加;删除,链接数减少 | 创建或删除,链接数不变 |
文件夹 | 不支持 | 支持 |
相对路径 | 相对于当前工作目录 | 相对于链接文件的相对路径 |
删除源文件 | 链接数减一,链接文件的访问不受影响 | 链接文件将无法访问 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同 | 源文件路径的字符长度 |
常用参数选项
-b 删除,覆盖以前建立的链接
-f 强制执行
-n 把符号链接视为一般目录
-s 软链接(符号链接)
范例
#相对路径
[root@centos8 data]#ln -s /data/dir /data/dirlink
[root@centos8 data]#cd /data
[root@centos8 data]#ln -s ../data/dir /root/dirlink
#将1 软链接先链到1.sql,再将1 软链接链到2.sql
[root@centos8 data]#touch {1,2}.sql
[root@centos8 data]#ln -s 1.sql 1
[root@centos8 data]#ll
total 0
lrwxrwxrwx. 1 root root 5 Jul 30 16:57 1 -> 1.sql
-rw-r--r--. 1 root root 0 Jul 30 16:57 1.sql
-rw-r--r--. 1 root root 0 Jul 30 16:57 2.sql
#错误的演示:软链接已有对应源文件时,这样无法更改链接到的源文件
[root@centos8 data]#ln -s 2.sql 1
ln: failed to create symbolic link '1': File exists
#正确的演示:软链接有对应源文件的情况,强制更改指向的源文件
[root@centos8 data]#ln -snf 2.sql 1
[root@centos8 data]#ll
total 0
lrwxrwxrwx. 1 root root 5 Jul 30 16:57 1 -> 2.sql
-rw-r--r--. 1 root root 0 Jul 30 16:57 1.sql
-rw-r--r--. 1 root root 0 Jul 30 16:57 2.sql
巨坑!!!尤其是使用顺手使用Tab键的时候,一定要注意结尾的 /
#删除软件链接本身,不会删除源目录内容
[root@centos8 data]#rm -rf /data/dirlink
#删除源目录的文件,不会删除链接文件
[root@centos8 data]#rm -rf /data/dirlink/