Linux压缩那些事

news2023/12/12 3:14:44

简介

本文主要介绍互联网上最主流的两种压缩格式(rar和zip)文件在Linux系统上的压缩和解压操作,包括分卷压缩。本文不展开过多详细的命令选项的讲解,只列举实际使用Linux系统最常用的一些命令

ZIP

压缩

将多个文件压缩为一个zip压缩包的命令如下。

zip myfile.zip file1 file2 …

将多个同种文件压缩为一个zip包的命令如下,如下面将所有jpg文件压缩到一个压缩包里。

zip myfile.zip *.jpg

将一个目录压缩为一个压缩文件,命令如下。

zip -r myfile.zip folder

将一个目录下的所有文件压缩为一个压缩包,命令如下。

zip -r myfile.zip folder

解压

解压某个zip文件,命令如下。

unzip myfile.zip

将某个zip文件解压到某个特定目录下,命令如下。

unzip myfile.zip -d /home/folder

以不经过询问直接覆盖原文文件的方式将zip文件解压到某个特定目录下,命令如下。

unzip -o -d /home/folder myfile.zip

分卷

我们其实经常遇到大文件需要分卷压缩的情况(如百度网盘限制单文件上传大小、微信限制单文件发送大小),因此也经常需要解压分卷压缩的文件。这在有图形软件的Windows上是很容易的事情,但对于没有图形界面的Linux服务器,则需要了解一下命令。

首先我们来看如何分卷压缩文件,其实分为两个步骤,那就是压缩分卷,先产生一个大的压缩包在对其进行分卷即可。

先是生成压缩包。

zip test.zip test.mp4

然后对压缩包进行分卷拆分,-s命令指定每个卷的大小,其中k表示kB,m表示MB,g表示GB而t表示TB。

zip -s 1g test.zip --out ziptest

比如我这里将一个2.9G的大文件拆分为1G的分卷文件,产生如下的一些文件,其中test.zip是原始压缩文件,后面的ziptest前缀的就是分卷压缩的结果,通常我们收到的分卷压缩文件就是这种格式。

.
├── test.zip
├── ziptest.z01
├── ziptest.z02
└── ziptest.zip

接着,我们来看如何分卷解压文件,最常用的方法就是将多个同一前缀的分卷压缩文件合并为一个压缩文件然后解压,这个过程分为合卷解压两个步骤。

我们首先来看合卷操作,网上最多的教程就是使用cat命令进行文件合卷,如下。

cat ziptest.z* > ziptest.single.zip

然后接着对该合卷文件进行解压即可,命令如下。

unzip ziptest.single.zip

但是此时有的分卷压缩包会出现如下错误,这个错误是压缩文件损坏,但是事实上我们这里的压缩文件并没有经过ftp等传输一直在本机上,因此我个人觉得是cat合并时顺序不当。(事实上,我这里因为有拆分前的zip文件,我对比了一下它和我们使用cat合并后的zip文件的md5值,是不一样的。

在这里插入图片描述
因此,既然是zip拆的,我们用zip来合并文件,我们指定分卷文件序列中唯一的zip后缀的文件并进行修复(-F选项)后输出为单文件。此时我们查看合并后的文件的md5值,发现和原始分卷之前大压缩文件一致。

zip -F ziptest.zip --out ziptest.single.zip

然后解压文件即可。

unzip unzip ziptest.single.zip

RAR

上一节我们介绍了ZIP文件的压缩解压以及分卷压缩和解压,由于RAR的分卷文件实际遇到的并不多,因此这里只设计RAR压缩文件的压缩和解压。

压缩

将多个文件压缩为一个rar压缩包,命令如下。

rar a myfile.rar file1 file2 …

将多个同种文件压缩为一个zip包的命令如下,如下面将所有jpg文件压缩到一个压缩包里。

rar a myfile.rar *.jpg

解压

将rar压缩文件解压到当前目录。

unrar e myfile.rar 

将rar文件解压到指定目录。

unrar x test.rar /tmp 

总结

本文主要介绍了Linux系统上常见的ZIP和RAR格式的压缩和解压操作,包括分卷压缩和分卷解压。最后,如果读到了这里并且我的文章对你有所帮助,欢迎一键三连,你的支持是我不懈创作的动力。

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

如若内容造成侵权/违法违规/事实不符,请联系七分地网进行投诉反馈,一经查实,立即删除!

相关文章

手机当电脑音响_hifi迷你组合音响怎么样 hifi迷你组合音响优势简介【详解】

迷你音响简单的讲就是便于携带的产品,在近年来受到人们的青睐,户外的时候,hifi迷你组合音响会给人们增添很多乐趣。这种类型产品虽然个头小巧,但是不影响音质播放。那么,hifi迷你组合音响有什么特点吗?大家请看介绍。…

android之SharedPreferences

2019独角兽企业重金招聘Python工程师标准>>> 一、SharedPreferences应用场景 SharedPreferences 用于保存参数; 内部是以XML文件进行保存的,位于/data/data/package/shared_prefs目录中; 二、SharedPreferences核心代码 1.保存 Sh…

牛客多校9 - Groundhog Chasing Death(质因子分解+思维)

题目链接:点击查看 题目大意:给出 a , b , c , d , x , y ,求 题目分析:因为涉及到了 gcd 的乘积运算,那么易知不同质因子的贡献是相互独立的,首先我们就可以先将 x 和 y 进行质因子分解,那么…

用WPF山寨折线图,抄?是狠狠的抄

对于没有美术细胞的我来说,抄袭人家的设计或是创意是再平常不过的事,我承认这很无耻,如果在伟大“天朝”的教育体系下还可能升级为道德上的沦丧,毕竟人家搞个东西也不容易,可任务在身,只好下策,…

PyCharm编写shell脚本无法运行

背景 我们常常选择使用PyCharm在本地(Windows)进行开发,然后将文件远程同步到远程服务器(Linux)运行程序,但是这样编写的shell脚本常常无法运行,出现语法错误,因为好几个朋友和我提…

返回局部变量或临时变量的地址_值传递和地址返回两者在堆区(Heap)应用的三种易错点...

1、指针变量作为参数进行值传递给函数的形参,并在堆区(Heap)进行内存分配和赋值程序源码:1 结果:Segmentation fault (core dumped)分析:如上图,指针变量ptr进行值传递给函数allocation()的形参tmp并赋值为NULL&#x…

微服务通信带来的问题

有了远程通信以后,我们势必会考虑几个问题 1. 目标服务肯定会做扩容,扩容以后,客户端会带来一些变化 2. 客户端对于目标服务如何进行负载均衡 3. 客户端如何维护目标服务的地址信息 4. 服务端的服务状态变化,如何让客户端尽心…

牛客多校10 - Tournament(找规律)

题目链接:点击查看 题目大意:现在有 n 个队伍参加比赛,任意两个队伍之间都要进行一次比赛,也就是共需要进行 n * ( n - 1 ) / 2 次比赛,对于每个队伍来说,必须要在第一场比赛的时候到达赛场,在…

Zend API: array_init

为什么80%的码农都做不了架构师?>>> array_init 和array_init_size 这2个看起来像是个函数其实这2个都是宏,具体定义在文件:zend_API.h 中。 #define array_init(arg) _array_init((arg), 0 ZEND_FILE_LINE_CC) #define array…

pvbrowser安装教程(Linux)

简介 pvbrowser是一款基于QT的开源组态软件开发框架,它为客户端计算机提供了一个专门的浏览器,并为创建实现可视化的服务器提供了一个集成开发环境。不过,官方文档对于pvbrowser开发环境的配置写的略微有点草率,本文给出Ubuntu下…

tensorflow官方文档_Tensorflow 2.0 Preview 官方文档

TensorFlow 2.0目前放出了Preview版本。目前想了解TensorFlow 2.0最快的方式就是查看官方API中的变化。本文列举一些从TF官方API中看出的TF 2.0的改进。TensorFlow 2.0 Preview可以通过pip下载了:CPU: https://pypi.org/project/tf-nightly-2.0-preview/GPU: https://pypi.org/…

Android ---- Context

Context字面意思上下文,位于framework package的android.content.Context中,很多方法需要通过  Context才能识别调用者的实例,比如说Toast的第一个参数就是Context,一般在Activity中我们直接用this代替,代表调用者的 …

Linux进程详细信息查看

我们通过ps及top系列命令查看进程信息时,只能看到命令执行的相对路径,查不到的进程的详细信息(如绝对路径),那么这些信息到底如何查找呢? 其实,在Linux中,一切皆文本,那…

python操作json_如何使用Python处理JSON数据

如何使用Python处理JSON数据?本篇文章就给大家介绍使用Python处理JSON数据的基本方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 在介绍使用Python处理JSON数据的基本方法之前,我们首先要了解一下什么是J…

面试题——interleave

2019独角兽企业重金招聘Python工程师标准>>> <!-- lang: cpp --> /** *3个字符串a&#xff0c;b&#xff0c;c。判断c是否是a和b的interleave&#xff0c;也就是c中应该有a&#xff0c;b中所有字符&#xff0c; *并且c中字符顺序和a&#xff0c;b中一样。 *比…

corosync/openais+pacemaker+drbd+web实现高可用群集

拓扑图:配置前提&#xff1a; 1.节点的名字必须跟uname -n的名字相同&#xff0c;而且两个主机必须能通过主机名来访问。尽量不通过DNS来访问。时钟时间保持一样。 2.双方的通信要必须通过SSL的无障碍通信机制 3.双节点之间可以通过某个IP来提供连接&#xff0c;但是这只是通信…

0459-Repeated Substring Pattern(重复的子字符串)

这个系列算是出于个人兴趣开的一个新坑吧&#xff0c;最近看到同学刷LeetCode算法题&#xff0c;就想写写那些可以一行Python代码写出来的题目&#xff0c;因此本专栏的文章的解题方式效率不做保证&#xff0c;只为追求“一行的浪漫”。 题目 题解 简单解释一下题目&#xff0…

golang 反射_golang原理篇- nil:接口类型和值类型的区别

interface接口类型是golang的最重要的数据结构&#xff0c;底层是value和type组成&#xff0c;实现interface的struct的实例都能赋值给接口类型的变量&#xff0c;实现动态value的能力。type记录value的类型。int 3 的接口表示是(int, 3)&#xff0c;接口的零值是 (nil, nil)&a…

分布式一致性问题

什么是分布式一致性问题呢&#xff1f;简单来说&#xff0c;就是在一个分布式系统中&#xff0c;有多个节点&#xff0c;每个节点都会提出一个请求&#xff0c;但是在所有节点中只能确定一个请求被通过。而这个通过是需要所有节点达成一致的结果&#xff0c;所以所谓的一致性就…

can1--can初探

updating http://download.csdn.net/detail/songqqnew/4399668 http://download.csdn.net/detail/songqqnew/4399670http://download.csdn.net/detail/songqqnew/4399684mcp2515寄存器一览 几个寄存器名称及地址 TXBnCTRL——发送缓冲器n 控制寄存器&#xff08;地址&#xff1…