Linux文件元素和节点表结构

inode表结构

  • 每个文件的属性信息,比如:文件的大小、时间、类型等,称为文件的元数据(meta data)
  • 这此元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,每一条记录对应的存放了每一个文件的元数据信息

每一个inode表记录保存了以下信息

	inode number 节点号
	文件类型 
	权限 
	UID 
	GID
	链接数(指向这个文件名路径名称个数)
	该文件的大小和不同的时间戳
	指向磁盘上文件的数据块指针 
	有关文件的其他数据

在这里插入图片描述

目录

  • 目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系
  • 文件引用一个是 inode号
  • 通过文件名来引用一个文件
  • 一个目录是目录下的文件名和文件inode号之间的映射

inode表和目录

在这里插入图片描述

cp和inode

cp命令

  • 分配一个空闲的inode号,在inode表中生成新条目

  • 在目录中创建一个目录项,将名称与inode编号关联

  • 拷贝数据生成新的文件

rm和inode

rm命令

  • 链接数递减,从而释放的inode号可以被重用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv和inode

  • 如果mv命令的目标和源在相同的文件系统,作为mv 命令用新的文件名,创建对应新的目录项,
    删除旧目录条目对应的旧的文件名,不影响inode表(除时间戳)或磁盘上的数据位置:
    没有数据被移动!

硬链接

  • 硬链接本质上就是给文件起一个新的名称,实质是同一个文件

特点

  • 创建硬链接会在对应的目录中增加额外的记录项以引用文件
  • 对应于同一文件系统上同一个物理文件
  • 每个目录引用相同的inode号
  • 创建时链接数递
  • 增删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链 接数为零时,该文件被删除
  • 不能跨越驱动器或分区 不支持对目录创建硬链接

格式

ln 	filename 	[linkname ]

符号链接(软链接)

  • 一个符号链接指向另一个文件,就像 windows 中快捷方式,软链接文件和原文件本质上不是同一个文件

特点

  • 一个符号链接的内容是它引用文件的名称
  • 可以对目录创建软链接
  • 可以跨分区的文件实现
  • 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的 引用计数
  • 在创建软链接时, 如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作目 录,但是软链接的路径如果是相对路径,则是相对于当前工作目录

格式

ln -s 	filename 	[linkname]

硬链接和软链接的异同

本质 跟源文件是同一个文件 跟源文件不是同一个文件
跨设备 不支持跨设备 支持跨设备
indoe inode相同 inode不同
链接数 创建链接链接数会增加,反之 创建或删除,链接数都不变
文件夹 不支持 支持
相对路径 原始文件相对路径是相对于当前目录 原始文件的相对路径是相对于链接文件的相对路径
删除源文件 只是链接数减一,但链接文件的访问不受影响 链接文件将无法访问
文件类型 跟源文件相同 不同
特点 硬链接 软链接
文件大小 跟源文件相同 源文件的路径的长度

企业软件迭代

# 企业刚开始的软件版本是1.0
mkdir app-v1.0
# 创建一个软链接方便用户访问
ln -s app-v1.0 app
# 版本升级之后
mkdir app-v2.0
# 删除原来v1.0指向的软链接
rm -f app
# 重新创建app软链接指向v2.0
ln -s app-v2.0 app
posted @ 2022-04-16 22:55  Eiji-Lee  阅读(108)  评论(0)    收藏  举报