软连接和硬链接

软连接是对某个文件创建的快捷方式,
当实体文件删除,软连接将变成无效链接,当软连接删除实体文件并无影响
软连接和实体文件的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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容