要理解软硬链接,就先要从ext文件系统的存储原理说起
硬盘上最小的存储单位是sector, 大小为512bytes.
因为数据往往都大于512bytes所以我们把多个sector连起来存储数据, 这样做的目的是减少磁盘I/O的负担
这个多个连起来的sector叫做block。Block的大小是2的n次方倍512bytes
存储空间分为:数据区和元数据区
数据区:block存储真实数据,一般大小为1kb 2kb, 4kb
元数据区: inode存储元数据,包括inode索引,名称,大小,修改时间等,inode为128bytes
ls –i可以查看文件对应的索引编号
stat 可以查看文件的inode信息
inode信息里面的索引标号应该和擦看文件信息的索引编号相对应的,如下图,a文件的索引编号都为1052822
这里需要说明下,目录和文件在block存储的内容性质不一样
文件存储的是文件内容本身
目录要存储目录下所有文件的inode index和文件名,它的目的是帮助查找文件或其他目录
图详细描述了访问文件的过程
理解上图后我们来说说硬链接
我们考虑下如果/tmp目录下还有个b文件,它的inode index和a一样也是指向同一个inode
这是我们就是a,b是彼此的硬链接
查看方式是ls –l a 或ls–l b, 属主前有个2,就是说有另外一个硬链接
命令:ln被链接文件链接文件例如ln a b
软链接
b的inode指向的内容是a文件的路径,再通过这个路径查找inode
查看方式是
这里的b是指向a的,而大小就是1个字节大小.也就是a这个相对路径
命令:ln–s被链接文件链接文件例如ln –s a b
软硬链接的区别
软链接:
· 可以跨分区链接-因为指向的只是路径
· 可以链接文件或目录
· 删除不影响源文件-和windows的快捷键类似
硬链接
· 不可以跨分区链接-应为inode只能被本区的文件指向
· 不可以链接目录-目录下的目录可能指向父目录,产生死循环
· 删除使inode的链接数降低为0在整个文件删除