创建一个硬链接
➜ test ln a.txt aHardLink
➜ test ll
-rw-r--r-- 2 lfool staff 5B 1 29 02:06 a.txt
-rw-r--r-- 2 lfool staff 5B 1 29 02:06 aHardLink
➜ test ll -i
8986726 -rw-r--r-- 2 lfool staff 5B 1 29 02:06 a.txt
8986726 -rw-r--r-- 2 lfool staff 5B 1 29 02:06 aHardLink
可以发现两个文件的 inode 编号相同,且大小相同,说明是同一个文件
创建一个软连接
➜ test ln -s a.txt alink
➜ test ll
-rw-r--r-- 1 lfool staff 5B 1 29 02:06 a.txt
lrwxr-xr-x 1 lfool staff 5B 1 29 02:06 alink -> a.txt
# 查看文件的 inode 编号
➜ test ll -i
8986726 -rw-r--r-- 1 lfool staff 5B 1 29 02:06 a.txt
8986741 lrwxr-xr-x 1 lfool staff 5B 1 29 02:06 alink -> a.txt
可以发现文件和指向文件的软链接的 inode 编号不同,说明是两个文件
原理上,硬链接和源文件的 inode 节点号相同,两者互为硬链接。软连接和源文件的 inode 节点号不同,进而指向的 block 也不同,软连接 block 中存放了源文件的路径名
实际上,硬链接和源文件是同一份文件,而软连接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向
使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接