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  #重新创建一个与原文件同名的文件,链接文件恢复正常,且内容保持与新创建的文件一致

 

posted @ 2018-10-03 12:16  Forever77  阅读(194)  评论(0编辑  收藏  举报