Linux系列教程(七)——Linux常用命令之链接命令

在Linux系统中,链接分为下面两种:

硬链接:相当于文件的多个入口,作用:备份文件,创建快照等
软链接:相当于windows的快捷方式

1、链接命令

一、生成链接文件命令:ln

①、命令名称:ln
②、英文原意:link
③、命令所在路径:/bin/link
④、执行权限:所有用户
⑤、功能描述:生成链接文件
⑥、语法: ln -s 【源文件】【目标文件】
        -s    创建软链接
       不加 -s 创建硬链接

二、软链接

如,创建文件 /etc/issue 的软链接 /test/issue.soft:ln -s /etc/issue /test/issue.soft
Linux系列教程(七)——Linux常用命令之链接命令
我们看到软链接文件的特点:
我们可以看到:

第一:软链接 前面是 l 开头的(link);
第二:软链接的前面都是 lrwxrwxrwx,也就是说软链接所有者和所属组具有全部操作的权限,rwxrwxrwx;
第三:软链接类似与 windows 的快捷方式,有一个明显的箭头指向,而指向的是源文件,虽然软连接对所有人都有权限,但是到底你能不能访问源文件或者对源文件有什么权限则取决于源文件的权限;
第四:若源文件被删除,软链接则无法访问。

三、硬链接

如,创建文件 /etc/issue 的硬链接 /test/issue.soft:ln /etc/issue /test/issue.hard
Linux系列教程(七)——Linux常用命令之链接命令
我们可以看到:
第一:硬链接是 - 开头,表示文件;
第二:硬链接文件除了文件名与源文件不一样,其余所有信息都是一样的。类似于 cp 复制操作。但是又和复制不一样,硬链接可以同步更新。
第三:若源文件被删除,硬链接依然可以访问。

下面我们来演示一下:
Linux系列教程(七)——Linux常用命令之链接命令
可以看到,当我们在源文件末尾添加内容后,硬链接中也同步更新了内容,所以我们在linux系统中写一些shell脚本的时候,可以给文件创建一个硬链接,放置隐秘一点的地方当做实时备份,防止被别人误修改或者删除。

四、硬链接同步更新原理

那么,为什么硬链接可以实现同步更新呢?
我们使用ls -i 查看一下源文件、软链接、硬链接的i节点如下:
Linux系列教程(七)——Linux常用命令之链接命令
所谓i节点,Linux系统内核处理的对象都要有一个唯一的数字标识,所以每个文件都有一个数字标识,这个数字标识就叫做文件的i节点。如果出现一些异常情况文件丢失了i节点,那么这个文件将无法访问。需要注意的是,一个i节点可以对象多个文件。

查看文件i节点可以看到:发现硬链接和源文件的 i 节点是相同的,而软链接与源文件的 i 节点是不同的,所以一个i节点同时映射到了两个文件,才实现了同步更新。

还有一点,不允许将硬链接指向目录;不允许跨分区创建硬链接