Linux ln链接命令说明

ln 命令

命令名称:ln

命令英文原意:link

命令所在路径:/bin/ln

执行权限:所有用户

功能描述:生成链接文件

语法:ln [选项 -siv] [原文件] [目标文件]

-s:创建软链接。不带这个选项则创建硬链接

-i:交互模式,文件存在则提示用户是否覆盖

-v:显示详细的处理过程

-b:删除,覆盖以前建立的链接

## 范例
ln fileOne fileOne.hard     ## 给fileOne文件创建一个fileOne.hard的硬链接
ln -s fileOne fileOne.soft   ## 同级目录下,给fileOne文件创建一个fileOne.soft的软链接
ln /usr/fileOne /tmp/fileOne.hard   ## 不同级目录下,给fileOne文件创建一个fileOne.hard的硬链接

## 注意:不同级目录下创建软链接时,必须使用绝对路径,否则软链接无效。
## 通过 ls -l 命令,就可以看到无效的软链接,链接目标字体为红色。

 

软链接与硬链接

Linux文件系统中,有所谓的链接(link),我们可以将其视为文件或目录的别名。而链接又可分为两种:硬链接(hard link)与软链接(symbolic link)。

硬链接的意思是一个文件可以有多个名称;而软链接的方式则是产生一个特殊的文件,该档案的内容是指向另一个文件或目录的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

不论是硬链接或软链接都不会将原本的文件复制一份,只会占用非常少量的磁盘空间。

软链接

  • 1、软链接,以路径的形式存在,类似于Windows操作系统中的快捷方式。
  • 2、软链接可以 跨文件系统 ,硬链接不可以。
  • 3、软链接可以对一个不存在的文件名进行链接。
  • 4、软链接可以对目录进行链接。

硬链接

  • 1、硬链接,以文件副本的形式存在,但不占用实际空间。
  • 2、不允许给目录创建硬链接。
  • 3、硬链接只有在同一个文件系统中才能创建。

 

图解说明:

Dingtalk_20210503194314.jpg

 

Linux文件系统补充说明

鸟哥的书说的是:

因此,通常情况下,设置硬链接文件时,不会占用磁盘空间和inode。新建一个硬链接只是在某个目录(硬链接所在的当前目录)下的block里多写入一条关联数据而已。只有在当前目录的block刚好填满时,才有可能为当前目录新增一个block来记录文件名和inode的关联记录因为硬链接所用掉的关联数据量很小,所以说硬链接通常不会改变inode和磁盘空间大小。

关于iNode的文章:https://www.cnblogs.com/llife/p/11470668.html

一个iNode可以被多次引用,引用次数为0的iNode所对应的磁盘空间将被释放。

当我们用 ls -lh 命令去查看文件详情时,可以看到如下信息:

image.png

目标文件9.1KB,而软件连接只有7字节,可见软链接的确没有另外占用磁盘空间,只是做了一个链接。

但是,为什么硬链接也是9.1KB呢?不是说硬链接只是做引用,不做副本吗?怎么看着像是做了副本呢?

实际上,ls -lh 命令读取的资源大小是根据iNode来获取的,命令会拿到资源对应的iNode,然后去磁盘获取该资源所占用的空间,并回显。也就是说,和软链接相比,硬链接没有显示其自身的实际占用空间情况,而是显示其引用的资源占用空间情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值