ln 命令用于给文件创建链接,根据 Linux 系统存储文件的特点,链接的方式分为以下 2 种:软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息
ln 命令的基本格式如下:[root@localhost ~]# ln [选项] 源文件 目标文件
选项:
-s:建立软链接文件。如果不加 "-s" 选项,则建立硬链接文件;
-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件;
创建硬链接:[root@localhost ~]# touch cangls
[root@localhost ~]# ln /root/cangls /tmp
#建立硬链接文件,目标文件没有写文件名,会和原名一致
#也就是/tmp/cangls 是硬链接文件
创建软链接:[root@localhost ~]# touch bols
[root@localhost ~]# In -s /root/bols /tmp
#建立软链接文件
这里需要注意,软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错。
软链接与硬链接的占用磁盘空间情况
软链接,相当于创建了一个快捷方式;而硬链接,以文件副本的形式存在,但不占用实际空间。
通俗的说,软链接,链接源文件没有了,链接文件相当于找不到家了,无法正常使用;而硬链接由于是以副本形式存在,链接源文件没有了,仍旧可以正常使用。[root@localhost test_ln]# du -h --max-depth=1
6.2G.
[root@localhost test_ln]# ls -lh ping.log
-rw-r--r--. 1 root root 3.4G May 10 02:00 ping.log
[root@localhost test_ln]# ln -s ping.log ping22.log
[root@localhost test_ln]# ln -d ping.log ping23.log
[root@localhost test_ln]# ls -lh ping*
lrwxrwxrwx. 1 root root 8 May 10 02:03 ping22.log -> ping.log
-rw-r--r--. 2 root root 3.4G May 10 02:00 ping23.log
-rw-r--r--. 2 root root 3.4G May 10 02:00 ping.log
-rw-r--r--. 1 root root 2.9G May 10 02:00 ping_tmp.log
[root@localhost test_ln]# du -h --max-depth=1
6.2G.
[root@localhost test_ln]# head -n 5 ping.log ping22.log ping23.log
==> ping.log <=