Linux压缩那些事

Posted 周先森爱吃素

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux压缩那些事相关的知识,希望对你有一定的参考价值。

简介

本文主要介绍互联网上最主流的两种压缩格式(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格式的压缩和解压操作,包括分卷压缩和分卷解压。最后,如果读到了这里并且我的文章对你有所帮助,欢迎一键三连,你的支持是我不懈创作的动力。

以上是关于Linux压缩那些事的主要内容,如果未能解决你的问题,请参考以下文章

Linux压缩那些事儿

Android JPEG 压缩那些事

Gulp的那些事

linux下基于源码软件安装的那些事

Linux命令的那些事

函数那些事