inode及硬链接和软链接

*inode*

当我们需要打开一个文件的时候,往往是输入打开文件的命令加上文件名,这时操作系统就会去硬盘上查找对应的文件,这里应该知道,Unix/Linux系统内部并不使用文件名来查找相应的文件,而是通过一个叫“文件索引节点”的inode来进行查找,而这个inode用来存放文件的元信息,比如文件的创建者、文件的size和文件的时间信息等等,而每一个文件也相应的对应一个inode。

*inode内容*

一个文件的inode往往包含以下信息

  1. 文件名和文件大小
  2. 文件链接数
  3. 文件的所属者Uid,文件的所属组Gid
  4. 文件的读写权限
  5. 文件的时间戳(Access:文件上一次打开的时间

    Modify:文件内容上一次变动的时间

    Change:inode上一次变动的时间)

  6. 文件数据Block的位置

可以用stat命令查看文件的inode信息

也可以用ls -i 文件名 来查看文件的inode号

表面上我们通过文件名来打开一个文件,实际上这里操作系统将经历如下步骤,首先找到文件名对应的inode号,其次通过inode号码获取相应的inode信息,最后根据inode信息找到文件数据的存储位置,读取相应的文件数据。

*硬链接*

在说文件的硬链接之前我想先提一下在C++中的深浅拷贝问题,浅拷贝就是多个指针指向同一块new出来的空间,在delete的时候就会有问题,所以我们一般用深拷贝,深拷贝中有写时拷贝也有用引用计数,其中引用计数就是用一个计数器来统计有多少个指针指向同一块空间,当计数器归零时才释放这块空间,否则多个指针共用一块空间,空间并不释放。

文件的硬链接其实就是引用计数的思想,Unix/Linux系统中允许多个文件对应同一个inode号码,也就是可以用不同的文件名访问同一个文件,也可以进行修改,但会影响所有硬链接文件,删除一个文件,并不影响其他文件的访问,这就是硬链接(hard link)。

可用ln 源文件 目标文件 这条命令来创建硬链接,当创建完成,文件的inode信息中,文件的链接数会+1,如下图:

而当删除一个硬链接文件时,文件inode信息中文件的链接数就会-1,而当文件的链接数减到0时,系统就会回收这个inode号码以及block区域供下一个新创建的文件使用:

*软链接*

举个栗子,有文件A和文件B,其inode号码并不相同,但文件A中的内容是文件B的路径,因此访问文件A时其实就是访问的文件B,此时文件A就叫文件B的软链接(soft link)或符号链接(symbolic link)。

可以用ln -s 源文件 目标文件 命令来创建文件的软链接,软链接中文件inode信息中文件的链接数并不会发生变化:

软链接中文件A依赖文件B而存在,当删除了文件B,打开文件A时系统就会报错:

《完》

时间: 2024-10-18 01:51:07

inode及硬链接和软链接的相关文章

(转)Linux硬链接、软链接及inode详解

inode 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4KB,即连续八个 sector组成一个 block. 文件数据都储存在"块"中,那么

Linux中inode详解,硬链接和软链接介绍

inode 详解   在Linux中,我们经常会做一些关于数据的操作(备份.传输.压缩等)或是要在后台持续的运行一些程序.由于,工作的数据量很大或者工作要持续很长的时间,我们就必须保证这个终端的启动,一旦终端关闭了,它所运行的进程也会关闭,我们所做的工作就可能前功尽弃.但是,即使我们不主动的关闭终端,终端有的时候也会应为一些原因(网络.锁屏等)而中断,导致我们的工作进度清零. 1.inode 定义 inode是用来存储文件元信息的区域.中文译名叫做"索引节点".   简单来说,inod

浅析Linux文件(一)inode与block、硬链接与软链接、恢复误删文件

一.inode与block 1.inode和block概述 文件数据包括元信息与实际数据,一个文件必须占用一个inode,但至少占用一个block. 扇区:文件存储在硬盘上,硬盘的最小存储单位是扇区,每个扇区存储空间是512字节.block(块):连续的八个扇区组成一个block,block是文件存取的最小单位,用来存储文件数据.inode(索引节点):也叫i节点,用于存储文件元信息. 2.inode的理解 (1)inode包含文件元信息: 文件的字节数 文件拥有者的User ID(UID) 文

Linux硬链接、软链接的创建及两者的区别

一.硬链接 链接数就是名字的数量: ln(link) 硬链接,多个相同的inode文件(同分区),多个硬链接文件的存在在硬盘上只占用一个文件的容量. 创建的硬链接是平等的,inode相同,删除某一个互不影响,其他文件仍然可以使用. 硬链接的本质:给一个文件创建多个名字. 创建多个硬链接,观察链接数的变化(+1),链接数是几就是有几个文件名. 同一分区中,同一个inode号必定是一个文件. 原始的文件 [[email protected] testdir]# ll -iman.txt 15 -rw

硬链接与软链接的缠绵

Preface: 本文以站在不懂到懂的角度,知识开始理解有错误,但慢慢进阶,最后豁然开朗.要点评先看完再说. Basic_Knowledge: 在linux下有硬链接和软链接两种,硬链接为文件的别名,它和软链接一样,都指向文件,但是硬链接不是一个文件. linux下判定是不是一个独立文件看的就是其inode是不是独一无二的,ls -l 一下,如果链接数是1,那么这肯定是一个文件. 命令:ex > ln      test     f_h     ||       cp     -l    tes

linux中的硬链接和软链接

一.ln命令概述 它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间. 二.硬链接和软链接的区别 硬链接:是通过文件系统的inode连接来产生新的文件名,而不是产生新文件 软链接:类似Windows的快捷方式功能的文件,可以让你快速连接到目标文件(或目录) 三.硬链接 语法:ln

实例讲解Linux系统中硬链接与软链接的创建

导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说起,下面就以实例讲解Linux系统中硬链接与软链接的创建,来实际看看Linux中两种链接方式的不同. 首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现

RHCE系列之文件管理----硬链接和软链接

Linux 文件系统最重要的特点之一是它的文件链接. 链接是对文件的引用,这样你可以让文件在文件系统中多处被看到. 在 Linux 中,链接可以如同原始文件一样来对待.链接可以与普通的文件一样被执行.编辑和访问.对系统中的其它应用程序而言,链接就是它所对应的原始文件.当你通过链接对文件进行编辑时,你编辑的实际上就是原始文件.切记,链接并不是文件的副本. 在linux系统中,链接可分为两类:一类被称为硬链接(Hard Link),另一类被称为软链接或符号链接(Symbolic Link). 硬链接

Linux硬链接和软链接

1.硬链接:文件别名通过前面讲的Linux ext2文件系统,我们知道在目录文件的block中,存放着目录下文件的文件名和对应的inode.可以将多个文件名对应到同一个inode,新建一条文件名链接到某inode号,这就是硬链接. 可以看出,硬链接只是新建了一个文件名,关联到一个已存在的文件.此时,目录下的block多写了一个文件名/inode的数据所以,硬链接没有增加inode和block的耗用. 2.软链接:类似windows中的快捷方式软链接的实质是,创建了一个独立的文件,而读取这个文件时