C语言笔记-16-Linux基础-文件元数据

news2024/11/23 15:43:49

C语言笔记-16-Linux基础-文件元数据


文章目录

  • C语言笔记-16-Linux基础-文件元数据
  • 前言
  • 一、概述
  • 二、ln 硬连接
  • 三、软连接
  • 四、stat 获取元数据
  • 总结


前言

自学笔记,没有历史知识铺垫(省略百度部分)C语言笔记-16-Linux基础-文件元数据


一、概述

文件由meta+data组成inode结构体,meta中存储文件大小、文件描述、链接引用计数 等信息。
每个文件都有唯一的inode节点,但是一个inode节点可以映射多个文件。
ls -li ls -i 查看文件元数据.

在这里插入图片描述

硬连接和软连接区别

硬连接

  1. 同一个inode号指定多个文件名方式
  2. 不占用新的inode
  3. 不占用任何新的空间
  4. 对数据文件备份 防止误删除
  5. 不可以跨文件系统创建(即不能跨分区),如ln /boot/data/data.txt /home/data/data.txt 会报错
  6. 任意删除一个文件名,文件都不会损坏

软连接

  1. 快捷方式
  2. 占用新的inode号
  3. 占用少量的磁盘空间
  4. 可以跨文件系统创建
  5. 删除源文件后,软链接文件无效
dony15$ ls -li
total 77328
#inode节点编号
 85273125 drwxr-xr-x   3 dony15  staff        96  5 13  2022 chiner
 99694886 drwxr-xr-x  66 dony15  staff      2112 12  2 09:04 csp
 99695194 drwxr-xr-x  16 dony15  staff       512 12  2 08:51 metrics
 69131869 drwxr-x--x   5 dony15  staff       160 11  1  2021 nacos
103071428 -rw-r--rwx   1 dony15  staff  39588967 11 29 09:08 ons.log

二、ln 硬连接

ln 源文件 新文件 硬链接,inode节点编码相同,两个文件实际上指向的同一个inode节点
ln source.txt target.txt

inode

dony15$ ln ons.log ons_bak

dony15$ ls -li
103071428 -rw-r--rwx   2 dony15  staff  39588967 11 29 09:08 ons.log
103071428 -rw-r--rwx   2 dony15  staff  39588967 11 29 09:08 ons_bak

三、软连接

ln -s 源文件 新文件 软链接
ln -s source.txt target.txt
快捷方式的方案
file3实际上存储file2的引用,file2指向真实的源inode
当file2删除,file3将无效

软连接

# 建立软链接
dony15$ ln -s ons_bak ons_bak2
dony15$ ls -li
103071428 -rw-r--rwx   2 dony15  staff  39588967 11 29 09:08 ons.log
103071428 -rw-r--rwx   2 dony15  staff  39588967 11 29 09:08 ons_bak
103610945 lrwxr-xr-x   1 dony15  staff         7 12  2 22:24 ons_bak2 -> ons_bak
# 删除软连接源文件
dony15$ rm -rf ons_bak
dony15$ ls -li
103071428 -rw-r--rwx   1 dony15  staff  39588967 11 29 09:08 ons.log
103610945 lrwxr-xr-x   1 dony15  staff         7 12  2 22:24 ons_bak2 -> ons_bak
# 软链接源文件删除后,目标文件将失效
dony15$ cat ons_bak2 
cat: ons_bak2: No such file or directory

# 重新创建ons_bak文件,ons_bak2将重新生效,并依旧软连接ons_bak,但是ons_bak与ons.log将再无关系
dony15$ echo "testABC">ons_bak
dony15$ cat ons_bak2
testABC

dony15$ ls -li
103071428 -rw-r--rwx   1 dony15  staff  39588967 11 29 09:08 ons.log
103611180 -rw-r--r--   1 dony15  staff         8 12  2 22:29 ons_bak
103610945 lrwxr-xr-x   1 dony15  staff         7 12  2 22:24 ons_bak2 -> ons_bak

四、stat 获取元数据

int stat(const char *pathname,struct stat *buf)

#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    struct stat sbuf;
    int r = stat(argv[1], &sbuf);
    if (r == -1)
    {
        perror("查看失败");
        return -1;
    }
    printf("inode: %llu \n", sbuf.st_ino);
    printf("inode nlink: %u \n", sbuf.st_nlink);
    return 0;
}
dony15$ ./ac.out test
inode: 103603039 
inode nlink: 1 

dony15$ ls -li
103603039 -rw-r--r--  1 dony15  staff     12 12  2 20:54 test

总结

本章主要为C语言笔记-16-Linux基础-文件元数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kaggle泰坦尼克号-决策树Top 3%-0基础代码详解

Titanic Disaster Kaggle&#xff0c;里的经典入门题目&#xff0c;因为在学决策树所以找了一个实例学习了一下&#xff0c;完全萌新零基础&#xff0c;所以基本每一句都做了注释。 原文链接&#xff1a;Titanic: Simple Decision Tree model score(Top 3%) | Kaggle 目录 1.…

SolidWorks如何绘制环形波纹垫片

环形波纹垫片主要用于螺纹式固定件或者防滑螺纹固定中,那这个环形垫片一般怎么用SolidWorks制作呢?首先我们观察到这样的垫片是上下此起彼伏的波纹状,厚度一般1MM左右,制作起来还是有点小难度,但是通过仔细观察,我们可以看到它的大概走向,如图 也就是特征就是这边凹下去…

获取Android签名MD5的方式

形而上者谓之道&#xff0c;形而下者谓之器 我们在申请百度云/腾讯云等第三方的各种服务时&#xff0c;经常会遇到需要提供包名和签名MD5的情况。这里特地总结一下&#xff1a; 1. 获取MD5的一般方式 1.1 有签名文件(.keystore)的情况下: keytool -list -v -keystore XXX.key…

【沐风老师】3DMAX一键生成圣诞树建模插件使用教程

圣诞节快到了&#xff0c;给大家分享一款3DMax一键生成圣诞树模型插件&#xff1a; 3DMAX一键生成圣诞树建模插件&#xff0c;可以生成定制和随机两种3D圣诞树模型&#xff0c;并自动赋予材质和贴图。 【安装方法】 方法一&#xff1a;解压后直接拖动插件脚本文件到3dMax窗口…

使用springboot实现jsonp|jsonp的实现|JSONP的实现使用springboot

1、服务端&#xff1a; 1.1、项目目录&#xff1a; 1.2、pom文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

从一到无穷大 #3 对象存储.浅谈

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录引言Windows Azure StorageNosql&#xff1a;TiKV为例总结引言 天才的开源精神对于普…

67-94-hive-函数-开窗函数-常用函数-udf自定义函数

67-hive-函数&#xff1a; UDF:一进一出&#xff0c;普通函数 UDAF:多进一出&#xff0c;聚合函数 UDTF&#xff1a;一进多出&#xff0c;炸裂函数 一、多指的是输入数据的行数。一行变多行&#xff0c;多行变一行。 函数 #查看系统自带的函数 hive> show functions; …

Docker以标准方式安装部署Redis

Docker安装redis的命令很简单&#xff0c;但是很多都是半成品的命令&#xff0c;说白了&#xff0c;就是自己玩玩&#xff0c;一个demo级别的redis而已。 本篇文章以最全的命令方式安装部署Redis。 注意&#xff1a; 本篇只是单机版的&#xff0c;只是公司测试环境使用&…

解决npm的 EACCES: permission denied 问题

居上位而不骄&#xff0c;在下者而不忧。 平时项目开发使用npm都顺风顺水的&#xff0c;but今天新建项目时&#xff0c;就出现了权限错误&#xff0c;具体如下&#xff1a; 但是通过下面的提示就可以轻松解决。 sudo chown -R 502:20 “/Users/cheng.wang/.npm” 官网相关议题…

Redis源码篇(7)——哨兵模式

哨兵模式 哨兵模式即在主从复制的基础上增加哨兵监控以控制主从切换实现高可用的一种模式。 本篇主要介绍sentinel系统初始化&#xff0c;心跳检测&#xff0c;故障转移的过程 初始化 从最开始的 redis-server xxx.conf --sentinel 、 redis-sentinel xxx.conf 命令看起。当一…

CUDA 编程简介

参考资料&#xff1a; NVIDIA CUDA Programming Guide, NVIDIA. (https://docs.nvidia.com/cuda/cuda-c-programming-guide/)国科大《并行与分布式计算》课程、NVIDIA 在线实验平台 文章目录GPU & CUDAG80 Graphics ModeG80 CUDA ModeCUDA Programming ModelCUDA Extends …

重定向转发,接收请求参数及数据回显-P11,12

重定向和转发&#xff1a; 我们的实现本身就是转发 。 想删掉视图解析器的话&#xff0c;就需要在return把路径写全 重定向就改为redirect&#xff1a;而且重定向不走视图解析器&#xff0c;因为是新的请求&#xff0c;新的URL。 接收请求参数&#xff1a; 第一种是默认的方式…

【FreeRTOS(十二)】事件标志组

文章目录事件标志组创建事件标志组 xEventGroupCreate将指定的事件位清零 xEventGroupClearBits将指定的事件位置 1 xEventGroupSetBits获取事件标志组值 xEventGroupGetBits等待指定的事件位 xEventGroupWaitBits代码示例事件标志组 事件标志位 事件位用来表明某个事件是否发…

嵌入式Linux 开发经验:编写用户态应用程序打开 misc 设备

参考文章 VSCode SSH 连接远程ubuntu Linux 主机 ubuntu 20.04 qemu linux6.0.1 开发环境搭建 ubuntu 20.04 qemu linux6.0.1 制作ext4根文件系统 嵌入式Linux 开发经验&#xff1a;platform_driver_register 的使用方法 嵌入式Linux 开发经验&#xff1a;注册一个 misc 设…

创新案例|实现YouTube超速增长的3大敏捷组织运营机制(上)

从2008年到2014年YouTube进入超速增长模式。时任核心技术负责人的 Shishir Mehrotra回顾了当时公司面临的挑战&#xff0c;以及带领YouTube团队如何建立一套敏捷运营机制的先进实践&#xff0c;以保持战略对齐并运营复杂的业务。这直接推进公司每周高效的工作节奏&#xff0c;以…

【Pytorch】模型的可复现性

背景 在做研究的时候&#xff0c;通常我们希望同样的样本&#xff0c;同样的代码能够得到同样的实验效果&#xff0c;但由于代码中存在一些随机性&#xff0c;导致虽然是同样的样本和程序&#xff0c;但是得到的结果不一致。在pytorch的官方文档中为此提供了一些建议&#xff…

复现 MMDetection

文章目录MMDetection 复现一、环境配置服务器信息安装CUDA下载并安装CUDA配置环境变量多个Cuda版本切换 (可选)安装CUDNN安装Anaconda搭建虚拟环境新建虚拟环境安装pytorchPycharm 远程连接代码同步配置服务器解释器二、训练和推理自制COCO格式数据集训练修改数据集相关参数修改…

Problem C: 算法10-10,10-11:堆排序

Problem Description 堆排序是一种利用堆结构进行排序的方法&#xff0c;它只需要一个记录大小的辅助空间&#xff0c;每个待排序的记录仅需要占用一个存储空间。 首先建立小根堆或大根堆&#xff0c;然后通过利用堆的性质即堆顶的元素是最小或最大值&#xff0c;从而依次得出…

TMS FixInsight代码评估工具

TMS FixInsight代码评估工具 TMS Fix Insight被认为是Delphi程序员的代码评估工具&#xff0c;它也能够在Delphi的源代码中发现问题。它被认为是一个代码分析工具&#xff0c;用于划分过程以及问题的位置以及Delphi的应用。TMS Fix Insight基本上是一个静态的代码列表&#xff…

Spring - SmartInstantiationAwareBeanPostProcessor扩展接口

文章目录Preorg.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor类关系SmartInstantiationAwareBeanPostProcessor接口方法扩展示例Pre Spring Boot - 扩展接口一览 org.springframework.beans.factory.config.SmartInstantiationAwareBeanPo…