软连接与硬链接区别

前言:

今天学习了文件系统,简单的接触到文件系统构成的原理。原来我们不管在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 10:55
下一篇 2016-10-31 10:56

相关推荐

  • 本周学习总结

    这周我们学习了很多比较深的命令,有点烧脑,这次我总结一下sed命令。      sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的容送往屏幕。然后读入下行,执行下一个循环。如果…

    2017-08-28
  • Mariadb基于ssl的主从复制

    Mariadb基于ssl的主从复制 一、前言 备份数据库是生产环境中的首要任务,重中之重。一般配置中mariadb的主从传输是明文传输,但是有时候对一些特殊业务来说是不允许的,为了保证数据在传输过程中的安全性,因此使用基于SSL的复制会大大加强数据的安全性。 二、准备工作 1、实验系统环境: CentOS7.2,SELinux关闭,iptables关闭,安装…

    Linux干货 2017-02-24
  • 计算机;GPL等开源协议;Linux 哲学思想的炼成;MBR & GPT—fazion in magedu 20.July

    入门Linux的基础知识 fazionlan blog in 178Linux.July 22nd. 第一台计算机 1946第一台计算机ENIAC(electronic numerical integrator and calculator)在美国滨州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道而研制的 冯诺依曼体系结构:1946年数学家提出运算器、控制…

    Linux干货 2016-07-29
  • 用户、组及其管理

    用户和组管理    Linux是一个多用户、多任务的操作系统。多用户、多任务就是可以在系统上建立多个用户,多个用户可以在同一时间内登录同一台主机的系统执行不同的任务,而互不影响。例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内root用户可能在管理维护系统,www用户可能在修改自己的程序和操作…

    Linux干货 2016-08-04
  • rsyslog+mariadb+loganalyzer实现日志采集分析

    一、总述   Linux的日志记录了用户在系统上一切操作,这些日志是使用者了解服务器的情况最好的资料。Rsyslog 是系统的一部分,能够实时的写日志,并且还可以将日志选择性的发送到远程日志服务器。   rsyslog日志服务器的优势:     1、日志统一,集中式管理     &nbsp…

    Linux干货 2017-01-10
  • fstab配置文件详解

    /etc/fstab配置文件详解 /etc/fstab:记录了计算机上硬盘分区的相关信息,启动Linux时,检查分区的fsck命令,挂载分区的mount命令,都需要fstab这个文件的信息,来正确的检查和挂载硬盘,而且这个硬盘需要root用户权限才能编辑 详解: 设备名称   挂载点  分区的类型  挂载选项  dump选项  fsck选项 设备名称: 可以…

    Linux干货 2017-04-23