每天学命令-ln软硬链接
本文最后更新于:7 个月前
Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。这有点像Windows环境下的快捷方式。介绍命令前了解一下软链接,硬链接具体是什么。
硬链接 Hard Link
在 Linux 系统中,每个文件对应一个 inode
,文件的内容在存储在 inode
指向的 data block
中。要读取该文件的内容,需要通过文件所在的目录中记录的文件名找到文件的 inode
号,然后通过 inode
找到存储文件内容的 data block
。当然多个文件名可以指向同一个inode
。
使用ll
命令显示文件的详细信息,-i
参数显示其结点信息,其中最前面的一串数字就是inode
信息。我们以/opt/test.txt
文件为例,查看其结点信息。
1 |
|
使用 ln
命令在/opt/temp
目录下创建一个 test.txt
文件的硬链接,然后观察其文件属性:
1 |
|
我们再用ll -i
命令查看结点信息,发现这两个文件名的结点信息是一样的。说明这两个文件名指向的是同一个文件。其中第三个字段是链接数,数字2
,表示有两个文件名链接到同一个inode
。
硬链接的特点
- 硬链接,以文件副本的形式存在。但不占用实际空间。
由于硬链接只是在目录中添加了一条包含文件名和 对应 inode 的记录,所以它几乎不会消耗额外的磁盘容量。 - 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
- 只要还有一个文件名引用着文件,文件就不会被真正删除
删除硬链接所关联的文件时,其实只是删除了一条目录中的记录,真正的文件并不受影响。只有在删除最后一个硬链接时才会真正删除文件的内容数据。
软链接 Symbolic Link
软链接的实现方式与硬链接有本质上的不同。创建软链接时会创建一个新的文件(分配一个 inode
和对应的 data block
),新文件的 data block
中存储了目标文件的路径。
我们以/opt/test.txt
为例,在/opt/temp
目录中,为其创建一个软链接,然后查看其inode
结点信息。
1 |
|
- 第一个字段不同,说明是两个文件了
- 第二个字段表示权限,第一个字母表示文件类型,
l
说明书软链接文件 - 第三个字段表示链接数,仍然是
2
,说明软链接不增加源文件链接数 - 第六个字段是文件大小,新建的软链接文件时11字节,这就是
/opt/test.txt
的长度。
软链接特点
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
使用实例
ln [参数][源文件或目录][目标文件或目录]
为文件test.txt
创建一个硬链接
1 |
|
删除test.txt
的硬链接,因为是以副本形式存在的,所以直接用rm
命令将其删除即可。
1 |
|
为文件test.txt
创建一个软链接
1 |
|
删除软链接也一样,直接用rm
命令删除软链接的名称即可。
Reference
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!