前言

最近,笔者在用7-Zip解压文件的时候遇到了不支持压缩算法的报错,一番了解之后,发现需要解压的文件使用了zstd算法进行压缩,而7-Zip不支持该压缩算法,在此简单写一篇博客记录一下。

7-Zip使用zstd压缩算法

笔者在万能的github上找到了一个7-Zip的分支项目7-Zip-zstd,这个项目在7-Zip的基础上加入了对zstd以及多种其他算法的支持,还提供了作为软件安装,以及作为7-Zip插件安装的方式,这里我简单介绍一下如何作为7-Zip插件安装。

首先,前往7-Zip ZS Releases,根据自己的操作系统下载名为Codecs的压缩文件,并解压,然后,找到7-Zip的安装位置,windows系统的默认安装位置为C:\Program Files\7-Zip,在该文件夹中创建Codecs文件夹,注意大小写,最后将解压出的所有文件放入该文件夹中。可以通过命令7z.exe i来判断是否安装成功,该命令输出应为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
7-Zip 21.03 (x64) : Copyright (c) 1999-2021 Igor Pavlov : 2021-05-06

Libs:
0 C:\Program Files\7-Zip\7z.dll

Libs:
0 c:\Program Files\7-Zip\7z.dll
1 c:\Program Files\7-Zip\Codecs\brotli-x64.dll
2 c:\Program Files\7-Zip\Codecs\flzma2-x64.dll
3 c:\Program Files\7-Zip\Codecs\lizard-x64.dll
4 c:\Program Files\7-Zip\Codecs\lz4-x64.dll
5 c:\Program Files\7-Zip\Codecs\lz5-x64.dll
6 c:\Program Files\7-Zip\Codecs\zstd-x64.dll

...

Codecs:
0 4ED 303011B BCJ2
0 ED 3030103 BCJ
0 ED 3030205 PPC
0 ED 3030401 IA64
0 ED 3030501 ARM
0 ED 3030701 ARMT
0 ED 3030805 SPARC
0 ED 20302 Swap2
0 ED 20304 Swap4
0 ED 40202 BZip2
0 ED 0 Copy
0 ED 40109 Deflate64
0 ED 40108 Deflate
0 ED 3 Delta
0 ED 21 LZMA2
0 ED 30101 LZMA
0 ED 30401 PPMD
0 D 40301 Rar1
0 D 40302 Rar2
0 D 40303 Rar3
0 D 40305 Rar5
0 ED 6F10701 7zAES
0 ED 6F00181 AES256CBC
1 ED 4F71102 BROTLI
2 ED 21 FLZMA2
3 ED 4F71106 LIZARD
4 ED 4F71104 LZ4
5 ED 4F71105 LZ5
6 ED 4F71101 ZSTD

常用压缩算法

趁此机会,我也简单了解了目前常用的压缩算法与其优缺点。评价一个压缩算法有两个指标,分别是压缩比以及速度,包括压缩速度以及解压速度,而zstd算法在这两个个方面都有着非常好的表现,属于每一项都不是最好,但是都是高分,因此zstd也正在逐渐成为主流的压缩算法。

那么,在这两个方面表现最好的压缩算法是什么呢,目前压缩比最好的压缩算法是LZMA算法,这也是7-Zip的看家算法,而在速度上表现最好的是LZ4/LZ5算法,当然,这都是有代价的,高压缩比的LZMA算法的速度非常的慢,反之,LZ4/LZ5算法的压缩比非常的低,因此这两种算法都属于非常偏科的算法,只适用于少数特定场景。

至于其他的压缩算法,在此就不过多介绍了,从实用性的角度来讲,这三种压缩算法就可以满足绝大多数的需求了,下面放上三种算法的对比

算法 压缩比 速度
Zstd 中到高
LZ4 较低 极快
LZMA (XZ) 极高 极慢