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、硬链接只有在同一个文件系统中才能创建。
图解说明:
Linux文件系统补充说明
鸟哥的书说的是:
因此,通常情况下,设置硬链接文件时,不会占用磁盘空间和inode。新建一个硬链接只是在某个目录(硬链接所在的当前目录)下的block里多写入一条关联数据而已。只有在当前目录的block刚好填满时,才有可能为当前目录新增一个block来记录文件名和inode的关联记录因为硬链接所用掉的关联数据量很小,所以说硬链接通常不会改变inode和磁盘空间大小。
关于iNode的文章:https://www.cnblogs.com/llife/p/11470668.html
一个iNode可以被多次引用,引用次数为0的iNode所对应的磁盘空间将被释放。
当我们用 ls -lh 命令去查看文件详情时,可以看到如下信息:
目标文件9.1KB,而软件连接只有7字节,可见软链接的确没有另外占用磁盘空间,只是做了一个链接。
但是,为什么硬链接也是9.1KB呢?不是说硬链接只是做引用,不做副本吗?怎么看着像是做了副本呢?
实际上,ls -lh 命令读取的资源大小是根据iNode来获取的,命令会拿到资源对应的iNode,然后去磁盘获取该资源所占用的空间,并回显。也就是说,和软链接相比,硬链接没有显示其自身的实际占用空间情况,而是显示其引用的资源占用空间情况。