ln(link)命令用于在文件或目录之间创建同步链接。当我们需要在多个目录中,使用到相同的文件时,通常我们会选择在这些不同的目录中将需要用到的文件都复制一份,这种做法会带来两个问题:
- 当原始文件被更改后,需要再次为每个目录重新复制一份,否则会造成同一文件存在多个版本
- 同一个文件被复制多份,会占用额外的磁盘空间
针对这种情况,我们引用Linux中一个非常重要的命令ln。
链接分类
在Linux中,链接可分为两类:硬链接(Hard Link)和符号链接(Symbolic Link),亦称软链接。默认的类型为硬链接。
硬链接(Hard Link)
硬链接就像一个文件有多个文件名,以文件副本的形式存在。硬链接主要的特性如下:
- 不能在不同的文件系统之间创建硬链接,即链接文件和被链接文件必须在同一文件系统中
- 硬链接无法引用目录
- 只能对已经存在的文件夹进行创建
- 删除硬链接文件并不影响被链接的文件
符号链接(Symbolic Link)
符号链接是为了克服硬链接的局限性而创建的。通过创建一个特殊的文件,该文件指向另一个文件的位置,所有的读写文件内容的命令被用于符号链接时,将沿着链接方向前进访问实际文件。类似于Windows中的快捷方式。
- 符号链接可以跨文件系统
- 符号链接可以对文件或目录创建
- 可对不存在的文件或目录创建链接
- 删除符号链接并不影响被指向的文件,但若被指向的原文件被删除,则相关的符号链接会成为死链接,若被指向的路径文件被重新创建,则死链接可以恢复为正常的链接
两者联系与区别
- 1.ln命令会保持每一处链接文件的同步性,即无论更改哪一个位置,其它的文件都会发生相同的变化
- 2.两者都是一种映射,硬链接映射到inode,符号链接仅是链接到一个路径。
简单的说,符号链接就像是快捷方式,而硬链接就像是备份。符号链接可以做跨分区的链接,而硬链接由于inode的缘故,只能是本分区中做链接,因此符号链接使用的频率要高一些。
基本语法
ln [参数] [源文件/目录] [目标文件/目录]
详细参数解释如下所示:
参数 | 功能 |
---|---|
-f | 如果在目标位置存在与链接名相同的文件,则删除该文件 |
-s | 符号链接 |
-d | 允许系统管理员创建目录的硬链接 |
-b | 对在链接时会被覆盖或删除的文件进行备份 |
示例
-
1、新建硬链接,并将原文件删除,再查看结果,示例如下:
12- ln示例-1_c2i.jpg
从示例中可以看到,使用硬链接会产生一个内容相同的文件firstbak.txt,效果相当于复制。因此当删除first.txt时,并不会影响到firstbak.txt
-
2、新建符号链接,并将原文件删除,再查看结果,示例如下:
12-2 ln示例-2_c2i.jpg
从示例中可以看到,使用符号链接仅产生一个指向来源文件的链接文件,当原文件被删除后,链接文件也跟着失败,是不是觉得跟Windows快捷方式很像?
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
网友评论