软链接就类似快捷方式,或者网页上超级链接:跟原文件一样,也同步更新,但不占空间 。如果原文件被删除,那磁盘空间立刻释放(文件真没了),软链接本身不会被删除,但由于指向的文件已经不在了,所以链接会失效 。
软连接很常用(相比硬链接) 。比如你有一个软件需要读取cc.conf这个配置文件,但你有好几套配置文件,常规的方法是用哪套就把哪套改名(或复制)成cc.conf,不用的暂时就叫cc1.conf,cc2.conf这样 。
但这样有很多问题,第一,不看内容你也不知道现在的cc.conf到底是哪一套 。第二,如果是改名,改来改去容易把文件弄丢 。如果是复制,你修改了cc.conf还要记得复制一下,不然下次一切换就修改的部分就丢了 。
用软链接就很容易了,你把cc.conf做成软链接,想用哪个就指向哪个就行了 。想看当前用的是哪个ls -l就能看到,所有修改都会同步,你还不怕把foo.conf会弄丢 。
硬链接跟软链接差不多,但指向的不是文件,而是底层的文件系统 。也就是如果原文件被删,磁盘空间并不会释放,硬链接也不会失效 。如果要删掉文件(释放空间),就要删掉它所有的硬链接 。
硬链接用的少,但有一些很有意思的用法,比如增量备份 。
假设你有很多很重要的文件,需要每天备份一次,因为有些时候需要回溯到某特定一天的版本 。最简单粗暴的办法就是每天备份一次,但长期下来容量必然吃不消 。所以我们用硬链接来做增量备份 。
硬链接增量备份的原理如下图所示
文章插图
第一天,备份为Backup 1,里面有三个文件,没什么好说的 。
第二天,备份为Backup 2,还是三个文件,但File3修改了 。这样File1,File2做硬链接,File3保存新版
这样文件系统上其实只存了File1,File2,File3和修改过的File3,但你在第一天和第二天的文件夹里可以看到当天完整的File1,File2和File3 。这样即使每天备份一次,其实也占不了多少空间,但却可以像每天备份一次那样,可以在指定日期的文件夹里找到所有文件那一天的版本 。
【Linux 软链接和硬链接区别】更妙的是删除的时候也会智能释放空间,比如上图的情况,这时候如果删除第一天的备份(Backup 1),File1和File2由于还有第二天的硬链接,所以不会被删除 。File3(Changed)会保留,但第一天版本的File3则会被删除,释放空间 。
所以你还可以把备份规则写到风骚,比如过去1周每天保留一个备份,一周以前一个月以内每三天保存一个备份,之后每周保存一个版本,最多保存过去一年的,之类的 。
推荐阅读
- 环境准备和Docker安装 Linux安装Docker、K8s
- linux任务后台执行
- linux系统转义符有哪些?
- Linux|开源软件巨头发布Euler Linux 2.0:支持华为鲲鹏、飞腾处理器
- 最小linux桌面系统?世界上最小的计算机
- linux之inode文件系统详解
- VMware Workstation Linux 安装及桥接网络
- 简单解析关于linux内核模块的Makefile
- linux系统wget下载工具使用
- 原理和方法 在Linux系统上刷新dns缓存