inode就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。
inode 是 UNIX/Linux 操作系统中的一种数据结构,其本质是结构体
它包含了与文件系统中各个文件相关的一些重要信息
每一个索引节点都是一个表项,包含有关文件的信息(元数据):
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
如图:
因此,在Linux中创建文件系统时,同时将会创建大量的inode通常,文件系统磁盘空间中大约百分之一空间分配给了inode表
文件引用的是一个inode号,因此,当用户搜索或者访问一个文件时,Linux系统通过 inode 表查找正确的 inode 编号。在找到 inode 编号之后,相关的命令才可以访问该 inode ,并对其进行适当的更改,所以,一个目录是目录下的文件名和文件inode号之间的映射,如下图:
使用stat filename可以查看
使用df -i 可以查看分区的inode使用率
使用 ls -i filename可以查看inode号
使用cp命令时,系统会分配一个空闲的inode号,在inode表中生成新条目 在目录中创建一个目录项,将名称与inode编号关联 拷贝数据生成新的文件
使用rm命令时,会使链接数递减,从而释放的inode号可以被重用,把数据块放在空闲列表中,删除目录项数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
使用mv命令时,如果mv命令的目标和源在相同的文件系统,作为mv命令,用新的文件名创建对应新的目录项,删除旧目录条目对应的旧的文件名,不影响inode表(除时间戳)或磁盘上的数据位置,没有数据被移动!如果目标和源在一个不同的文件系统,mv相当于cp和rm
硬链接
硬链接就是一个文件拥有多个文件名字,多个文件名都指向同一个文件
当硬连接建立以后,硬连接双方任何一个对象被修改,都会造成对应的连接对象被修改
硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的
特性:
硬链接不允许给目录创建,也不能跨分区创建
创建硬链接会增加额外的记录项以引用文件
每个文件引用相同的inode号
创建时链接数递增
语法:ln filename linkfilename
软链接,又称符号链接,和Windows系统的快捷方式类似
软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了
特性:
一个符号链接指向另一个文件
可以使用ls - l的 显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
可以对目录进行 ,可以跨分区
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;
不增加或减少目标文件inode的引用计数;
语法:ls -s filename linkfilename
file命令
该命令可以用来识别文件类型,确定文件内容
它可以检查文件类型,然后确定适当的开发命令或应用程序使用
语法: file [OPTION...] [FILE...]
参数:
-b列出文件辨识结果时,不显示文件名称。
-c详细显示指令执行过程,便于排错或分析程序执行形
-f列出文件中文件名的文件类型
-F使用指定分隔符号替换输出文件名后默认的”:”分隔符
-i输出mime类型的字符串
-L查看对应软链接对应文件的文件类型
-z尝试去解读压缩文件的内容
--help显示命令在线帮助
查看文件类型: