软/硬链接的“爱恨纠葛”

硬链接

概念

硬链接(hard link,也称链接)是对同一个文件系统中的一个文件的连接,它关联的是一个文件的inode(节点)。linux中每一个文件系统都有其一套独立而完整的inode“机制”。同一个文件系统中,inode是文件存在的唯一标识。文件名正是通过映射一个文件的inode号来关联一个文件。当然一个文件也可以同时拥有不同的几个文件名,因此通俗的来说,我们可以把硬链接看作是某个文件的一个或多个文件名。

硬链接的作用

大家可能会想了。一个文件要那么多文件名有什么用,一个就够了啊,为什么要另外再创建硬链接,岂不是多此一举。

当然不是,当你访问一个文件路径很深或者文件名很繁琐的文件时,可能会被那一长串根本记不住的文件名搞崩溃的。就好比有一个"歪果仁",他一个人的名字可能比我们一个家族的族谱都要长(你懂得)。当你每次需要跟他交流时要先把他家的”族谱”背一遍,我的天,你还有心情跟他交流吗?而突然有一天他告诉你,你可以用”歪果仁”来称呼他,你是不是会瞬间感觉”世界和平了”。没错,当我们需要经常面对一个令人想哭的文件名,而文件的位置又不方便变动时,就可以用链接的方式再给它起个名字,一劳永逸,岂不快哉。

硬连接的创建条件

         这么好用的工具是不是迫不及待想试试了。别急,工具虽好用,但是也不是随便就可以滥用的,硬链接是会有一些限制条件的。

首先,硬链接不能跨设备和分区建立。刚刚我们提到过,硬链接是关联文件的inode建立的,而每一个文件系统都有其完整的一套inode机制。也就是说不同的文件系统中可能会有相同的inode,但他们所代表的文件却着实不同。如此一来,跨分区和设备创建的硬链接岂不瞬间凌乱了。

还有硬链接也不能针对目录建立,也就是说不能给一个目录创建硬链接,别问我为什么,我也不清楚,反正OS就是这么要求的。^_^*

软/硬链接的“爱恨纠葛”

         最后,链接命名可以采用相对路径,而且相对路径是可以相对于当前工作目录来说的。

软/硬链接的“爱恨纠葛”

硬链接的创建

         man一下ln的用法:

软/硬链接的“爱恨纠葛”

         硬链接的使用很简单,要创建硬链接无需使用任何选项,其语法如下:

  ]# ln  TARGE  [FILENAME]

软/硬链接的“爱恨纠葛”

通过比较发现,链接文件和原文件除了文件名剩下的一模一样,而且原文件链接数会加一。当我们更改其中“任何一个文件”,访问“另一个文件”时发现内容发生了同样的变化。当删除其中一个文件时,即便是删除原文件,也只是连接数减少,而文件数据依旧可以被读取,并不受其影响。这也进一步说明,硬链接确实是同一个文件系统中某个文件的一个或几个文件名。

硬连接的特点

         综合以上几点,总结出硬连接的一些特性:

1、  硬链接不能跨越设备和分区创建;

2、  不能对目录创建硬链接;

3、  硬链接引用原文件的inode号,文件大小,时间等属性与原文件相同;

4、  创建硬链接会增加额外的记录项以引用文件,文件链接数会递增;

5、  即便删除原文件也不影响链接文件访问;

6、  删除文件时,链接数递减,文件要存在,至少得有一个链接数,当链接数为零,该文件就被删除了。

 软链接

可以看出,文件系统中使用链接真的方便了很多,但是硬链接的局限性不免让人觉得有些束手束脚,不能跨越分区,不能对目录创建等,总会让人觉得有些尴尬。对此,我们有下面一种补救措施,那就是软链接,又称符号链接。

概念

软链接(solf links)又称符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。

创建方法:

 ]# ln  –s  GARGET  DIRECTORY

软/硬链接的“爱恨纠葛”

注意:创建软链接时,原文件建议采用相对路径来书写,但是不能相对于当前工作目录,应该相对于链接文件路径书写。

         与硬链接不同,可以对目录创建软链接,软链接的inode号与原文件不同,而且原文件的链接数也没有递增。文件属性也都完全不同。由于软链接文件的内容是它引用的文件的名称,所以软链接的大小是原文件的文件名的字符数。

         软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了。

软/硬链接的“爱恨纠葛”

         在对符号链接进行读或写操作的时候,系统会自动把该操作转换为对原文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。

删除硬/软链接使用:

 ]# rm  link_file  或者

 ]# unlink  link_file

软链接的特性

综上所述,同样可以总结出一些关于软链接的特性:

1、  软链接可以跨越设备和分区;

2、  可以对不同文件系统中的目录或物理文件创建软链接;

3、  软链接的指向是另一个文件的路径,其文件大小为指向路径字符的长度;

4、  软链接文件有独属于自己的inode号,不增加或减少目标文件的链接数;

5、  删除原文件,不会删除软链接,但原文件就消失了,访问不到了,软链接就成了“无根之物;”

6、  使用ls  -L可以显示软链接的名称和它引用的文件。

原创文章,作者:Hulk,如若转载,请注明出处:http://www.178linux.com/53124

赞 (0)
HulkHulk
上一篇 2016-10-20 15:34
下一篇 2016-10-20 19:02

相关推荐

  • M25初尝试部署RAID磁盘阵列组

    在学习了linux系统管理硬盘设备的基础后,现在尝试部署RAID10硬盘组技术,在部署前我们先了解一下什么叫“RAID”磁盘冗余阵列(Redundant Array of Independent Disks)。 RAID技术就是把多块硬盘设备组合成一个容量更大、更安全的硬盘组,可以把数据切割成多个区段后分别存在各个不同物理硬盘设备上,然后利用分散读写需求赖提…

    2017-07-12
  • 磁盘管理之文件系统

    一,概述 文件系统是操作系统用于明确存储设备或分区上的文件的方 法和数据结构;即在存储设备上组织文件的方法。操作系统 中负责管理和存储文件信息的软件结构称为文件管理系统, 简称文件系统。  从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修…

    Linux干货 2016-09-05
  • awk入门应用

    awk概述使用语法常用命令选项相关输出命令print item1,item2,…printf FORMAT,item1,item2,….相关格式符相关修饰符相关内建变量相关内置函数相关操作符相关模式相关控制语句及示例if(condition) statementsif(condition){statements} else {statements}while…

    Linux干货 2016-12-04
  • N28-第一周

    *计算机的组成以其功能: 当今计算机系统由硬件系统和软件系统两大部分组成。硬件系统是指计算机的物理设备,包括CPU,存储器,输入/输出模块等。软件系统则是各种程序和数据的集合。 硬件结构的基本构成: 处理器: 用于控制计算机的操作,执行数据处理功能,是计算机硬件的核心。由控制器,运算器和一组寄存器组成。 控制器:负责根据读入的指令决定计算机的操作 运算器:负…

    2017-12-06
  • Linux硬链接、软链接的介绍及两者的区别

    一、硬链接 链接数就是名字的数量: ln(link) 硬链接,多个相同的inode文件(同分区),多个硬链接文件的存在在硬盘上只占用一个文件的容量 创建的硬链接是平等的,inode相同,删除某一个互不影响,其他文件仍然可以使用 硬链接的本质:给一个文件创建多个名字   创建多个硬链接,观察链接数的变化(+1),链接数是几就是有几个文件名 同一分区中…

    Linux干货 2016-08-04
  • Nginx基础

    Nginx基础 目录 Nginx概述 Nginx的优点 Nginx相比Apache 编译安装Nginx Nginx配置文件讲解 ngx_http_access_module模块 ngx_http_auth_basic_module模块 ngx_http_log_module模块 ngx_http_stub_status_module模块 Nginx概述 En…

    Linux干货 2016-11-01