Loading

四、文件属性与类型

四、文件属性与类型

4.1 文件属性详解

image-20221022101639561

文件或目录的属性主要包括:索引节点(Inode)、文件类型、权限属性、链接数、所归属的用户和用户组、最近修改时间等内容。


各列含义说明

image-20221022102254062

第一列:inode索引节点编号,系统读取文件时首先通过文件名找到Inode号码,然后才能读取到文件内容。

第二列和第三列:文件类型及权限。这一列共包含11个字符,其中第一个字符为文件类型,随后的9个字符为文件的对应权限,最后一个字符点号“.”是与SELinux有关的一个标识。

第四列:硬链接个数,相当于超市的多个入口,可以从不同的文件入口进入文件,还可以互为备份。

第五列:文件或目录所属的用户(属主)。在Linux系统里,文件和程序的存在必须要有用户和组满足相应的存在需求。

第六列:文件或目录所属的组(属组)(家庭)。

第七列:文件或目录的大小。

第八列:文件或目录的修改时间,默认为月、日、时、分。

第九列:实际的文件名或目录名。需要注意的是,文件名不算文件的属性。


4.2 文件拓展名

Linux系统不同于Windows系统,Linux系统不会根据扩展名来区分文件类型,而是通过为文件设定属性的特殊方式来区分文件类型的。但是Linux系统中也会包含各种带有扩展名的文件,这些文件可能来自于Windows及其他系统,也有部分来自Linux系统本身,但这些文件的扩展名,并不代表文件的类型,这些扩展名只是为了让用户更容易区分文件类型,更易读而已,并且即使出现扩展名错误,文件也是可以正常使用的。


常见拓展名

image-20221022102855668


4.3 文件类型

image-20221022103429632

image-20221022103244384


4.4 文件权限

在Linux中,每个文件或目录都有一组共9个基础权限位,每三位字符分为一组,它们分别是属主(也称用户)权限位(占开头的前三个字符,如rw-)、用户组权限位(占中间的三个字符,如r--)、其他用户权限位(占结尾的三个字符,如r--)。最终形式如“rw-r--r--”。Linux正是通过这9个权限(更多权限位后面会提到)位来控制文件用户(或称属主,即Owner/User)、用户组(或称属组,即Group)以及其他用户(Other)对文件的访问权限的,不同组的权限位说明如下图所示。

image-20221025103515714


其中,表示权限的字符r、w、x、“-”分别代表了特定的含义,具体说明如下:

  • r(read):可读权限,对应数字4。
  • w(write):可写权限,对应数字2。
  • x(Execute):可执行权限,对应数字1。
  • 没有任何权限,对应数字0。

4.5 文件索引节点

索引节点组成

索引节点(Index node,Inode)在每个Linux存储设备(磁盘或硬盘)或存储设备的分区(此时的存储设备可以是硬盘、软盘、U盘,等等)中被格式化为ext系列文件系统之后,都会生成两部分内容:第一部分是lnode(默认大小为128或256字节),第二部分是Block(默认大小为1~4KB)。由于磁盘或分区一般都比较大,因此,Inode和Block都会存在很多个,并且都可以存放数据信息。


Inode

Inode本质上是一小块具备唯一数字编号的存储空间,主要用来存放文件(目录)属性(例如ls-l的结果)的数据信息,注意,Inode里面唯独不包含文件名本身(文件名不算文件的属性)。


Block

Block称为磁盘块,是用来存放实际数据的实体单元(ext文件系统一般最大为4KB),即用来存放真正的数据,例如,照片、视频等普通文件数据,单个的大文件需要占用多个Block块来存储,特别小的单个文件如果不能占满整个Block块,那么剩余的空间也无法再利用。


存储关系

Inode存储的属性信息(即ls-l的结果),包括但不限于文件大小、属主(用户)、归属的用户组、文件权限、文件类型,“修改”时间等,还包含指向文件的实体指针等(Block的位置,即Inode节点与Block的对应关系)。


Inode和Block的特点

Inode的特点

  • ext3/ext4文件系统(CentOS 5.x/6.x默认的文件系统)下,一个非空文件至少要占用一个Inode(有且只有一个)和一个Block(可以有多个)。
  • Inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。
  • Inode在某一个文件系统(分区)内是唯一的。

Block的特点

  • 磁盘读取数据是以Block为单位进行读取的。
  • 每读取一个Block就会消耗一次磁盘I/O(input/output,磁盘读写)。
  • 若文件比较大,那么一个文件可能占用多个Block。
  • 若文件比较小,那么一个Block的剩余空间会被浪费,无论内容有多小。

查看和管理Inode

查看文件系统Inode总量以及剩余量的命令如下:

image-20221025165323380


查看磁盘的使用量相当于是查看Block的情况,示例命令如下:

image-20221025165421239


通过“ls-i”或者“stat文件名”命令可以查看文件的Inode数值。


4.6 硬链接和软链接

硬链接

在Linux系统中,链接可分为两种:一种为硬链接(Hard Link),另一种为软链接(Soft link)或符号链接(Symbolic Link)。命令就是用来创建链接文件的,在默认不带任何参数的情况下,执行ln命令创建的链接是硬链接。如果是使用ln-s创建的链接,则为软链接,软链接文件的文件类型为l(字母L的小写)。


创建硬链接的语法:“ln原始文件目标文件”(注意空格)。

创建软链接的语法:“ln-s原始文件目标文件”(目标文件不能事先存在)。


多个文件名指向同一个索引节点(Inode号相同)(Inode)是正常且被允许的。这种情况下的两个文件就称作互为硬链接文件,本质上就是相同文件的两个名字(类似真名和网名一样,都表示一个人)。在同一个分区/文件系统中,Inode号码相同的文件一定是硬链接文件。


硬链接文件就相当于是原始文件的另外一个访问入口。硬链接的作用之一是允许一个文件拥有多个有效的文件名(多个访问入口,类似于超市的多个入口),这样用户就可以建立硬链接到重要的文件上,为避免“误删”源数据加一份保险(很多硬件存储的快照功能就应用了这个原理,增加一个快照就多了一个硬链接,多了一个硬链接就会增加一层数据的安全)。


只要文件的索引节点(Inode Index)还有一个以上的硬链接,那么,只删除其中的一个硬链接(即仅仅删除了该文件的链接指向)并不会影响索引节点本身和其他的链接(即数据文件实体并未被删除),只有在文件的最后一个硬链接被删除之后,此时如果有新数据要存储到硬盘上,或者系统通过类似的fsck做磁盘检查的时候,被删除文件的数据块及目录的链接才会被释放,空间将被新数据占用并覆盖。当然,这样一来,数据就再也无法找回了。


硬链接知识小结

  • 具有相同Inode节点号的多个文件互为硬链接文件,本质上是相同文件的不同文件名。
  • 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。
  • 只有删除了源文件及与源文件对应的所有硬链接文件,文件实体才会被删除。
  • 待所有的硬链接文件及源文件均被删除之后,再存放新的数据时,新数据会占用这个文件的空间。磁盘进行fsck检查的时候,删除的数据就会被系统回收(养成删除及使用多套环境测试的好习惯)。
  • 硬链接文件就是文件的另一个入口(相当于超市的前门、后门)。
  • 可以通过对文件设置硬链接文件,来防止重要文件被误删。
  • 硬链接文件是普通文件,因此可以使用rm命令删除。
  • 对于静态文件(没有进程正在调用的文件)来讲,当对应的硬链接数为0(i_link)时,文件就被删除。i_link的查看方法是执行ls-lhi,然后查看结果的第三列。
  • 创建硬链接只能针对文件,不能针对目录。

软链接

软链接(Soft Link)也称为符号链接(Symbolic Link,symlink)。Linux里的软链接文件就类似于Windows系统中的快捷方式。软链接文件实际上是一个特殊的文件,文件类型用字母l表示。可以将它理解为一个文本文件,这个文件中包含有软链接,其指向的是另一源文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。


要想创建软链接,那么目标文件将是不能存在的,这个文件是要用ln命令创建的,创建软链接必须要有源文件,即针对哪个文件做软链接。


软链接文件通过自身的Inode(存放原始文件路径信息,而不是读Block),读到了软链接信息,并指向了原始文件,进而读到原始文件名,以及原始文件的Inode,再通过原始文件的Inode读到原始文件的内容(Block),这就是访问软链接文件来读取数据的原理。


软链接知识小结

  • 软链接类似于Windows的快捷方式(可以通过readlink查看其指向)。
  • 软链接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体。
  • 删除源文件,软链接文件依然存在,但是无法访问指向源文件路径的内容了。
  • 失效的时候一般是白字红底闪烁提示。
  • 软链接和源文件是不同类型的文件,也是不同的文件,Inode号也不相同。
  • 软链接文件的文件类型为字母(l),可以用rm命令删除。
  • 软链接文件不仅可以针对文件,还可以针对目录(企业中常用)。

命令不能对目录创建硬链接,但可以对目录创建软链接。


posted @ 2023-07-17 21:11  YinJayChen  阅读(58)  评论(0编辑  收藏  举报