linux硬链接与软链接
supper block:记录文件系统的整体信息,包括inode/block大小、总量、使用量、剩余量,文件系统格式与相关信息等
inode:记录文件的属性和所在的block号码(不记录文件名),一个文件只占用一个inode,大小固定为128bytes,12个直接、1个间接、1个双间接、一个三间接记录区
block:记录文件的实际内容,一个block最多存放一个文件,一个文件可能占用多个block
文件系统一开始就将inode与block规划好了,除非重新格式化或者利用resize2fs等命令更改文件系统的大小,否则inode与block固定后就不再变动
通过dumpe2fs 分区 可查看该文件系统的上述信息
软链接:ln -s 原文件 目标文件(如果不加参数s,默认为硬链接)
1.两者inode号不同,目标文件的inode号的指针指向原文件的inode号
2.相当于快捷方式,可以跨分区
3.删除链接文件对原文件无影响,删除原文件链接文件失效
4.修改原文件或链接文件,文件内容都改变
硬链接:ln 原文件 目标文件
1.两者inode号相同
2.只可对文件创建,不能对目录创建,不能跨分区
2.删除链接文件对原文件无影响,删除原文件对链接文件无影响
3.修改原文件或链接文件,文件内容都改变
[root@oldboy 1]# touch a.txt [root@oldboy 1]# ln -s a.txt s.txt ; ln a.txt h.txt [root@oldboy 1]# ll -i total 0 781850 -rw-r--r-- 2 root root 0 Oct 3 12:09 a.txt 781850 -rw-r--r-- 2 root root 0 Oct 3 12:09 h.txt #硬链接与原文件inode相同 781851 lrwxrwxrwx 1 root root 5 Oct 3 12:09 s.txt -> a.txt #软链接与原文件inode不相同 [root@oldboy 1]# echo 'hello'>>a.txt [root@oldboy 1]# cat h.txt ;cat s.txt #修改原文件,硬链接与原链接文件内容均修改 hello hello [root@oldboy 1]# echo 'hi'>h.txt #修改硬链接文件,原文件内容修改 [root@oldboy 1]# cat a.txt ;cat s.txt hi hi [root@oldboy 1]# echo 'nice'>s.txt #修改软链接文件,原文件内容修改 [root@oldboy 1]# cat a.txt ;cat h.txt nice nice [root@oldboy 1]# rm -rf a.txt [root@oldboy 1]# ll total 4 -rw-r--r-- 1 root root 5 Oct 3 12:12 h.txt lrwxrwxrwx 1 root root 5 Oct 3 12:09 s.txt -> a.txt #由于删除了原文件,此处链接文件指向的原文件a.txt一直闪烁,如果重新创建一个a.txt文件,链接文件恢复正常, [root@oldboy 1]# cat s.txt #删除原文件,链接文件失效,无法查看内容 cat: s.txt: No such file or directory [root@oldboy 1]# touch a.txt [root@oldboy 1]# cat a.txt ;cat s.txt #重新创建一个与原文件同名的文件,链接文件恢复正常,且内容保持与新创建的文件一致