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

软硬链接的用途

硬链接:

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

软链接

  • 类似快捷方式

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

相关推荐
硅基手札2 分钟前
【linux内核专栏 08】时间与定时器
linux·运维·服务器
想做小南娘,发现自己是女生喵21 分钟前
Linux之Ubuntu入门篇知识总结
linux·运维·服务器
CHEEVEN_QY1 小时前
搅拌摩擦焊FSW工艺参数对焊缝成形影响的实验研究10.1
linux·服务器·数据库
H.莓飛1 小时前
【数据结构】链表_OJ题
linux·数据结构·算法·链表
木白CPP2 小时前
USB(一): USB 概述&&介绍
linux·网络·嵌入式硬件
熬夜敲代码的猫2 小时前
Linux:进程概念
linux
刘胡子大叔2 小时前
1Panel 部署 ThinkPHP8 踩坑实录
linux·ubuntu
anew___2 小时前
《从零手写操作系统 (21):用户态C运行时——从裸ELF到printf》
linux·服务器·c语言
jackletter3 小时前
linux:systemd之守护进程
linux·运维·服务器·systemd
用户4107192013253 小时前
VMware 虚拟机 Ubuntu 无法连接网络
linux