copy,软链接,硬链接与inode,block实验(细致而易懂)

目录

一;inode概述

二;block块概述

三;软链接概述与实验

四;硬链接概述与实验 

 五;copy

六;总结

最后 


一;inode概述

inode 的作用:用来存数据的元信息的,所谓元信息指的就是该数据的一些属性,特性。
那我们的inode可以记录的信息有哪些?
可以是文件权限(rwx)的记录,文件的属主,属组,文件大小,时间戳等,这种存储文件元信息的区域就叫做 inode,因此,一个文件必须占用一个inode,但至少占用一个block,最理想的情况下就是一个文件对应一个inode和一个block,但是往往我们都是一个文件对应一个inode和多个block块,因为我们的文件数据往往都比较大,但所需要的inode却很小。这里我们在桌面创建一个文件1.txt.然后,我们再用ls -l命令看看inode到底是什么。我们看到ls -l命令下面有关于我们刚刚创建的1.txt信息,没错划蓝线的部分就是inode所储存的信息(有文件权限,所属用户,占用的大小,和创建的文件的时间),注意一下这里的数字1,这代表什么呢?我们后面做软链接和硬链接的实验的时候再来为大家揭晓。

 注:inode中并不包括文件名,其实文件名是存放在目录当中的,linux系统中一切皆文件,因此目录也是一种文件即查看目录中的文件,cd转目录后通过ls列目录里可以查看文件名,而我们每个inode都有一个号码,系统用inode号码识别不同的文件,系统内部不使用文件名,而使用inode号码来识别文件。

二;block块概述


block 的作用:用来存真正的数据内容
系统在读取硬盘数据时,并不会一个个扇区去读,而是一次性连续性读取多个扇区,即一次性读取一个块,这种多个扇区组成的块,是文件存取的最小单位,这里给大家补一个小的知识点,每个扇区(sector,磁盘的最小单位)默认是512B,而block块默认是4096B也就是8个连续的扇区嘛!这下大家就可以明白上面的话了吧!我们在分区的时候,系统会给我们划分好区域用于存放inode和block块。

三;软链接概述与实验

可以看成是 Windows 中的快捷方式, 可以让你快速链接到目标文件或目录, 它找到的是原文件名, 通过原文件名再找到真实的数据, 它自身有 inode源文件没有了,那么软链接也就失效了,我这里给1.txt创建一个软链接2.txt。

,然后我们往1.txt里面写数据,然后再打开1.txt和2.txt,我们发现,数据是一样的,那么这说明什么呢?我们假设1.txt文件用了一块inode1,用了一块block块1,其实当你点击这个软链接2.txt的时候,他底层还是用的1.txt的inode和block,自己本身没有任何数据(他自己会有一个inode来指向源文件的文件名,后面有图)。

 

有了上面的铺垫,当我们删除1.txt的时候(注意:这里我们要明白一点,我们删除一个文件,其实只是删除他的inode,并没有删除他的数据block,这一点在我们后面讲硬链接的时候会再次使用) ,2.txt就不能用了,因为在当前路径下,1.txt文件已经不存在了。其实要是我们再在当前路径下创建一个1.txt,你会发现它又可以使用了。这里我们将1.txt删除试试。我们发现2.txt不可以用啦!(Broken Link)

然后;我们再在当前路径下创建一个新的1.txt(与我们之前删除的文件同名) ,然后2.txt又可以用了,哈哈!,来了一个假冒的也能用。而且因为1.txt刚刚创建啥也没有,所以2.txt啥也没有(这里我就不展示了)。软链接只和文件的路径和文件名有关。这下你们应该深入的理解了软链接的作用了吧!

这是我们再用ls -l命令看看 我们发现这里的1.txt文件权限后面的数字1没有变化,还是数字1。这里我先不解释这里为什么没有变化。我们后面再来看。

 

这里我们再来看一张图片来理清楚这之间的关系,这下理解上面的话更是轻而易举了吧!

四;硬链接概述与实验 

它透过文件系统的 inode 来产生新的文件名, 注意不是产生新的文件, 换而言之, 就是一个文件使用了多个别名, 这个别名与源文件名都指向源文件的 inode

 

我们再给1.txt建一个硬链接3.txt ,我们发现这个时候这里的1.txt文件权限后面的数字1变成了二

 这时我们再往1.txt里面写入数据,然后打开1.txt和3.txt,我们发现二者都有数据

这时我们在删除1.txt,我们发现3.txt还是可以使用

 其实,如果把文件的block块比作身体,那么硬链接就是给身体多长一个头,即使原来的头没了,新加的头还是可以使用身体(就是block块)。我们还可以往里面写新的数据(听懂了前面理解这里也很简单)。

 这时我们再来新建一个文件照样是1.txt,看是什么情况,我们发现1.txt和3.txt不一样,这其中的缘由我相信不需要我多讲了!(新建一个文件,那肯定至少会新建一个inode和block块呀!与原来的block本来就不同

现在我们来填一下之前的坑,就是文件权限后面的数字到底代表了什么,其实它代表了,源文件的inode(画圈的地方)被多少文件名引用了,其实就是源文件有几个头。

我们再来继续看。我又为3.txt创建了两个硬链接4.txt和5.txt就是说又多了两个头

然后,我们用ls -l来看看 ,不出所料变成了3,因为源文件的头有3.txt,4.txt和5.txt(最原始的头1.txt已经被删了)

 五;copy

复制源文件, 产生一个全新的文件, 与源文件没有关系了, 修改新文件内容与源文件无关,就是说copy就是源文件的克隆人,不同的头(inode)还有不同的身体(block),只是存放的数据相同

六;总结

1. 硬链接文件与源文件 inode 相同, 而软连接是不同的

2.删除软连接文件和硬链接文件, 对源文件没有任何的影响

3. 删除源文件, 软连接失效, 硬链接无影响(还可以访问内容)

4. 删除源文件和硬链接, 整个文件会被真正的删除
 

最后 

 本次的实验就到这里了,如果有讲得不对的或者有所欠缺得地方,欢迎大家来指正与补充,创作不易,还请点个赞再走吧!后面我还会更新其他计算机方面的博客,咱们下篇博客再见!

 

猜你喜欢

转载自blog.csdn.net/weixin_64972949/article/details/130077484
今日推荐