当前位置: 首页 > news >正文

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版)

http://www.lryc.cn/news/262503.html

相关文章:

  • OpenSSL的源码在哪里下载?
  • 使用create-react-app脚手架创建react项目
  • 【网络安全】网络防护之旅 - 点燃网络安全战场的数字签名烟火
  • JVM基础扫盲
  • SpringBoot基于gRPC进行RPC调用
  • 浏览器的事件循环机制(Event loop)
  • THEMIS---Beta Sprint Summary Essay Blog
  • Vue中实现分布式动态路由的基本实现步骤介绍
  • 【Leetcode】计算器
  • 巧妙的使用WPF中的资源
  • 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测
  • 【AIGC重塑教育】AI大模型驱动的教育变革与实践
  • 【力扣100】2.两数相加
  • 算法leetcode|93. 复原 IP 地址(多语言实现)
  • TOGAF—架构(Architecture)项目管理
  • MVVM前端设计模式的发展与应用
  • redis:二、缓存击穿的定义、解决方案(互斥锁、逻辑过期)的优缺点和适用场景、面试回答模板和缓存雪崩
  • php的Url 安全的base64编码解码类
  • 安全CDN有什么作用,安全CDN工作原理是什么?
  • Mysql高可用|索引|事务 | 调优
  • 电机驱动开发
  • 基于PaddleNLP的深度学习对文本自动添加标点符号(一)
  • “Java已死、前端已凉”?尊嘟假嘟?
  • 双向无线功率传输系统MATLAB仿真
  • 火山引擎DataLeap:助你实现从数据研发1.0到数据研发3.0的跨越
  • DevOps 和人工智能 – 天作之合
  • 基于主动安全的AIGC数据安全建设
  • Java 程序的命令行解释器
  • 从事开发近20年,经历过各种技术的转变和进步
  • unet v2学习笔记