<返回更多

Linux 软链接和硬链接区别

2022-06-24    爱生活的画板M
加入收藏

软链接就类似快捷方式,或者网页上超级链接:跟原文件一样,也同步更新,但不占空间。如果原文件被删除,那磁盘空间立刻释放(文件真没了),软链接本身不会被删除,但由于指向的文件已经不在了,所以链接会失效。

 

软连接很常用(相比硬链接)。比如你有一个软件需要读取cc.conf这个配置文件,但你有好几套配置文件,常规的方法是用哪套就把哪套改名(或复制)成cc.conf,不用的暂时就叫cc1.conf,cc2.conf这样。

但这样有很多问题,第一,不看内容你也不知道现在的cc.conf到底是哪一套。第二,如果是改名,改来改去容易把文件弄丢。如果是复制,你修改了cc.conf还要记得复制一下,不然下次一切换就修改的部分就丢了。

用软链接就很容易了,你把cc.conf做成软链接,想用哪个就指向哪个就行了。想看当前用的是哪个ls -l就能看到,所有修改都会同步,你还不怕把foo.conf会弄丢。

硬链接跟软链接差不多,但指向的不是文件,而是底层的文件系统。也就是如果原文件被删,磁盘空间并不会释放,硬链接也不会失效。如果要删掉文件(释放空间),就要删掉它所有的硬链接。

 

硬链接用的少,但有一些很有意思的用法,比如增量备份。

 

假设你有很多很重要的文件,需要每天备份一次,因为有些时候需要回溯到某特定一天的版本。最简单粗暴的办法就是每天备份一次,但长期下来容量必然吃不消。所以我们用硬链接来做增量备份。

硬链接增量备份的原理如下图所示

Linux 软链接和硬链接区别

 

第一天,备份为Backup 1,里面有三个文件,没什么好说的。

第二天,备份为Backup 2,还是三个文件,但File3修改了。这样File1,File2做硬链接,File3保存新版

这样文件系统上其实只存了File1,File2,File3和修改过的File3,但你在第一天和第二天的文件夹里可以看到当天完整的File1,File2和File3。这样即使每天备份一次,其实也占不了多少空间,但却可以像每天备份一次那样,可以在指定日期的文件夹里找到所有文件那一天的版本。

更妙的是删除的时候也会智能释放空间,比如上图的情况,这时候如果删除第一天的备份(Backup 1),File1和File2由于还有第二天的硬链接,所以不会被删除。File3(Changed)会保留,但第一天版本的File3则会被删除,释放空间。

所以你还可以把备份规则写到风骚,比如过去1周每天保留一个备份,一周以前一个月以内每三天保存一个备份,之后每周保存一个版本,最多保存过去一年的,之类的。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>