【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.hqwc.cn/news/439654.html

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

相关文章

Flutter 应用服务:主题、暗黑、国际化、本地化-app_service库

Flutter应用服务 主题、暗黑、国际化、本地化-app_service库 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/det…

微服务-微服务Alibaba-Nacos 源码分析(上)

Nacos&Ribbon&Feign核心微服务架构图 架构原理 1、微服务系统在启动时将自己注册到服务注册中心,同时外发布 Http 接口供其它系统调用(一般都是基于Spring MVC) 2、服务消费者基于 Feign 调用服务提供者对外发布的接口,先对调用的本地接口加上…

Java 面试题之 IO(二)

字符流 文章目录 字符流Reader(字符输入流)Writer(字符输出流) 文章来自Java Guide 用于学习如有侵权,立即删除 不管是文件读写还是网络发送接收,信息的最小存储单元都是字节。 那为什么 I/O 流操作要分为字…

seata 分布式

一、下载安装seata 已经下载好的朋友可以跳过这个步骤。这里下载的是seata1.6.1这个版本。 1、进入seata官网 地址: https://seata.io/zh-cn/index.html 2、进入下载 3、点击下载地址 下载地址: https://github.com/seata/seata 二、配置seata 进入c…

如何在群晖NAS部署office服务实现多人远程协同办公编辑文档

文章目录 本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是: 1.Word,PPT,Excel等重要文件存在本地环境,如何在编…

如何使用保留可探测字段参数的方法解决视频监控管理平台EasyCVR无法启动的问题

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

费一凡:土木博士的自我救赎之道 | 提升之路系列(五)

导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的“π”型人才,由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

幻兽帕鲁服务器一键部署保姆教程

在帕鲁的世界,你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活,也可以为你在工厂工作。你也可以将它们进行售卖,或肢解后食用。 想要部署属于自…

防御保护 笔记整理

一、ASPF--- 针对应用层的包过滤 ASPF --- 针对应用层的包过滤 --- 用来抓取多通道协议中协商端口的关键数据包,之后,将端 口算出,将结果记录在sever-map表中,相当于开辟了一条隐形的通道。 FTP --- 文件传输协议 FTP协议是一个典…

RabbitMQ基本使用,docker安装RabbitMQ,SpringBoot整合RabbitMQ

1.拉取镜像 docker pull rabbitmq:3.9.15-management2.运行容器 docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIErabbitcookie rabbitmq:3.9.15-management3.访问地址 安装ip加端口号 http://192.168.123.3:156…

(九)springboot实战——springboot3下的webflux项目参数验证及其全局参数验证异常处理

前言 在上一节内容中,我们介绍了如何在webflux项目中自定义实现一个全局的异常处理器ErrorWebExceptionHandler,正常情况下其可以处理我们系统的运行时异常,但是无法处理参数验证的异常WebExchangeBindException,所以这里提供另外…

防火墙到防火墙的高可用知识汇总

目录​​​​​​​ 防火墙 防火墙的分类: 防火墙的发展史 传统防火墙(包过滤防火墙)—— 一个严格的规则表 传统防火墙(应用代理防火墙)—— 每个应用添加代理 传统防火墙(状态检测防火墙&#xff09…