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的映射关系

软硬链接的用途

硬链接:

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

软链接

  • 类似快捷方式

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

相关推荐
Android系统攻城狮2 小时前
Linux Gstreamer深度解析之gst_audio_converter_reset调用流程与实战(二十一)
linux·运维·服务器·gstreamer音视频·音视频进阶
youyou-06062 小时前
AUTOSAR‑COM 常见问题 QA (1)
java·linux·服务器·单片机·汽车
m0_743697593 小时前
grep 的引号、反斜杠与正则方言:一次讲清我踩过的坑
linux
KANGBboy3 小时前
doris+kafka安装部署(单机+集群)二时钟服务器 java_home
服务器·分布式
虚无的纽扣3 小时前
【Linux】每个进程都拥有“假内存” | 进程地址空间详解
linux·运维·服务器
拂拉氏4 小时前
【知识讲解】 Linux进程的回收相关接口了解
linux·进程回收
新时代牛马4 小时前
PCI与PCIe 完整篇:硬件拓扑→ 报文协议→配置/BAR → Linux 驱动(一条主线讲透)
linux·运维·网络
闲云野鹤在人间4 小时前
Docker入门|第1章 容器生态系统完整解析
运维·服务器·docker·容器·centos
筝筝ba4 小时前
如何跳过FFDC
xml·linux·运维·服务器·网络