写在前面:
软链接与硬链接就像是快捷方式与真正的文件
为什么我们点击快捷方式就可以访问到文件呢?这是如何实现的呢?
这两者之间又有什么区别呢?
大家可以带着这样的疑问来阅读这篇博客
软链接文件/硬链接文件 :给一个源文件创建一个软链接文件/硬链接文件,就可以通过被创建出来的软链接文件/硬链接文件来操作源文件
通过 ln 源文件 软链接文件名/硬链接文件名
1.创建硬链接
ln 源文件 硬链接文件
2.创建软链接
ln -s 源文件 软链接文件名
使用 ls -l 查看文件详细信息
两者功能基本一致 对软硬链接的操作基本都可以对源文件中的内容产生相应的操作
例如 :
查看 三个文件中的信息
写入信息
可以看到都是一致的操作
但是其 inode节点号是不一样的
稍等这里讲一下inode 节点号是干嘛的
俗话说Linux下一切皆文件,而这些文件主要由一个文件系统来管理
而文件的存储流程是:
首先通过在文件系统里找到一个空闲的磁盘块存储文件的数据,然后文件系统会找到一个inode结点来存储文件的信息,例如文件存放的位置(即磁盘块的位置)、文件的大小、文件的属性等信息。当inode结点信息保存完毕,也代表着文件数据存储完毕,而每个文件都有一个唯一的indoe结点。所以实质上我们是通过这个inode结点来找到文件并对文件进行访问操作。
可以看到创建的硬链接和源文件的inode节点号是一样的 但是 软链接的不一样 indode节点号指向的文件指向源文件
软链接文件是一个单独的独立的文件 而硬链接文件是别名
软链接文件有自己的inode节点号
而软链接访问源文件的原理是因为 软链接文件中保存的其实是源文件的路径 因此其文件比较小 路径越长则软连接文件肯定会越大
这里我们可以在Windows下创建文件夹来看下效果
可以看到很明显的效果。
软硬链接之间区别:
硬链接文件本质上和源文件没有什么不同 都是一个文件的名称,与源文件共用同一个inode节点
软链接文件:本质上是一个独立的文件,有自己的indoe节点号,但是文件的数据中通过该软链接保存的源文件的路径进行访问
本质上的访问方式还有文件的内容是不一样的
例如当我们删除了源文件之后 我们会发现:
这边下面的硬链接还在但是 软连接就会显示找不到了
而我们访问硬链接里面的还可以找到原来的内容
区别 :
删除源文件,软链接文件失效,硬链接文件只是链接数-1;链接数 — 一个inode节点对应有几个目录项
删除一个文件,文件并不会立即被删除,而是直接删除了目录项信息,inode中的链接树-1,之后链接数位0 时 才会真正删除文件
软链接文件可以跨分区,硬链接文件不可以 因为软链接文件保存的是文件路径 是可以唯一的 但是硬链接不能
因此 软链接文件可以对目录创建软链接文件 但是硬链接不可以
软链接文件时通过自己保存的源文件路径来找到源文件数据的
保存的路径-》源文件的目录项-》源文件的inode-》源文件数据;
源文件一旦被删除,软链接文件无法通过保存的路径找到目录项
每个磁盘分区都有自己的文件系统;
有自己的文件系统意味着就有自己的一套inode节点,
linux下目录结构是唯一的
但是分区是不同的,分区可以有多个,可以挂在不同的目录上
目录本身就是跨分区的,因此无法给目录创建硬链接
一块磁盘可以有很多文件分区,但是至少有一个得是交换分区,用来作为交换内存使用;剩下得都是文件系统,进行文件存储管理
每一个文件系统分区都会有自己的文件系统,并且文件系统可以不同;
linux下目录结构只有一个,分区有多个,指的是将不同的分区的空间分配给某个指定的路径(将分区挂载到目录上,给某个目录分配一块独立的空间,因此目录结构只有一个,最上层是根目录,因此至少需要有一块分区挂载在根目录上
可以看到很多的磁盘分区的挂载的地方 第一个是挂在在根目录下的
其他的磁盘分区会有他自己的挂载的位置