在Linux中使用7zip/7zz

背景+需求

整体需求跟文章【在Linux上使用7z的最高压缩比来压缩文件】中介绍的类似。

我们的服务遇到一个线上问题,最后定位下来是内存问题,dump了文件,但是有3.4G,tar打包+压缩后还有1.4G。但是这个环境网络受限,下载速度非常慢,而且离谱的是第一次耐着性子用Chrome下载,结果文件损坏,还得重新下载。直接原地爆炸。

所以这个时候需求就很明确了:待下载的文件越小越好,这样即使下载出错,重新下载一次的代价也不大;云端的压缩时间和代价反而不重要了。那么这时就需要一个极致压缩的工具。

然后就来到了7zip了。

安装+使用

下载

访问7zip官网,从https://www.7-zip.org/download.html选择相应的版本下载即可。

或者命令行下载,例如:

wget https://www.7-zip.org/a/7z2102-linux-x64.tar.xz

安装

1 解压:

# mkdir 7zip
# mv 7z2102-linux-x64.tar.xz ./7zip && cd 7zip
tar -xf 7z2102-linux-x64.tar.xz

因为解压后的文件和目录都是放在了当前目录,最好单独创建一个文件夹,然后在独立文件夹中解压。

2 安装

将7zz移动到/usr/bin目录下:

cp 7zz /usr/bin/7zz

之后就可以使用了。

如果不想安装,也是可以直接运行使用的。如果不能使用,那么还是考虑安装方案吧。

使用

参考文章2,这里给出个人使用的命令:

./7zz a -m0=lzma2 -mx=9 heap.7z heapDumpFile.hprof

稍作解释。、
这里大多数参数都使用了默认值,只指定了压缩算法和压缩等级。
具体含义:
a 操作类型:添加文件到压缩包。
-m0=lzma2 指定压缩算法。算法之间的区别可以查看7zip官方文档,例如7-zip.org/7z.html
-mx=9 压缩等级,最高压缩等级为9,对应windows下的极致压缩。
heap.7z 压缩后的文件名
heapDumpFile.hprof 源文件名字

解压缩

# 压缩
./7zz a archive1.zip subdir

# 解压
./7zz x archive.zip

小结

到了这里,基本上上面的需求都满足了,就是用服务器的压缩时间换取更好的网络传输效率。实际中测试下来,3.4G的hprof文件压缩后只有154M,提升非常可观。

授人以渔

基本上面的功能已经可以满足我们的需求了。不过如果后续有另外的需求,或者你的需求跟我们不一样,或者就是想要多学习一些7zip命令等知识,那么可以继续看这一部分。

关于什么是7zz、7za,它们的区别,有哪些命令,每个命令有哪些参数,都是什么含义,最好的文档就是官方文档。

下载的压缩包中,除了7zz文件,还有readme.txt文档和MANUAL文件夹,更多的资料可以查看readme.txt文件,或者用浏览器打开MANUAL文件夹下的start.htm文件,根据自己的需求查看相关页面。比如命令列表就可以查看MANUAL/cmdline/commands/index.htm

问题+解决方案

bash: ./7zz: cannot execute binary file: Exec format error

现象

第一次的时候,直接在解压后的文件夹内直接运行7zz:

./7zz

然后遇到bash: ./7zz: cannot execute binary file: Exec format error错误。后面在本机的虚拟机也遇到了这个问题。不过在写文章的时候,在另一台电脑上尝试复现,结果反而没有问题,神奇。反正如果真的遇到这个问题,可以尝试下面的解决方案。

解决方案

就是一定要放到/usr/bin/目录下才可以。直接运行就是不行。很离谱,不过暂时也没复现,也没查出为什么(文件权限没问题,操作系统和7zz都是64位)。有知道原因的同学欢迎评论交流。

lib.so.6文件

CentOS下报错,网上有类似的解决方案,线上环境,没有乱搞。有需要可以根据报错Google查找解决方案。

参考

本次主要参考文章如下:

参考文章:

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值