软连接和硬连接
ln -s file file.s
: 创建一个软链接,软链接就像windows 下基于文件路径创建的快捷方式,软链接行为和 windows 下的快捷方式差不多.
-rw-r--r-- 1 sangxiaoqian staff 5 6 12 23:56 a.txt
lrwxr-xr-x 1 sangxiaoqian staff 5 6 12 23:56 a.txt.s -> a.txt
这里软链接的大小是文件路径,所以如果是用相对路径创建的软链接,在软链接移动之后就会失效,无法访问。
$ ln -s a.txt a.txt.s
$ mv a.txt.s mydir
$ cd mydir
看到软连接a.txt.s失效
创建软链接最好使用绝对路径,移动后,绝对路径创建的软链接不会失效
ln -s /home/sangxiaoqian/code/a.txt a.txt.s
ln file file.h
: 创建一个硬链接,无论更改哪个硬链接或者文件本身,这三个文件的变化同步
创建硬链接后,文件的硬链接计数+1
sangxiaoqian@MBP-GDQ7F0673C-2307 Downloads % ls -l
total 48
-rw-r--r-- 3 sangxiaoqian staff 5 6 12 23:56 a.txt
-rw-r--r-- 3 sangxiaoqian staff 5 6 12 23:56 a.txt.h
-rw-r--r-- 3 sangxiaoqian staff 5 6 12 23:56 a.txt.hard
产生这种同步变化的原因: 文件和硬链接的 Inode 是相同的,每个文件都有唯一的 Inode,对于同一个文件,无论有多少引用,在访问时,都是这个文件,所以修改就是同步的
sangxiaoqian@MBP-GDQ7F0673C-2307 Downloads % stat a.txt
16777233 3619962 -rw-r--r-- 3 sangxiaoqian staff 0 5 "Jun 13 00:04:34 2022" "Jun 12 23:56:25 2022" "Jun 13 00:04:34 2022" "Jun 12 23:55:32 2022" 4096 8 0 a.txt
sangxiaoqian@MBP-GDQ7F0673C-2307 Downloads % stat a.txt.h
16777233 3619962 -rw-r--r-- 3 sangxiaoqian staff 0 5 "Jun 13 00:04:34 2022" "Jun 12 23:56:25 2022" "Jun 13 00:04:34 2022" "Jun 12 23:55:32 2022" 4096 8 0 a.txt.h
当删除一个硬链接时,文件的硬链接计数-1,当这个计数减为 0 时,才会删除这个文件