Linux-硬链接和软链接

Linux-硬链接和软链接,第1张

文章目录
  • 硬链接
    • 硬链接定义
    • 硬链接案例应用
  • 软链接
    • 软链接定义
    • 软链接的案例应用
  • 硬链接与软链接的区别

硬链接 硬链接定义

硬链接:本质上是给一个文件取一个新的名称,实质上源文件和硬链接还是同一个文件。就相当于一个人有好几个名字,有学名、有乳名、还有绰号。虽然有不同的称呼,但实质上都指的是同一个人。就算去掉了一个名字,你还是你,并不会受去掉名字的影响。

以上截图是将/data目录下的f1.txt文件,创建硬链接到相同(/data)目录下dir1文件夹的f1.txt文件。创建硬链接之后,会在源文件的属性中显示文件的链接数。
如果删除了原文件,硬链接文件并不会受影响。

思考:硬链接可以跨分区吗,能将“/data”目录下的文件创建硬链接到“/opt”目录下吗?

不允许跨分区创建硬链接,就像每个人不允许有多个国籍一样!硬链接的本质是给同一个文件创建不同的名字,而在linux系统上,跨分区的文件就是不同的文件了。如果允许跨分区创建硬链接就违反了硬链接的实质。同时也不允许给文件夹创建硬链接。

硬链接案例应用

创建硬链接实例应用
如果需要删除mysql数据库中一张大容量表,如果还没有迅速的将用户隔离访问这张大表,如果硬删(直接使用 drop database tablename)则此时会瞬间产生大量的磁盘IO,瞬间的磁盘IO可能会将mysql系统压崩。此时应该将要删除的表硬链接到另一个文件中,因为硬链接的实质是同一个文件,所以此时删除原文件,并不会有瞬间的IO。即使有用户在访问也会访问硬链接的文件。这样就可以等到一个空闲的时候去删除这个硬链接文件了,这样就可以平滑的删除一个较大的mysql表库了。

软链接 软链接定义
#创建软链接的格式
ln -s filename [linkname]

软(soft)链接或者符号(symbolic)链接,类似于windows里的桌面快捷方式,软链接文件和原文件本质上不是同一个文件。
软链接的特点:
1.一个软链接的内容是它引用文件的名称;
2.可以对目录创建软链接;
3.可以对跨分区的文件实现软链接;
4.指向的是另一个文件的路径,其大小为指向路径字符串的长度;
5.创建软链接不增加或减少目标文件inode的引用计数;
6.软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录。

以上截图可以看出软链接和原始文件根据不是同一个文件,他们的节点编号、文件属性、文件大小等都不样。由此可见,软链接和原始文件是有主次之分的,而硬链接没有。硬链接和硬链接的原始文件访问的都是同一个文件,即使删除了原始文件,硬链接文件也不会受影响仍然可以访问。而软链接就不行,删除软链接的原始文件,软链接的文件就报错了。就像windows里的快捷方式一样,当删除快捷方式的原始文件后,再点击桌面的快捷方式就会提示“找不到对应的文件”。

创建软链接

相对路径创建软链接,注意参数软链接特点的第6条规范

软链接的案例应用

生产环境中在/usr/local/在会安装很多的应用软件,比如mysql的会安装在有版本号的文件夹下。但实际运维时并不希望带有版本号,而且软件版本会不断的升级。于是就可以创建一个没有版本号的mysql文件夹的软链接。于是生产环境用的路径就会用/usr/local/mysql,它指向了具体的版本如下图指向了mysql5.7.10.

攻城狮们一直是时代的弄潮儿,过一段时间mysql官方升级到了6.0.10版本了。这时运维就得升级原来的5.7.10了。但因为我们之前创建的软链接指向的版本号文件夹,所以此时我只要删除原来的软链接,将软链接指向新的版本就行了。

这就是一种平滑升级软件的思想,程序只知道访问mysql,殊不知我们底层已经偷偷更换了mysql的版本。这种思想的优越性还体现在,如果新版有Bug,我们还可以再将软连接的指向再改回指向旧版本(这中 *** 作称之为“回滚(rollback)”)。

硬链接与软链接的区别

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/731821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存