6.8 软硬方式链接

当引领大家学习完本章所有的硬盘管理知识之后,刘遄老师终于可以放心大胆地讲解Linux系统中的“快捷方式”了。在Windows系统中,快捷方式就是指向原始文件的一个链接文件,可以让用户从不同的位置来访问原始的文件;原文件一旦被删除或剪切到其他地方后,会导致链接文件失效。但是,这个看似简单的东西在Linux系统中可不太一样。

在Linux系统中存在硬链接和软连接两种文件。

硬链接(hard link):可以将它理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode连接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行链接。

软链接(也称为符号链接[symbolic link]):仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。

ln命令

ln命令用于创建链接文件,格式为“ln [选项] 目标”,其可用的参数以及作用如表6-6所示。在使用ln命令时,是否添加-s参数,将创建出性质不同的两种“快捷方式”。因此如果没有扎实的理论知识和实践经验做铺垫,尽管能够成功完成实验,但永远不会明白为什么会成功。

表6-6 ln命令中可用的参数以及作用

参数作用
-s创建“符号链接”(如果不带-s参数,则默认创建硬链接)
-f强制创建文件或目录的链接
-i覆盖前先询问
-v显示创建链接的过程

为了更好地理解软链接、硬链接的不同性质,接下来创建一个类似于Windows系统中快捷方式的软链接。这样,当原始文件被删除后,就无法读取新建的链接文件了。

  1. [root@linuxprobe ~]# echo "Welcome to linuxprobe.com" > readme.txt
  2. [root@linuxprobe ~]# ln -s readme.txt readit.txt
  3. [root@linuxprobe ~]# cat readme.txt
  4. Welcome to linuxprobe.com
  5. [root@linuxprobe ~]# cat readit.txt
  6. Welcome to linuxprobe.com
  7. [root@linuxprobe ~]# ls -l readme.txt
  8. -rw-r--r-- 1 root root 26 Jan 11 00:08 readme.txt
  9. [root@linuxprobe ~]# rm -f readme.txt
  10. [root@linuxprobe ~]# cat readit.txt
  11. cat: readit.txt: No such file or directory

接下来针对一个原始文件创建一个硬链接,即相当于针对原始文件的硬盘存储位置创建了一个指针,这样一来,新创建的这个硬链接就不再依赖于原始文件的名称等信息,也不会因为原始文件的删除而导致无法读取。同时可以看到创建硬链接后,原始文件的硬盘链接数量增加到了2。

  1. [root@linuxprobe ~]# echo "Welcome to linuxprobe.com" > readme.txt
  2. [root@linuxprobe ~]# ln readme.txt readit.txt
  3. [root@linuxprobe ~]# cat readme.txt
  4. Welcome to linuxprobe.com
  5. [root@linuxprobe ~]# cat readit.txt
  6. Welcome to linuxprobe.com
  7. [root@linuxprobe ~]# ls -l readme.txt
  8. -rw-r--r-- 2 root root 26 Jan 11 00:13 readme.txt
  9. [root@linuxprobe ~]# rm -f readme.txt
  10. [root@linuxprobe ~]# cat readit.txt
  11. Welcome to linuxprobe.com

出现问题?大胆提问!

因读者们硬件不同或操作错误都可能导致实验配置出错,请耐心再仔细看看操作步骤吧,不要气馁~

Linux技术交流请加A群:560843(),B群:340829(推荐),C群:463590(推荐),点此查看全国群

*本群特色:通过口令验证确保每一个群员都是《Linux就该这么学》的读者,答疑更有针对性,不定期免费领取定制礼品。

本章节的复习作业(答案就在问题的下一行哦,用鼠标选中即可看到的~)

1./home目录与/root目录内存放的文件有何相同点以及不同点?

答:这两个目录都是用来存放用户的家目录数据的,但是,/root目录存放的是root管理员的家目录数据。

2.假如一个设备的文件名称为/dev/sdb,可以确认它是主板第二个插槽上的设备吗?

答:不一定,因为设备的文件名称是由系统的识别顺序来决定的。

3.如果硬盘中需要5个分区,至少需要几个逻辑分区?

答:可以选用创建3个主分区+1个扩展分区的方法,然后把扩展分区再分成2个逻辑分区,即有了5个分区。

4./dev/sda5是主分区还是逻辑分区?

答:逻辑分区。

5.哪个服务决定了设备在/dev目录中的名称?

答:udev设备管理器服务。

6.用一句话来描述挂载操作。

答:当用户需要使用硬盘设备或分区中的数据时,需要先将其与一个已存在的目录文件进行关联,而这个关联动作就是“挂载”。

7.在配置quota磁盘容量配额服务时,软限制数值必须小于硬限制数值么?

答:不一定,软限制数值可以小于等于硬限制数值。

8.若原始文件被改名,那么之前创建的硬链接还能访问到这个原始文件么?

答:可以。

本文原创地址:https://www.linuxprobe.com/chapter-06.html   编辑:刘遄,审核员:暂无

为您推荐一些与本文相关的文章:

转载必需保留本文链接:https://www.linuxprobe.com/chapter-06.html

本文依据CC-BY-NC-SA 3.0协议发布,竭诚为读者提供Linux视频教程、Linux学习资料以及红帽考试资料等优质学习资源。