Linux inode概念 &软硬连接

文章目录

inode概念

  文件=数据+属性,使用

shell 复制代码
ls -l

的时候可以看到除了文件名,还能看到文件元数据(属性)。

包含:

  • 模式
  • 硬链接数
  • 文件所有者
  • 组
  • 大小
  • 最后修改时间
  • 文件名

ls-l 读取存储在磁盘上的文件信息,然后显示出来。

shell 复制代码
ls -li

  文件数据都存储在"块"中,那么我们还必须找打一个地方存储文件的元信息(属性信息),比如文件的创作者、文件的创建日期、文件的大小等。这种存储文件的信息的区域就叫inode,中午译名为"索引节点"。

  每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

  Linux下文件的存储属性和内容分离存储的

  Linux下,保存文件属性的集合叫做inode,一个文件,一个inode,inode内有一个唯一的标识符,叫做inode号。

cpp 复制代码
#include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  4 #include<dirent.h>
  5 #include<sys/types.h>
  6 #include<unistd.h>
  7 
  8 int main(int argc,char *argv[]){
  9 
 10     if(argc != 2){
 11         fprintf(stderr,"Usage : %s <directory>\n", argv[0]);
 12         exit(EXIT_FAILURE);
 13     } //调用 opendir 打开 argv[1] 指定的目录,返回一个指向 DIR 结构的指针
 14     DIR *dir = opendir(argv[1]); 。
 15     if(!dir){
 16         perror("opendir");
 17         exit(EXIT_FAILURE);
 18     }
 19     struct dirent *entry;
 20     while((entry = readdir(dir)) != NULL){
 21         if(strcmp(entry->d_name, ".")==0 || strcmp(entry->d_name,"..")==0){
 22             continue;
 23         }
 24 
 25         printf("Filename:%s,Inode:%lu\n",entry->d_name,(unsigned long)entry->d_ino);
 26     }
 27     closedir(dir);
 28     return 0;
 29 } 

软硬连接

硬连接

  真正找到磁盘上文件的并不是文件名,而是inode。其实在Linux中可以让多个文件名对应同一个inode。

shell 复制代码
touch log1.txt
ln log1.txt log2.txt
ls -li log1.txt log2.txt
  • log1.txt和log2.txt的链接状态完全相同,他们被称为指向文件的硬链接。内容记录了这个连接数。
  • 我们在删除文件时干了两件事:1.在目录中将对应的记录删除,2.将硬链接数-1,如果为0,则将对应的磁盘释放。

软连接

  硬链接是通过inode引用另外一个文件,软链接是通过名字引用另外一个文件,但实际上,新的文件和被引用的文件inode不同,应用常见上可以想象成一个快捷方式。

shell 复制代码
touch log.txt
ln -s log.txt soft
ls -li

软硬链接对比

  • 软链接是独立文件
  • 硬链接只是文件名和目标文件inode的映射关系

软硬链接的用途

硬链接:

  • . 和 **. .**就是硬链接
  • 文件备份

软链接

  • 类似快捷方式

觉得我回答有用的话,记得点个关注哟!谢谢支持!

相关推荐
迷途之人不知返9 小时前
【文件系统】-4-软硬连接
linux
老歌老听老掉牙10 小时前
WorkBuddy 如何接入 PrePoMax 的 MCP 服务器
服务器·ai·mcp
Linux_cy10 小时前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
1234567890@world12 小时前
正点原子 ATK-DLRK3568 嵌入式Linux系统开发手册V1.3 详细总结
linux·stm32·单片机
sun_weitao12 小时前
极简版 MCP 工具实现方案
java·linux·服务器
爱和冰阔落13 小时前
【Linux】线程安全进阶:单例模式、可重入函数与死锁排查
linux·运维·安全·单例模式
先知后行。14 小时前
pimpl
linux
吉普赛的歌14 小时前
如何设置服务器固定时间点自动重启一次
运维·服务器
Carol063014 小时前
上肢及肩肘关节
java·服务器·数据库
一世繁华行14 小时前
CAPL浏览器(翻译自官方文档)
运维·服务器·数据库