Linux文件属性和打包压缩详解
1、文件属性体系
1.1 文件系统概述
[root@yunwei /]# ls -lhi
总用量 72K3505 lrwxrwxrwx. 1 root root 7 3月 7 2019 bin -> usr/bin
262152 dr-xr-xr-x. 5 root root 4.0K 12月 19 16:00 boot
399635 drwxr-xr-x 2 root root 4.0K 11月 5 2019 data1026 drwxr-xr-x 19 root root 3.0K 1月 7 16:14 dev
262147 drwxr-xr-x. 95 root root 12K 1月 24 13:02 etc

硬链接与文件之间共享相同的 inode(索引节点)和 block(数据块),因此它们的 inode 数值和数据块是相同的。
1.2 inode与block部分
大概了解:inode和block含义即可
inode索引节点,inode号码类似于身份证号码,通过inode号码 可以找到文件的内容.
1)inode和block关系
inode是一个空间,inode号是空间的位置,类似于身份证,inode空间存放:
- inode空间中存放的是 文件属性信息 ,文件大小,修改 时间,权限,所有者
- inode空间中存放block的位置(指向文件实体的指针)
- 这里不存放文件名.
block块(数据块):存放数据
用户访问查看test.txt文件内容的流程:
1.用户访问text.txt的时候,系统会找出他对应的 inode空间(根据inode号码)。
2.访问来到inode空间后,确认用户,确认权限。
3.权限信息正确就准许通过,可以访问inode对应的 block区域(数据)。

2)inode和block特点
- inode索引节点,存放文件属性信息,block存放位置。
- 每创建1个非空文件至少占用1个inode,1个block,一般文件都要有1个inode。
- 1个block默认是4k.
- inode,block数量是在格式化的时候创建的。
- 正常情况下block的使用会更快创建小文件不足4k,1个block还有剩余空间,单无法给其他文件使用
- 创建文件大于4k,占用多个block。
3)如何查看
查看block使用情况:(平时说的磁盘空间/磁盘空间使用情况)
df -h
查看inode使用情况;
df -i
4)拓展 如何查询磁盘更详细的信息
df -h
- 功能:用于显示磁盘空间使用情况。
- 输出:列出文件系统的使用情况,包括文件系统的总大小、已用空间、可用空间、使用率以及挂载点等信息。
lsblk
- 功能: 用于显示块设备的信息,包括硬盘、分区和挂载点。
- 输出: 列出块设备的层次结构,显示每个设备的大小、挂载点等信息。
blkid:
- 功能: 用于显示块设备的 UUID 和文件类型。
- 输出: 列出每个块设备的 UUID、文件系统类型以及其他标识信息。
[root@yunwei ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.9G 24K 1.9G 1% /dev/shm
tmpfs 1.9G 532K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 50G 8.7G 39G 19% /
tmpfs 370M 0 370M 0% /run/user/0
[root@yunwei ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 223.4M 0 rom
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
[root@yunwei ~]# blkid
/dev/sr0: UUID="2023-12-19-15-59-55-00" LABEL="config-2" TYPE="iso9660"
/dev/vda1: UUID="4b499d76-769a-40a0-93dc-4a31a59add28" TYPE="ext4"
重要:文件名是存放在目录的block中的。没有存放在inode中,所以文件名不是文件属性
1.3 文件类型部分
1)Windows与Linux文件类型区别
windows下面通过扩展名的区分不同文件类型,如果扩展名修windows下面通过改则无法使用。 Linux下面扩展名仅仅用于展示,随意修改,虽然Linux不区分扩展名,但是推荐创建文件的时候给他加上.
| 常用的扩展名 | 说明 |
|---|---|
| .txt | 普通文件 |
| .sh .bash | shell文件 |
| .conf .cfg .xml .yaml .yml | 配置文件 |
| .py | python脚本文件 |
2)Linux文件类
| Linux常见文件类型 | 含义 |
|---|---|
| - | 文件 file |
| d | 目录 directory |
| l | 软连接,类似于Win的快捷方式 |
| c | 字符设备 char |
| b | 块设备 block 硬盘 |
| s | 套接字 socket |
| p | 管道文件 |
详细文件类型
txt 普通文本;data 数据文件;二进制文件 大部分都是命令。
file
#查看文件的详细类型
1.4 软硬链接
软链接:类似于windows中快捷方式,也是一种文件;用于存放源文件的路径(位置+名字),应用最多
硬链接:在同一个分区中,不同的文件的inode号码相同了,这些文件互为硬链接,很少使用
ln(link)创建软连接或硬链接,默认创建软链接。
软链接格式 ln -s 源文件 软连接文件
#案例一 创建软连接
[root@yunwei ~]# touch 1.txt
[root@yunwei ~]# ll
总用量 8
-rw-r--r-- 1 root root 0 1月 25 18:39 1.txt
[root@yunwei ~]# ln -s 1.txt 2.txt
[root@yunwei~]# ll
总用量 12
-rw-r--r-- 1 root root 5 1月 25 18:39 1.txt
lrwxrwxrwx 1 root root 5 1月 25 18:40 2.txt -> 1.txt
温馨提示: 如果源文件被删除或改名或移动走,软连接会如何? 红色闪烁
硬链接格式 ln 源文件 硬链接文件
[root@yunwei ~]# ln 1.txt yinglink
[root@yunwei ~]# ll -i |grep 84
393584 -rw-r--r-- 2 root root 16 1月 25 18:40 1.txt
393584 -rw-r--r-- 2 root root 16 1月 25 18:40 yinglink
-
啥意思
- 软连接(符号链接)softlink/symlink,类似于windows快捷方式,存放源文件的位置。
- 硬链接:同一个分区中inode号码相同的文件,互为硬链接。
-
咋来的
- 软连接通过
ln -s创建,硬链接通过ln创建
- 软连接通过
-
特点
- 软件连接是比较常用的,可以给文件,目录创建.
- 硬链接只能给文件创建,不能跨分区,无法给目录创建硬链接,较少使用。
-
咋没的
- 删除软连接,源文件不受影响。
- 删除源文件,软连接无法使用,红底白字闪烁
- 删除硬链接,源文件,软连接无影响.
- 删除源文件和硬链接,这个文件就被删除了
那么硬链接删除其中一个文件,另一个能否正常使用
当你使用硬链接创建多个文件时,它们实际上是指向同一个 inode(索引节点)的不同文件名。inode 包含文件的元数据信息和指向数据块的指针。硬链接只是在目录中创建了一个额外的文件名,而不创建新的 inode。
如果你删除一个硬链接,实际上只是减少了 inode 记录的链接计数。只有当链接计数减为零时,文件才会被真正删除。因此,删除其中一个硬链接并不会影响其他硬链接,因为它们仍然指向相同的 inode。
所以答案是:是的,当删除硬链接中的一个文件,其他硬链接仍然能够正常使用,因为它们共享相同的 inode 和数据块。
1.5 文件大小
1.查看文件大小
ll -h
2.查看目录大小
du -sh /etc/
-h 人类可读取形式
-s 不要显示目录所有子目录,只显示汇总信息。
类似于windows中文件夹属性

du -sh /etc/和ls -ld /etc/的区别是什么?
du -sh /etc/查看指定目录及其子目录的磁盘使用情况
ls -ld /etc/查看目录本身的大小等信息
[root@yunwei ~]# ls -ld /etc/
drwxr-xr-x. 95 root root 12288 1月 27 10:06 /etc/
[root@yunwei ~]# ls -lhd /etc/
drwxr-xr-x. 95 root root 12K 1月 27 10:06 /etc/
1.6文件时间
stat #查看文件的属性信息+文件名

| Linux文件时间 | 说明 |
|---|---|
| mtime | modify 修改时间,最常用 (修改内容) |
| atime | access 访问时间 |
| ctime | change 文件属性的变化时间 (修改权限) |

2、案例实战-一个基于软连接服务升级流程
未来可以设计基于软连接的升级与回滚流程
- 升级:删除旧的软连接,创建软连接指向新的版本即可
- 回滚:删除旧的软连接,创建软连接指向旧的可用的版本即可
3、打包压缩
运维的日常工作中,我们需要备份文件,备份某一个目录中的文件,这时候使用cp等命令不行了。 占用空间巨大,避免空间浪费,选择打包压缩目录实现备份的目的。
未来:备份单个文件就是cp即可,备份多个文件或目录推荐使用打包压缩。
3.1 概述
| 压缩命令 | 应用场景 | |
|---|---|---|
| tar | 大部分场景使用tar即可,创建、查看、解压、解压到指定目录 | 核心使用 |
| gzip | 一般配合其他命令使用 | |
| zip | 一般用于解压zip格式的压缩包unzip | 目前会使用unzip |
3.2 tar
| tar命令 | 选项说明 |
|---|---|
| 创建压缩包 zcf | tar zcf 压缩包 被压缩的文件/目录 |
| 解压 xf | tar xf /tmp/etc.tar.gz |
| 解压到指定目录 -C | tar xf /tmp/etc.tar.gz -C /mnt/ |
| 查看 tf | tar tf /tmp/etc.tar.gz |
| v 显示过程(一般不加) | |
| c 打包 | |
| z 压缩 | |
| f 指定压缩包 |
1)其他格式
zcf
z使用gzip进行压缩,压缩包以.tar.gz结尾j使用bzip2进行压缩,压缩包以.tar.bz2结尾J使用xz进行压缩,压缩包以.tar.xz结尾(压缩尺度最大)
tf 无论什么格式,.tar.gz .tar.bz2 .tar.xz
xf 无论什么格式,.tar.gz .tar.bz2 .tar.Xz.
2)忽略的警告
tar警告⚠️:从成员名中删除开头的"“/”
tar: Removing leading "/" from member names
结论:是个警告而已,可以忽略
由来:
- 这个是tar命令的安全保护机制
- 提示出现的原因,我们打包的目标目录或文件是绝对路径。
- 把我们使用的绝对路径转换为相对路径
- 为了防止压缩包中保留绝对路径,解压的时候可能发生覆盖,导致数据,配置丢失
3.3 gzip
创建gz压缩包
gzip test.txt
ll test.txt.gz
解压
gzip -d test.txt.gz
3.4 zip/unzip
专门处理.zip格式的压缩包,.tar无法处理
.zip格式是windows和linux共同支持格式
如果没有请安装
yum install -y unzip
压缩
zip -r test.zip /root/test
-r 用于压缩目录
解压
unzip test.zip
相关文章:
Linux文件属性和打包压缩详解
1、文件属性体系 1.1 文件系统概述 [rootyunwei /]# ls -lhi 总用量 72K3505 lrwxrwxrwx. 1 root root 7 3月 7 2019 bin -> usr/bin 262152 dr-xr-xr-x. 5 root root 4.0K 12月 19 16:00 boot 399635 drwxr-xr-x 2 root root 4.0K 11月 5 2019 data1026 drw…...
微服务注册到nacos时,注册失败报错解决
微服务注册到nacos时,注册失败报错解决 微服务注册nacos时报错nacos报错alipay-jraft.log日志报错原因排查 微服务注册nacos时报错 NacosException: failed to req API:/nacos/v1/ns/instance/list after all servers([127.0.0.1:28100]) tried: ErrCode:503, ErrM…...
基于Sringboot+Vue个人驾校预约管理系统--论文pf
TOC springboot503基于SringbootVue个人驾校预约管理系统--论文pf 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。…...
python-逆序数(赛氪OJ)
[题目描述] 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。比如一个元素个数为 4 的数列,其元素为 2,4,3,1,则 (2,…...
PCIE-flit mode retry
下一个即将发送的seq num: 下一个即将发送的ack或者nak的seq num: Tx发送exp seq num的个数: Tx发送nak的个数 下一个期望收到的flit的seq num,注意是指下个期望收到的有效的、non-idle、non_duplictae的flit: 收到的flit的真实的seq num(implicit…...
使用Obsidian实现Anki快速制卡
文章目录 前言准备双双启用遇到问题查看是什么问题解决问题 开始使用使用前的一些设置快速制卡 前言 我现在使用 Anki 的同时也使用 Obsidian,正好可以通过插件来让这两个十分好用的软件实现联动。 在 Obsidian 中实现 Anki 的快速制卡。 准备 首先要在这两个软…...
Python编程:从入门到实践书籍介绍
对于Python入门的书籍推荐,以下是五本详细讲解的书籍,它们各自具有不同的特点和适用对象: 1. 《Python编程:从入门到实践》 作者:埃里克马瑟斯(Eric Matthes)《Python编程:从入门到实践》是一本经典的Pyth…...
Vue 3 的 emit 简单使用
在 Vue 3 中使用 emit,子组件可以将事件通知父组件,父组件可以在响应这些事件时执行特定的逻辑。 emit 是一种非常灵活的通信方式,允许组件之间以解耦的方式进行交互。 1. 基本用法 1、使用 defineEmits 子组件 <template><div…...
java在实际开发中反常识bug
目录 1.背景 2.案例 1.包装类型拆箱导致空指针异常 2.switch传入null,导致空指针异常 3.Arrays.asList添加异常 4.转BigDecimal类型时精度丢失 5.除以0不一定抛异常 6.Steam filter后集合修改,会修改原数据 3.完美&评论 1.背景 这篇博客,将列举本人在实际开发中看…...
java多线程(三)重排序与Happens-Before
一、重排序 1.1 指令重排定义和含义 定义:重排序是指编译器和处理器为了提高程序执行效率,在不改变单线程程序执行结果的前提下,对指令执行顺序进行重新排列的一种优化手段。 重排序可以发生在编译器优化阶段,也可以发生在处理…...
RUST知识框架与学习框架
RUST知识框架与学习框架 Rust是一门系统级编程语言,以其内存安全、高性能和并发性而著称,特别适用于开发低级系统、网络服务和并发应用,具有广泛应用前景。 一、Rust知识框架 基础语法与核心概念 变量与类型:包括基本数据类型、…...
git cherry-pick命令使用分享
在日常开发中,有时候会遇到一种情况,线上出了问题,但是现在的预生产环境(Pre-production Environment)或准生产环境(Stage Environment)有还未通过验收的内容,那么想进行修复可以选择…...
关闭Chrome快捷键
chrome是没办法改变快捷键以及屏蔽快捷键的,需要安装插件:shortkey 保证插件是开启的 不用做其他设置所有快捷键已被关闭...
常见DDoS攻击之零日漏洞Zero-day Attacks
目录 一、什么是零日漏洞Zero-day Attacks 二、零日漏洞是如何转化为零日攻击的 三、常见的零日攻击类型 四、为什么零日攻击很危险 五、著名的零日攻击事件 六、如何降低零日攻击的风险 七、DDoS攻击防御解决方案(定制化) 7.1 产品优势 7.2 产品…...
【字符串】Z函数 - 模板
z [ i ] z[i] z[i] 表示字符串 s s s 和 s [ i , n − 1 ] s[i,\ n - 1] s[i, n−1] 的最长前缀的长度,特别的, z [ 0 ] 0 z[0]0 z[0]0 // *********Z函数************** // - 时间复杂度 O(n) vector<int> z_function(string s) {int n (int…...
MySQL范围分区分区表
什么是范围分区分区表? 范围分区是一种根据某个列的范围值来分割表数据的分区方式。在范围分区中,每个分区都有自己的范围条件,当插入数据时,MySQL会根据指定的范围条件将数据分配到相应的分区中。这种分区方式可以使得表的数据按…...
网络UDP报文详细解析
目录 一、简介二、详细介绍三、其他相关链接1、TCP报文段的详细图总结2、TCP三次握手和四次挥手详解3、socket通信原理及相关函数详细总结4、网络包IP首部详细解析 一、简介 本文主要介绍UDP报文格式。 二、详细介绍 UDP是一种无连接、不可靠的用户数据报协议,其…...
望繁信科技入选2024年第3批上海市高新技术成果转化项目名单
近日,上海望繁信科技有限公司(以下简称“望繁信科技”)凭借其自主研发的“数字北极星流程挖掘分析软件”项目,成功入选2024年第3批上海市高新技术成果转化项目名单。这一殊荣根据《上海市高新技术成果转化项目认定办法》ÿ…...
深入探讨MySQL的锁机制:全局锁、表级锁和行级锁
深入探讨MySQL的锁机制:全局锁、表级锁和行级锁 在数据库管理中,锁机制是确保数据一致性和并发控制的重要手段。MySQL提供了多种锁策略,包括全局锁、表级锁和行级锁。本文将详细探讨这些锁机制的概念、使用场景及其示例代码,帮助…...
iLogtail 开源两周年:感恩遇见,畅想未来
早在上世纪 60 年代,早期的计算机(例如 ENIAC 和 IBM 的大型机)在操作过程中会输出一些基本的状态信息和错误报告,这些记录通常通过打印机输出到纸带或纸卡上,用于跟踪操作流程和调试,最早期的日志系统借此…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
安全领域新突破:可视化让隐患无处遁形
在安全领域,隐患就像暗处的 “幽灵”,随时可能引发严重事故。传统安全排查手段,常常难以将它们一网打尽。你是否好奇,究竟是什么神奇力量,能让这些潜藏的隐患无所遁形?没错,就是可视化技术。它如…...
5. TypeScript 类型缩小
在 TypeScript 中,类型缩小(Narrowing)是指根据特定条件将变量的类型细化为更具体的过程。它帮助开发者编写更精确、更准确的代码,确保变量在运行时只以符合其类型的方式进行处理。 一、instanceof 缩小类型 TypeScript 中的 in…...

