软连接与硬链接区别

前言:

今天学习了文件系统,简单的接触到文件系统构成的原理。原来我们不管在linux和win上面删除某个文件只是删除一个链接而已。而linux把链接分为软链接和硬链接。接下来我们就从文件系统构成的基本原理出发来说明下linux软链接和硬链接的区别。

文件系统简述:

linux的哲学就是一切皆文件。为了方便人们的使用,我们可以通过看文件名来区分不同的文件。但作为只识别0 1 的机器,让它识别一串文字肯定复杂的多。所以linux文件系统用一串数字来标识一个文件,而且这个数字在文件所处的分区中是唯一存在的。这串数字就是inode号。那inode是什么? 文件主要有两个部分数据构成,即元数据(metadata)和数据(data)。数据就是我们向往文件中保存的数据,元数据则是一些与文件内容本身无关,但为了管理文件或者操作文件所必要的一些信息。比如:文件的大小,文件的权限等等。我们把数据以文件系统规定的方式存储在规定的地方(此内容在具体介绍文件系统时再深入了解),把元数据存储在一个叫做inode的局域。全称index node(索引节点)。inode也保存的元数据中包含了文件数据的位置。这也是系统能通过inode号找到文件的原因。

前文已经提到我们我们所能看到的文件名只是为了方便我们自己,而linux系统内部是不使用文件名,是使用inode号码来识别文件的。我们把文件保存在目录中。目录文件的结构非常简单,就是一系列项的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。一定得明白目录的本质。这样才有利于明白后面目录的读,写,执行权限。现在我们就可以好好说道说道,用户通过文件名,打开文件到底发生了什么。实际上,系统内部这个过程分成三步,首先,系统通过目录文件中的对应项,找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据在什么为位置,读取数据。

硬链接:

虽然文件包含了元数据和数据。但是这个两个数据并不是存储在一起的。分别划分两个专门的区域,一个区域(inode)保存元数据,一个区域保存数据。若一个inode号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名,即以不同的名字指向了同一个文件。因为inode号只在本分区中唯一,所以硬链接不能跨分区,而且硬链接不能指向一个目录文件。元数据中还保存了文件的硬链接个数,当我们删除一个硬链接时,文件的硬链接个数就减一,当硬链接个数为零时,这个文件所占有的空间就会释放。文件释放也仅仅是没有了指向数据的链接。数据本身依然还存在于磁盘中。所以我们一般删除文件的操作只是删除一个指向文件的链接而已。

软连接:

硬链接有自身的限制,比如;不能跨分区创建,不能对目录创建。而软链接则天生没有这样的问题,软连接是一个单独的文件有不同于被链接文件的inode号,而且软连接指向的不是文件的数据,而只是指向文件名,它并不关心文件的内容是什么。所以软连接会存在无效链接的情况,就是找不到被链接的文件。因为inode是占磁盘空间的,所以软连接文件本身也是有文件大小的并且会占用一个inode号,inode号本身也是有限资源。

软连接与硬链接区别

原创文章,作者:M21-陕西-李贤,如若转载,请注明出处:http://www.178linux.com/52950

(1)
M21-陕西-李贤M21-陕西-李贤
上一篇 2016-10-31
下一篇 2016-10-31

相关推荐

  • Linux用户和组管理

      用户和组管理类命令的使用方法 Liunx用户组管理命令: groupadd命令:添加组     命令用法:         groupadd [选项] group_name   &nbs…

    Linux干货 2016-11-25
  • 马哥网络教育班21期+第一周博客作业

    1、描述计算机的组成及其功能。   硬件:     CPU(运算器、控制器、一缓存(L1)、二级缓存(L2)):       运算器主要用来进行算数运算以及逻辑运算。       控制器主要是用来协调       一级缓存和二级缓存主要是用…

    Linux干货 2016-07-12
  • N28第五周

    1、简述rpm与yum命令的常见选项,并举例
    2、自建yum仓库,分别为网络源和本地源
    3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
    4、简述sed常用操作命令,并举例

    Linux干货 2018-01-03
  • 入门——计算机基础简介

    一、计算机系统 计算机系统:由硬件(Hardware)系统和软件(Software)系统俩大部分组成 二、计算机硬件 计算机(computer):是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速的处理,然后把处理结果输出的现代化电子设备。 计算机硬件组成部分 冯.诺依曼体系结构: 1946年数学家冯.诺依曼提出运算器、控制器、存储器、…

    2018-03-27
  • Linux命令之:setfacl和getfacl

    命令总结之:setfacl和getfacl acl:access control list,实现灵活的权限管理 除了文件的所有者,所属组合其他人,可以对更多的用户设置权限 acl生效顺序:所有者、自定义用户、自定义组、其他人 1、首先我们查看man帮助文档说明 [root@centos7 sixijie]# man setfac…

    Linux干货 2016-08-04
  • vim编辑器和bash算术入门

    vim末行模式:       内建的命令行接口      (1)地址界定          :start_pos[,end_pos]          #: 特定的第#行,例如5即第5行; &nbsp…

    Linux干货 2016-12-23