谈Linux中的硬链接和软链接

前言:在Linux中内存的存储方式和Windows下不太一样,对于学Linux来说这是一个最基础的小问题,要是这个都没有搞明白那么只能说对于Linux是了解不够的。

什么是链接?

链接是一种在共享文件和访问它的用户的若干目录项之间创建联系方式。

在往下说硬链接和软链接的时候,我们先来说一下硬盘的存储

对于硬盘存储

如图硬盘里面分为元数据部分和数据部分

对于数据来讲很好理解就是存储你的数据,那么什么是元数据?元数据,你可以理解为这个东西就是一个索引,当你想要查找数据的时候,你需要先在元数据中找到你想要找数据的位置的头地址,拿到这个头地址后再去数据部分去寻找存储的数据。

拿我们买的U盘来讲,买一个128G的U盘,你插到电脑上发现没到128G,可能只有117G,那么那十多G去哪里了,其实那10多G就是分给了元数据部分。

接下来我们来聊聊硬链接

硬链接是一个指针,指向inode(就是我们说的“钥匙”)。系统不为他们重新分配inode,两文件具有相同的inode。建立硬链接 用ln命令。

硬链接文件有以下两处限制:

  • 允许给目录创建硬链接

  • 有在同一文件系统中的文件之间才能创建链接

假设我们有一个文件q.txt,在数据部分已经存入了数据,我们如果想要访问数据的话,我们是通过q.txt在元数据拿到“钥匙”去数据部分找到对应的数据,当我们建立了硬链接,那么link.txt也指向q.txt指向的“钥匙”,不建立新的inode,不占用硬盘空间(优点)

当我们删除文件的时候,其实并没有真正的清除掉存储的数据,只是把进去查询数据的入口给切断了,当我们建立了硬链接后,我们删除掉q.txt如下图。

此时我们依然可以通过link.txt进行访问数据。

我们来聊一聊软链接

对于软链接我们对他并不陌生,可能你会说自己没有听说过软链接,那只是你没有了解他的名字,但是你一直再用这个链接,在Windows系统中,我们用类似软链接的形式,那些所谓的快捷方式就是“软链接”,我们应该删除过文件,没错,当我们把源文件删除后(其实就是删除了入口),我们采用的软链接就不能再访问文件数据了。

软链接也叫符合链接,这个文件包含了另一个文件的路径名。可以任意文件或目录。

软链接图示

软链接与硬链接不同,他们不公用一个“钥匙”,而是再元数据那新建了一个inode(我所称的“钥匙”),如图,红色的小点就是。当我们采用p.txt来访问数据的时候,过程:从p.txt在元数据找到inode,这个里面指向q.txt,如何在从q.txt去元数据那找到“钥匙”,然后去数据那去找存储的数据。

当我们删除掉源文件q.txt

q.txt指向“钥匙”的链接断了,所以我们用p.txt就没法在访问数据了。

实例

接下来我们在centos7里面进行操作一波,这个软硬链接。

硬链接

我们先来一个硬链接,创建一个空文档,在里面写入一句代码,然后对他创建硬链接。

创建空文档:touch 文件名,进去文档写:vim 文件名,创建硬链接:ln 文件名 新文件名

先创建然后从硬链接访问,删除源文件然后再用硬链接还可以继续访问

软链接

同样创建一个空文档,建立一个软链接:ln -s 文件名 新文件名

看完这些估计应该对这有了了解,鄙人不才,如有不对的地方清多多指教。

猜你喜欢

转载自blog.csdn.net/qq_61897141/article/details/129629698