现在的位置: 首页 > 操作系统 > 正文

linux下的硬链接和符号链接

2019年06月11日 操作系统 ⁄ 共 1525字 ⁄ 字号 评论关闭

@author:corey

转载请注明出处

在了解这两种链接方式之前,我们先了解一下什么是inode

我们首先来看一看硬盘的整体结构

硬盘中包含很多硬盘盘片,这么硬盘盘片组成了“一摞”也就是一个”圆柱“的硬盘;

一个硬盘盘片是圆形的,在每个硬盘盘片上都有一个读写的磁头,将这个磁头固定,然后把盘片旋转一周,

那么这个磁头所走的一个圆周就是一个“磁道”,这一摞盘片相应的磁道,我们顾名思义的叫着”磁柱“

然后每一个磁道被分成很多个区域,我们叫做“扇区”扇区是最小的物理存储量,一般一个扇区的大小为

512个字节,也就是0.5k;

 

知道了磁盘的大体结构以后,我们再来看看怎么对硬盘进行分区,对硬盘进行分区的最小单位是”磁柱“,

分割完了以后我们就要进行”格式化“,在linux中进行格式化,我们要考虑block和inode,block就是由多个

扇区组成的,可以记录的最小单位,大小一般就是n*512byte,例如4k;

哪么inode是什么呢?block是记录文件内容数据的区域,inode就是距离该文件的属性以及他的block的位置等

信息的,所以每个文件都会至少占用一个inode,这也是为什么我们在系统里面删除文件了,还能够利用一些

工具恢复的原因,因为我们删除文件的时候只是把这个inode记录抹掉了,从而让系统找不到这个内容的入口,

当然,比如瑞星的文件粉碎就是直接把block里面的数据格式化掉了,言归正传,当linux在搜索文件的时间,

他会先搜索这个文件系统的inode table,然后对照里面的info查找相应的block,然后把磁头放在相应的位置

进行读写,在进行格式化的时候,inode的数量是可事先得出的,这也是一些文件系统的差异啦,当我们采取

某种文件系统的时候,他的block的容量假如是8k,那么硬盘大小/block大小,那么就可以得到inode的数量,

一个inode的大小是128byte,这样,我们的硬盘就被格式化了;

所以,一个分区被格式化以后,就被分成了inode table和数据库两打大部分,一个用来记录文件的属性信息和

该文件所对应的block,一个用来记录文件的内容;

下面,我们来介绍两种链接

1)硬链接:

硬链接就是再建立一个inode,将这个inode指向这个文件的block,事实上,这个文件的内容是不会发生改变

的,还是存储在原来block的里面,只不过,这个文件的内容通过查询原来的inode和后来建立的inode都可以

找到,所以,这也是为什么硬链接在删除了文件的时候,还是能够找到文件的原因,因为删除文件的时候,只

是把原来的inode删除了,但是block里面的内容并没有清空,依然可以通过后来的硬链接找到;

但是这样导致的问题是,一个目录本身是没有数据内容的,所以他本来就只消耗inode,而硬链接的inode会

指向block,所以,硬链接是不能指向目录的;

硬链接的缺点

1):不能指向目录

2):不能跨越文件系统;

 

符号链接:

符号链接会再建立一个独立的文件,而这个文件会让数据读取操作指向他链接的哪个文件,由于只是利用文件

作为了一个指向的动作,读取----->符号链接建立的文件------>真实文件的inode---------->真实文件的block

这里的意味颇像java web中的forward,如果删除了原文件,那么上面的传递链就会在真实的inode发生断裂,找

得不到原文件的内容block,这也是为什么符号链接在删除原文件的时候失效的原因;

 

在linux下面

建立硬链接shell命令是

ln source_file directory_file

符号链接命令是

ln -s(soymbolic) source_file directory_file

抱歉!评论已关闭.