【linux】复制cp和硬连接、软连接的区别? innode 关系?

1.命令:

cp -r [源文件或目录] [目的目录]          #复制
ln  -s [被链接的文件] [链接的目录/名称]   #软连接
ln [被链接的文件] [链接的目录/名称]       #硬连接

注:cp -r 会把所有source当作普通文件(regular文件); 而cp -R 对特殊文件(管道文件,块设备文件,字符设备文件)会进行创建操作,而不是拷贝。

2.执行命令结果

原文件:ee_lnh.txt
复制的文件:cp.txt
硬连接的文件:lnh.txt
软连接的文件:lns.txt

3.区别

3.1 硬连接

  • 硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件,硬链接和原来的文件没有什么区别,而且共享一个 inode 号(文件在文件系统上的唯一标识)。

方法:通过ls -li 来查看一下
结果:这两个文件的inode号是同一个,说明它们是同一个文件。
且文件的硬链接数量Links=2,说明有2个硬连接。

3.2 软连接

  • 软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。

方法:通过ls -li 查看
结果:可观察到硬链接和源文件的文件类型一样为“-”,而软链接为“l”。
这两个文件的inode号不相同,说明它们非同一个文件。

3.3 复制

  • 复制,其实硬链接和软链接和源文件三者任意一个改变三者都会同步改变,这是他们与复制之间的区别。

方法:然后通过ls -li 查看
结果:和源文件的inode号不相同,但是文件类型一样为“-”。

源文件:1.txt   复制的文件:cp1.txt   硬连接:h.txt    软连接1_s1.txt 


方法:修改1.txt文件,使其大小改变,然后通过ls -li 查看
结果:源文件大小、内容改变;
           硬连接文件大小、内容改变;
           复制的文件大小不变,内容不变;
           软连接大小不变,内容改变。

 3.4 stat命令查看inode信息

  • 用 stat 文件名   #来查看文件的inode信息来区分两个文件是复制的还是硬链接

 4.inode 是什么?

我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
磁盘上inode节点存储和数据“块”存储是在两个不同的区域,inode存储文件的元数据,但是不包括变长的文件名信息,因此inode大小是固定的,包含的元数据如下:  

* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置

 硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

1GB 硬盘   1KB 1个   1个为128B1GB=1024M=1024*1024K=1048576KB (个)Inode table大小=1048576*128B=1048576*128/1024 KB=1024*128/1024 MB=128MB

因此,对于存储大量小文件来说,可能文件系统的inode不够用,如果inode资源耗尽,就无法新建文件。

比如阿里的TFS(专门用于存储小文件的分布式存储)就是将小文件合并成“大块”文件来存储的,节省inode资源。可以使用 df -i 查看各个分区的Inode使用情况:
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。使用*ls -i file_name*命令可以查看inode号码。

 笔记日期:20230630

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

把批量M3U8网络视频地址转为MP4视频

在数字媒体时代,视频格式的转换已成为一项常见的需求。尤其对于那些经常处理网络视频的用户来说,将M3U8格式的视频转换为更常见的MP4格式是一项必备技能。幸运的是,现在有了固乔剪辑助手这款强大的工具,这一过程变得异常简单。下面…

03:华为云管理|云主机管理|云项目实战

华为云管理|云主机管理|云项目实战 安全组配置部署跳板机配置yum源,安装软件包优化系统服务安装配置ansible管理主机 模版镜像配置配置yum源,安装软件包优化系统 网站云平台部署实战华为云的负载均衡 安全组配置 设置安全组 云…

MongoDB常用命令

3.1 案例需求 存放文章评论的数据存放到MongoDB中,数据结构参考如下: 数据库:articledb 3.2 数据库操作 3.2.1 选择和创建数据库 选择和创建数据库的语法格式: use 数据库名称 如果数据库不存在则自动创建,例如&a…

VirtualBox配置OpenEuler虚拟机双网卡使用

VirtualBox配置NAT模式时,在宿主机使用WIFI时,虽然能访问互联网,能正常安装软件,但是本地不能访问虚拟机,但是可以配置另一个host-only模式的网卡,通过双网卡实现本地访问虚拟机的同时也能访问互联网。 安装…

GitBook可以搭建知识库吗?有无其他更好更方便的?

在一个现代化的企业中,知识是一项宝贵的资产。拥有一个完善的企业知识库,不仅可以加速员工的学习和成长,还能提高工作效率和团队协作能力。然而,随着企业不断发展和扩大规模,知识库的构建和管理变得更加复杂和耗时。 |…

c++入门语法—————引用,内联函数,auto关键字,基于范围的for循环,nullptr

文章目录 一.引用1.引例2.注意事项3.应用场景1.做参数(a:输出型参数b:内容较大参数)2.做返回值(a:修改返回值,b:减少拷贝) 4.引用和指针的区别 二.内联函数1.为什么有内联函数2.用法和底层3.特性 三.auto关键字1.基础示…

vue项目如何打包,java项目如何打包

目录 vue项目如何打包 java项目如何打jar包 使用Maven打包为JAR(方式一)视图: 先双击clean再双击package即可打包 使用Maven打包为JAR(方式二)命令: 1、确保你已经安装了Maven,并且配置了相应…

腾讯云轻量应用Ubuntu服务器如何一键部署幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏,在帕鲁的世界,玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活,也…

GLog开源库使用

Glog地址:https://github.com/google/glog 官方文档:http://google-glog.googlecode.com/svn/trunk/doc/glog.html 1.利用CMake进行编译,生成VS解决方案 (1)在glog-master文件夹内新建一个build文件夹,用…

使用vs2022将.net8的应用程序发布为一个单独文件

在使用.NetCore3.1时&#xff0c;可以通过设置以下工程配置文本来将项目发布为一个单独的应用程序文件&#xff1a; <Project Sdk"Microsoft.NET.Sdk.WindowsDesktop"><PropertyGroup><TargetFramework>netcoreapp3.1</TargetFramework><…

React进阶 - 14(说一说”虚拟DOM“中的”Diff算法“)

本章内容 目录 一、了解 Diff 算法二、key 值的重要性三、为什么不建议使用 index 做 key 值 上一节我们初步了解了 React中的”虚拟 DOM“ &#xff0c;本节我们来说一说”虚拟DOM“中的”Diff算法“ 一、了解 Diff 算法 在上一篇中&#xff0c;我们有讲到&#xff1a;当 st…

UE5 C++ 读取本地图片并赋值到UI上

目录 结果图 节点样式 主要代码 调试代码 结果图 节点样式 主要代码 &#xff08;注释纯属个人理解&#xff0c;可能存在错误&#xff09; // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h&q…

基于JAVA+SpringBoot+Vue的前后端分离的美食分享推荐平台2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今社会&#xff0…

【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 归并排序 代码实现&#xf…

vue3-深入组件-透传属性

透传属性 &#xff08;透传 attribute&#xff09; 什么是透传属性&#xff08;透传 attribute&#xff09;? 传递给一个组件&#xff0c;却没有被该组件声明为 props 或 emits 的 attribute 或者是事件监听器&#xff0c;例如 class style id 等。 属性继承 当一个组件以单…

Android T 远程动画显示流程(更新中)

序 本地动画和远程动画区别是什么? 本地动画&#xff1a;自给自足。对自身SurfaceControl矢量动画进行控制。 远程动画&#xff1a;拿来吧你&#xff01;一个app A对另一个app B通过binder跨进程通信&#xff0c;控制app B的SurfaceControl矢量动画。 无论是本地动画还是远程…

【C++】——类和对象(中)

一、前言 好久没有更新内容了&#xff0c;今天为大家带来类和对形中期的内容 &#xff01; 二、正文 1.this指针 1.1this指针的引入 class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << _year …

el-tree基础的树形节点设置节点不能选中高亮出来,对已经选中的节点设置disabled,对当前节点刚选中后设置禁用disabled

一、 el-tree基础的树形节点设置节点不能选中高亮出来 需求 我们使用element-ui或者element-plus的时候会遇到树形控件的使用&#xff0c;我们使用树形控件会限制有的节点不让选中和高亮出来&#xff0c;这个时候需要我们做限制。在实现中我们发现了element-ui和element-plus…

时序数据库 Tdengine 执行命令能够查看执行的sql语句

curl是 访问6041端口&#xff0c;在windows系统里没有linux里的curl命令&#xff0c;需要用别的工具实现。我在cmd里是访问6030端口 第一步 在安装是时序数据库的服务器上也就是数据库服务端 进入命令窗口 执行 taos 第二步 执行 show queries\G;

基于Java+SpringMvc+vue+element实现上海汽车博物馆平台

基于JavaSpringMvcvueelement实现上海汽车博物馆平台 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 …