🎁个人主页:我们的五年
🔍系列专栏: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权限方面:
硬链接指向的还是目标文件,权限和目录文件一样。软链接有新的文件,权限也是独立的。