软连接硬连接

在学习过硬链接和软连接的知识后,我们在做实验的过程中会发现,创建的硬链接会占用磁盘的空间,而我们学习过成中了解到,硬链接只是创建一个文件与源文件相同的inode号,那怎么还会占用磁盘空间呢?i_f15.gif带着疑问,跟随夹克来进行一些实验进行验证并得出结论:

首先我们再来回顾一下关于 硬链接与软连接的知识:

硬链接的特点:

软连接硬连接_第1张图片

  i_f48.gifl  创建硬链接会增加额外的记录项以引用文件

l 对应用于同一文件系统上的一个物理文件

l 每个目录引用相同的inode 号

l 创建时链接数递增

l 删除文件时,递减链接数,当链接数为0时,该文件已被删除

l 硬链接的建立是不能越驱动器或分区的

l 语法为:ln filename linkname

软链接的特点:

软连接硬连接_第2张图片

i_f48.gifl与硬链接最大的不同就是,软链接并不使用相同的inode号,同时

    也不增加或减少目标文件inode的引用计数

l 创建的链接只是对应的指向源文件的路径,所以可以对目录进行链 接,硬链接中只能对文件进行链接,

l 既然软链接是指向的一个文件的路径,所以可以跨越分区进行。

l 语法为:ln –s filenamelinkname

硬链接测试:

从上面我们对硬链接和软链接的特点分析可知道,硬链接所创建的是一个使用相同的inode号,根据我们的理解,两个相同的文件对应一个inode号,指向硬盘中相同的数据群块,但是我们通过下面一个实验发现有些蹊跷,一起来看看吧!

在/app目录下创建一个文件,我这里创建了一个4.9G大的文件,

在这里插入图片描述

接下来我们来设置一个硬链接:

在这里插入图片描述
咦?怎么大小变成9.8G了呢?这完全是翻倍了呀!小伙伴们是不是有了疑问,统计的数据反应出硬链接占用了同的空间,我刚开始也很郁闷,一度怀疑是不是硬链接也占用了空间,所以随后我又查了两个文件的inode 号,如下:
在这里插入图片描述

表明两个文件公用的是一个inode号,所以证明它们指向的是同一个数据块(在文件系统中一个inode号对应一个数据块群),并没有重新占用其他的数据块,所以也并不是复制了相同的文件,同时当改变其中一个文件的数据后,查看与之硬链接的文件其数据也是随之同步的,这迹象也表明对应的是一个数据块,而正真的问题并不是硬链接的问提,是这个ll –h 或者 ls –h这命令进行统计文件总大小的时候并不是从磁盘进行统计的,而是根据文件属性中的大小叠加得来的。而硬链接的文件属性中的大小就是就是inode号对应的数据块的大小,所以total中进行统计就把各个文件属性中的大小加起来作为总和,这种统计是不标准,也不具有代表性的,正真的查看某个文件夹占用磁盘空间大小命令是:du –h 这个命令是从磁盘上进行统计,不会被文件的属性中大小影响,所以更准确,测试结果如下图所示:

在这里插入图片描述

从上面的测试中,我们看到真实的磁盘容量并没有改变,所以可以得出结论:

硬链接并不占用磁盘空间!i_f13.gif

软链接测试:

对于软链接就更好理解了,并没有出现想上面出现的问题,我们同样在/app目录下创建一个软链接,显示如下图:

在这里插入图片描述

从上面的测试结果我们看到,软链接的inode号并不一样,链接的文件所占用的空间也是极小的,这个链接文件C1的数据中仅存储了一个路径而已,所以这部分大小只是路径的大小。

从上面两个实验,我们可以得出一个结论

硬链接不占用磁盘空间,软链接占用的空间只是存储路径所占用的极小空间。

你可能感兴趣的:(工作心得总结)