当前位置:首页 » 《休闲阅读》 » 正文

【Linux课程学习】:站在文件系统之上理解:软硬链接,软硬链接的区别

25 人参与  2024年12月09日 08:00  分类 : 《休闲阅读》  评论

点击全文阅读


?个人主页:我们的五年

?系列专栏:Linux课程学习 

?追光的人,终会万丈光芒

?欢迎大家点赞?评论?收藏⭐文章

Linux学习笔记:

 https://blog.csdn.net/djdjiejsn/category_12669243.html

前言: 

本篇旨在认识软硬链接,站在操作系统OS的角度,学习完文件系统之后看待动静态库。学习他的目的最重要的是区分他们的不同,还有不同的应用场景和效果。希望本篇文件能够对你有所帮助。善于学习,勤于总结,乐于分享。

本篇重点知识点:

1.文件名不保存在inode中,如何理解,我们如何找到文件inode?

2.删除文件的本质是什么?

3.不准对目录建立硬链接,会产生环状目录。但是操作系统自己有建立了硬链接,影藏的.. 和 .。

4.为什么新建目录的硬链接数是2,普通文件的硬链接数是1?根目录的..文件如何理解?

目录

本篇重点知识点:

一.预备知识:

1.1文件inode:

1.1.1那么如何找到它在哪一个目录?

1.1.2为什么找到文件的inode就能找到文件的信息?

1.2文件的类别:

1.3文件的权限:

1.4文件硬链接数:

1.5其他:

二.软链接(soft link )(快捷方式)

2.1如何建立软链接:

2.2为什么说建立软链接会新建一个文件?

2.3软连接文件中的内容:

三.硬链接(hard link):

3.1理解硬链接:

3.2如何理解硬链接数:

3.2.1为什么新建目录时,硬链接数是2?

3.2.2对于根目录的。。

3.3inode引用计数=硬链接数:

四.不同点和相同点:

4.1文件系统方面:

4.2内容方面:

4.3独立的inode方面:

4.4删除行为:

4.5对目录方面:

4.6权限方面:



一.预备知识:

这一块的知识是文件系统的知识,说起这个就谈了一下我理解的,后面会进行复习编写一篇理解文件系统,理解磁盘的博客。

1.1文件inode:

下面最前的是文件的inode,inode是每个文件的唯一标识符,在inode中保存着文件的属性,还有一张表,这张表指向的是data block表示文件占用的块。在磁盘中,应该扇区大小可能是512字节,8个扇区构成一个块,所以一个块的大小为4KB大小。以后进行操作,都是以块为单位进行操作。就算只操作这个块上的一个字节内存,也要把整个块加载到内存,然后再修改,写回磁盘。但是注意:文件名不保存在inode中。

文件的inode是保存在该所在目录的inode的文件目录项(entry)中。 每一个目录项中,都会有文件名和inode的对应关系。所以当我们在这个目录下,就能知道该目录的inode,就能知道该目录下的所有文件。

ll -i :查看文件的inode

1.1.1那么如何找到它在哪一个目录?

这就是层层往上找的过程。但是必须知道家目录在哪,在操作系统启动的时候,就知道根目录,用户的家目录在哪,所以其他的文件都能找到了。文件名和inode是有对应关系的,但是可以让可以多个文件名对应一个inode,这样当删除一个文件时,还有其他的文件能知道文件inode。

1.1.2为什么找到文件的inode就能找到文件的信息?

如果有两个文件指向同一个inode,当删除一个文件时,断开了该文件名与inode的关系。在该目录下的文件项中就没有改文件名与inode的对应关系。但是我们还有另外一个文件与这个inode有对应关系,所以能在磁盘中找到这个文件。这就是备份的原理

1.2文件的类别:

新建一个普通文件以-开头;

新建一个目录是d开头;

建立软连接是开头;

1.3文件的权限:

后面的wrx,有三个,表示拥有者,所属组,和其他人的权限。-表示没有该权限。

1.4文件硬链接数:

表示该文件的inode与几个文件名直接有联系。新建一个目录的硬链接数是2,普通文件是1,为什么?在下面的硬链接时会讲,这里提一下是因为目录创建时,会在该目录下建立.指向自己,..指向新建目录的所在目录,所以新建目录,会让新建目录所在的目录的硬链接数+1。其他的下面再讲。

1.5其他:

其他就表示文件的拥有者和所属组,还有文件的大小,文件包建立时间,文件名等信息。


二.软链接(soft link )(快捷方式)

会新建文件,有新的inode就表示新建了文件。该文件中保存着指向文件的路径。很像windows下的快捷方式。

2.1如何建立软链接:

ln表示link的缩写,s表示soft。所以表示软链接,记忆还是很好记的。下面就表示给dir1文件建立软连接,lg文件指向log.txt文件。

ln -s log.txt lg

2.2为什么说建立软链接会新建一个文件?

因为它有独立的inode!!!

下面我们建立了一个软链接,但是这个两个文件的inode不是同一个。这一点就可以证明软连接是新建了文件的。当我们在dir1写入内容是,cat打印dr,也可以显示我们刚刚写入的内容。这就有点像和快捷方式靠了。

2.3软连接文件中的内容:

软连接新建文件,有独立的inode,内容中保存目标文件的路径,类似于windows下的快捷方式。


三.硬链接(hard link):

3.1理解硬链接:

在上面说可以查看文件的硬链接数。硬链接不是一个独立的文件

ln:不加-s 就表示硬链接。

下面表示我们新建硬链接以后,该文件的inode和我们指向文件的inode是一样的,本质是建立文件与已经存在的文件的inode之间的映射关系,所以硬链接在磁盘上没有新建文件。

3.2如何理解硬链接数:

3.2.1为什么新建目录时,硬链接数是2?

因为新建的目录,本身文件就指向该磁盘下的inode,此时硬链接数是1。但是目录创建时,还会在该目录下创建。指向自己,所以应链接数是2。inode的应用计数是2。

当我们在一个目录下新建一个目录,原来的目录硬链接数为3,因为新建目录中。。文件也是指向原来的目录的,所以原来的目录硬链接数是3。

3.2.2对于根目录的。。

更目录/没有上一级目录,他的。。还是指向自己。Linux操作系统为了让根目录和其他目录一样,没有区别。所以更目录中的隐藏文件。。虽然指向自己,但是它的硬链接数不会+1。这样才能保证根目录和其他的文件一样,没有差别。

下面所示的,看到根目录的inode是2,它的硬链接数是2,所以除了自己和。文件,它还有17个子目录。数下面的子目录,发现确实根目录下面有17个目录。

那么1是干什么的,还是可以去探讨的,可能是启动程序的inode,啊哈哈哈哈哈哈哈哈哈哈。

3.3inode引用计数=硬链接数:

这个也很好理解,在磁盘中,inode来管理文件。找到inode,就能在磁盘中找到文件的属性和内容。我们每新建一个文件与inode关联,就是可以通过文件名找到文件的inode。所以inode就要有引用计数。当引用计数为0时,才能表示文件被删除。


四.不同点和相同点:

4.1文件系统方面:

软链接可以跨越不同的文件系统,而硬链接只能在同一个文件系统中创建。

磁盘可能被分成几个区,每一个区可能用的是不同的文件系统。当然不同的区可以用同样的文件系统。一套文件系统,就会有inode bitmap等其他东西进行管理。在不同的文件系统中,相同inode表示的是不同的文件。硬链接就是去建立与inode的关系,所以如果跨文件系统创建文件系统,就会出错。

4.2内容方面:

硬链接直接指向文件的数据,而不是文件名或路径。软连接的内容保存的是目标文件的路径。

4.3独立的inode方面:

软连接有独立的inode,是新的文件。但是硬链接还是指向的inode,没有新建。

4.4删除行为:

软链接删除不会影响目标文件,因为软链接的文件中保存的是目标文件的路径。但是当目标文件被删除时,或者找不到的时候,就会发生找不到。

4.5对目录方面:

不能对目录建立硬链接,这样会目录树结构混乱。可以对目录进行软连接。

4.6权限方面:

硬链接指向的还是目标文件,权限和目录文件一样。软链接有新的文件,权限也是独立的。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/198408.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1