Linux常见压缩指令小结
为什么需要压缩技术
我们都知道文件是以byte作为单位的,如果我们的文件仅仅在低位占一个1
0000 0001
这种情况我们完全可以压缩一下,将高位的0全部抹掉即可。
如上所说是一种压缩技术,还有一种就是将1111(此处省略96个)一共100个1,用类似于"100个1"的方式。
zip/unzip
命令选项


递归基础压缩
为了方便演示压缩,我们在tmp下创建一个包含3个文件的zipDir
[root@localhost tmp]# mkdir zipDir
[root@localhost tmp]# cd zipDir
[root@localhost zipDir]# touch file1
[root@localhost zipDir]# touch file2
[root@localhost zipDir]# touch file3
使用最高级别9,将zipDir文件夹下所有文件或者文件夹通通压缩到zipDir.zip中
zip -9r /tmp/zipDir.zip /tmp/zipDir/
排除指定文件压缩
例如我们希望压缩zipDir目录时,不压缩zipDir3
zip -9r /tmp/zipDirWithoutFile3.zip /tmp/zipDir -x "/tmp/zipDir/file3"
如下图可以看到压缩过程中,并没有包括file3

删除压缩包中的文件
将zipDir.zip中的file3文件从压缩包中删除,命令如下所示,注意-d后面要制定和压缩包中相同的文件名所在操作系统中的路径
zip /tmp/zipDir.zip -d /tmp/zipDir/file3

补充文件到压缩包
上文中,我们将file3中zipDir.zip中删除,我们希望将其添加到压缩包中,就可以使用下面这条命令
zip -u /tmp/zipDir.zip /tmp/zipDir/file3

这条指令同样支持将文件夹下的指定内容添加到压缩包中,命令如下
# 将file打头的文件添加到压缩包中
zip -u /tmp/zipDir.zip /tmp/zipDir/file*
解压缩
-o:解压时无脑覆盖目标路径文件
-x 解压时若目标文件夹有该文件则不覆盖
-d 指定目标解压位置
unzip -o /tmp/zipDir.zip -x zipDir/file3 -d /tmp/unzipDir/

gzip/gunzip
选项
该命令只能对文件进行压缩,若指定目录也仅仅是对目录下的文件进行压缩。

递归压缩文件
同样我们为演示gzip增加测试文件夹
mkdir gzipDir;cd gzipDir;touch file1;touch file2;touch file3;
# 因为gzip无法直接压缩文件夹所以需要先用zip压缩一下文件夹zip -r /tmp/gzipDir.zip /tmp/gzipDir/;# gzip以最高级别压缩比压缩文件,并显示压缩过程gzip -9v /tmp/gzipDir.zip

显示压缩比
gzip -l /tmp/gzipDir.zip.gz

解压缩到当前目录
gzip -d /tmp/gzipDir.zip.gz
bzip2/bunzip2
命令选项

与gzip差不多,都是用于压缩文件的,压缩时会删除文件的信息,但是用如下选项即可完成使用最高压缩比,并且压缩时不删除源文件,显示压缩进度的完成压缩
bzip2 -9vk /tmp/*

解压缩同样使用-d即可。
tar
选项
该指令仅仅是对文件或者文件夹做打包而已,对应选项如下


普通压缩
创建示例文件夹和文件
mkdir tarDir;cd tarDir;touch file1;touch file2;touch file3;
显示过程并新建文件的执行压缩
tar -cvf /tmp/tardir.tar /tmp/tarDir/

调用gzip、bzip2压缩
调用gzip压缩,添加一个-z即可
tar -zcvf tardir.tar.gz tardir.tar
调用bz2压缩
tar -jcvf tardir.tar.bz2 tardir.tar
解压缩
将上文的c改为x即可
例如上文压缩原始压缩文件tardir.tar,我们压缩命令为
tar -xvf tardir.tar
gz结尾的tar文件,则用
tar -zxvf tardir.tar.gz
bz2结尾的tar文件则用
tar -jxvf tardir.tar.bz2
dd
常用于文件备份,将指定文件输出到对应文件夹

备份示例
将/etc/inittab备份至/etc/inittab.bak
dd if=/etc/inittab of=/etc/inittab.bak
我们都知道操作系统存储最基础单位为块。可以看到备份过程中,用了0+1的块。说明使用了0个完整的块+1个不到的块完成文件备份。

cpio
选项
该命令也是用于文件备份和还原的

备份
将tarDir备份到tmp的backDir.cpio中
find /tmp/tarDir/ | cpio -ocvB >/tmp/backDir.cpio

恢复
为了演示还原,笔者将被压缩的源文件删除,使用cpio将直接备份的文件原原本本还原为原来路径的原来文件,如下
cpio -icduv < /tmp/backDir.cpio

参考文献
鸟哥的Linux私房菜
循序渐进Linux(第2版)
相关文章:
Linux常见压缩指令小结
为什么需要压缩技术 我们都知道文件是以byte作为单位的,如果我们的文件仅仅在低位占一个1 0000 0001这种情况我们完全可以压缩一下,将高位的0全部抹掉即可。 如上所说是一种压缩技术,还有一种就是将1111(此处省略96个)一共100个1࿰…...
OpenSSL的源码在哪里下载?
官方网站去下载,网址: https://www.openssl.org/source/ 比较老的版本的下载页面地址: https://www.openssl.org/source/old/ 由于某面板的OpenSSL模块的安装配置语句如下: --with-openssl/root/rpmbuild/BUILD/openssl-1.0.2u所…...
使用create-react-app脚手架创建react项目
文章目录 1、安装create-react-app脚手架2、创建 React 项目,项目名为 react-demo3、项目创建成功4、使用vscode打开项目并运行5、项目运行成功node_modules:存放项目所依赖的一些第三方包文件public:静态资源文件夹src:源码文件夹其它文件 1…...
【网络安全】网络防护之旅 - 点燃网络安全战场的数字签名烟火
🌈个人主页:Sarapines Programmer🔥 系列专栏:《网络安全之道 | 数字征程》⏰墨香寄清辞:千里传信如电光,密码奥妙似仙方。 挑战黑暗剑拔弩张,网络战场誓守长。 目录 😈1. 初识…...
JVM基础扫盲
什么是JVM JVM是Java设计者用于屏蔽多平台差异,基于操作系统之上的一个"小型虚拟机",正是因为JVM的存在,使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次,在任何操作系统都可以以相…...
SpringBoot基于gRPC进行RPC调用
SpringBoot基于gRPC进行RPC调用 一、gRPC1.1 什么是gRPC?1.2 如何编写proto1.3 数据类型及对应关系1.4 枚举1.5 数组1.6 map类型1.7 嵌套对象 二、SpringBoot gRPC2.1 工程目录2.2 jrpc-api2.2.1 引入gRPC依赖2.2.2 编写 .proto 文件2.2.3 使用插件机制生产proto相关…...
浏览器的事件循环机制(Event loop)
事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? …...
THEMIS---Beta Sprint Summary Essay Blog
Which course does this assignment belong to2301-MUSE社区-CSDN社区云What are the requirements for this assignmentbeta SprintThe goal of this assignmentTo summarize the beta task progress and the teams sprintsTeam NameThemisTop-of-the-line collection of essa…...
Vue中实现分布式动态路由的基本实现步骤介绍
设想一下,我们在做一个体量非常大的项目,这个项目有很多的模块和相当多的页面。当我们想修改一个路由的时候,我们打开了router文件夹下的index.js文件时,一串长到鼠标滚轮需要滚大半天才滚到底的路由简直让人头皮发麻。 在开始之前…...
【Leetcode】计算器
思路 用栈来完成; 考虑到运算关系,先乘除后加减;此外,一般计算式首个数字式正数;判断字符是否为数字,str.isdigit()字符转数字:ord(str) - ord(‘0’)遇到加减符,压栈数字…...
巧妙的使用WPF中的资源
其实,在wpf中,最核心的就是xaml,因为只有xaml,才能体现出用的是wpf,而不是普通的cs文件,cs文件在winform中等等程序都可以使用的,唯独xaml才是wpf中最重要的,最精华的东西࿰…...
多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测
多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-…...
【AIGC重塑教育】AI大模型驱动的教育变革与实践
文章目录 🍔现状🛸解决方法✨为什么要使用ai🎆彩蛋 🍔现状 AI正迅猛地改变着我们的生活。根据高盛发布的一份报告,AI有可能取代3亿个全职工作岗位,影响全球18%的工作岗位。在欧美,或许四分之一…...
【力扣100】2.两数相加
添加链接描述 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Op…...
算法leetcode|93. 复原 IP 地址(多语言实现)
文章目录 93. 复原 IP 地址:样例 1:样例 2:样例 3:提示: 分析:题解:rust:go:c:python:java: 93. 复原 IP 地址: 有效 IP …...
TOGAF—架构(Architecture)项目管理
一、简介 1.1概述 架构(Architecture)项目在本质上通常是复杂的。他们需要适当的项目管理来保持正轨并兑现承诺。本指南适用于负责规划和管理架构(Architecture)项目的人员。我们解释了如何用事实上的方法和标准(如PRINCE2或PMBOK)来补充TOGAF架构开发方法(ADM),以加…...
MVVM前端设计模式的发展与应用
在MVC模式中,随着代码量越来越大,主要用来处理各种逻辑和数据转化的Controller首当其冲,变得非常庞大,MVC的简写变成了Massive-View-Controller(意为沉重的Controller) 我曾经接手老项目,sprin…...
redis:二、缓存击穿的定义、解决方案(互斥锁、逻辑过期)的优缺点和适用场景、面试回答模板和缓存雪崩
缓存击穿的定义 缓存击穿是一种现象,具体就是某一个数据过期时,恰好有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮。典型场景就是双十一等抢购活动中,首页广告页面的数据过期,此时刚好大量用户进行请求&…...
php的Url 安全的base64编码解码类
/*** Url安全的Base64编码方法* author JerryLi* version 20231217*/ final class UrlSafeB64Fun{/*** 编码* param string $sData 原始字符串* return string*/static public function encode(string $sData): string{$aTmp base64_encode($sData);return strtr($aTmp, [>…...
安全CDN有什么作用,安全CDN工作原理是什么?
一、CDN的应用场景 CDN技术可以应用于各种类型的网站和应用程序,特别是对于以下几种场景,CDN的作用尤为明显: 1. 高流量网站:对于流量较大的网站,CDN可以将网站的内容分发到全球各地的节点上,从而分担服务…...
避坑指南:用TensorFlow 2.x和HuggingFace Transformers搞定中文NER,我踩过的这些坑你别再踩
中文NER实战避坑手册:TensorFlow 2.x与HuggingFace Transformers的进阶技巧 在自然语言处理领域,命名实体识别(NER)一直是核心任务之一。对于中文文本而言,由于语言特性的差异,开发者往往会遇到比英文NER更…...
AI第一次科研竞赛中击败人类!Opus 4.7狂飙2930步创世界纪录
来源:新智元Prime Intellect把Opus 4.7和GPT 5.5关进H200集群,不给人类指导,跑了1万次实验。结果:AI第一次在科研竞赛中打破人类纪录。2930步,递归自改进的卢比孔河,被跨过了。历经1.4万小时H200算力测试与…...
i.MX8MP NPU实战:TensorFlow Lite模型移植与VSI-NPU优化全流程
1. 项目概述与核心价值最近在折腾一块基于NXP i.MX8M Plus的开发板,这块板子最大的亮点就是集成了一个专为边缘AI设计的神经处理单元(NPU)。官方文档里提了一嘴TensorFlow Lite的例程,但真上手去移植,发现坑是一个接一…...
快速上手Highlighter:终极网页高亮工具完整指南
快速上手Highlighter:终极网页高亮工具完整指南 【免费下载链接】highlighter A Chrome extension to highlight text and keep it all saved 项目地址: https://gitcode.com/gh_mirrors/hig/highlighter 作为一名经常浏览网页的用户,你是否曾为无…...
NotebookLM笔记导出全链路实操指南:从Chrome插件绕过限制到API直连导出(含Python脚本)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM笔记导出全链路概览 NotebookLM 是 Google 推出的基于用户上传文档构建个性化知识代理的 AI 工具,其核心价值在于语义理解与上下文生成,但原生不提供直接导出原始笔记…...
不止于仿真:用Vivado自带的仿真器做FPGA设计验证与快速迭代
从仿真到验证:Vivado仿真器在FPGA设计中的高阶应用 在FPGA开发领域,仿真环节常常被工程师视为"不得不做"的流程性工作,而非设计验证的核心手段。这种认知导致许多项目陷入"烧录-调试-修改"的循环中,消耗大量时…...
Python try...except ImportError 语句详解
在Python编程中,ImportError 是与模块导入相关的核心异常。优雅地处理它,是编写健壮、可维护和跨平台代码的关键。try...except ImportError 结构正是实现这一目标的标准工具。本文将为你抽丝剥茧,从基础概念到高级实践,全面解析这…...
Touchpoint:命令行工具集中管理工作上下文,提升开发效率
1. 项目概述:一个被低估的开发者效率工具如果你和我一样,日常开发工作需要在多个代码仓库、项目管理工具(如Jira、Linear)、文档平台(如Confluence、Notion)和沟通软件(如Slack)之间…...
告别ET1100?聊聊AX58100这颗高性价比EtherCAT从站芯片的升级体验
告别ET1100?AX58100高性价比EtherCAT从站芯片的工业升级实战 当工业设备制造商面临从传统控制架构向实时以太网迁移时,EtherCAT从站芯片的选型往往成为关键转折点。十年前,ET1100凭借其稳定的性能和相对友好的开发门槛,成为许多工…...
Linuxbonding链路稳定性治理方法
Linuxbonding链路稳定性治理方法这是一篇面向中级 Linux 使用者的技术文章,主题聚焦在bonding链路,重点讨论链路聚合、冗余切换和接口状态。在真实生产环境中,bonding链路相关问题往往不会以单一错误形式出现,而是混杂在日志、权限…...
