软连接是对某个文件创建的快捷方式,
当实体文件删除,软连接将变成无效链接,当软连接删除实体文件并无影响
软连接和实体文件的i节点不同
硬链接需要root权限创建,是对文件磁盘i节点的备份
硬链接与实体文件共享一个i节点,i节点的链接计数 +1,类似于c++里的shared_ptr,
删除实体文件或者硬链接,文件数据并不会删除,只会讲i节点的链接计数 -1,当计数为0的时候才会删除文件
swing@ubun:~/tmp$ ls -il lsw.txt
1333677 -rw-rw-r-- 1 swing swing 0 2月 24 19:44 lsw.txt
swing@ubun:~/tmp$ sudo ln lsw.txt lsw.hard
[sudo] swing 的密码:
swing@ubun:~/tmp$ ls -il
1333677 -rw-rw-r-- 2 swing swing 0 2月 24 19:44 lsw.hard
1333677 -rw-rw-r-- 2 swing swing 0 2月 24 19:44 lsw.txt
可以看出lsw.hard 和lsw.txt 的i节点都是1333677,链接数变成2
swing@ubun:~/tmp$ ln -s lsw.txt lsw.soft
swing@ubun:~/tmp$ ls -il
1333677 -rw-rw-r-- 2 swing swing 0 2月 24 19:44 lsw.hard
1333676 lrwxrwxrwx 1 swing swing 7 2月 25 09:48 lsw.soft -> lsw.txt
1333677 -rw-rw-r-- 2 swing swing 0 2月 24 19:44 lsw.txt
软链接的i节点不用,计数也不会增加,类型是l,link类型
swing@ubun:~/tmp$ echo "lisiwen debug" > lsw.txt
swing@ubun:~/tmp$ cat lsw.txt
lisiwen debug
swing@ubun:~/tmp$ cat lsw.soft
lisiwen debug
swing@ubun:~/tmp$ cat lsw.hard
lisiwen debug
往实体文件写数据,两个链接都能感知到
swing@ubun:~/tmp$ rm lsw.txt
swing@ubun:~/tmp$ ls -il
总用量 140364
1333381 drwxr-xr-x 17 swing swing 4096 1月 25 11:04 ffmpeg
1333538 -rw-r--r-- 1 swing swing 143723485 1月 25 11:04 ffmpeg_src.tar
1333677 -rw-rw-r-- 1 swing swing 14 2月 25 09:52 lsw.hard
1333676 lrwxrwxrwx 1 swing swing 7 2月 25 09:48 lsw.soft -> lsw.txt
swing@ubun:~/tmp$ cat lsw.hard
lisiwen debug
swing@ubun:~/tmp$ cat lsw.soft
cat: lsw.soft: 没有那个文件或目录
swing@ubun:~/tmp$
删除实体文件,软链接失效,硬链接还能正常,i节点链接计数 -1