开源数据压缩工具-7Zip
2013-05-24 10:35:31 阿炯

7-Zip是一个开放源码的数据压缩程序,主要用在Windows操作系统,Unix的操作系统如Linux与FreeBSD下面有7-zip的移植版本p7zip可以使用。它提供命令行接口的程序或图形用户界面的程序,而且可以与资源管理器结合。

7-Zip是自由软件,由Igor Pavlov于1999年开始发展,并把主体在GNU LGPL下发布;加密部份,使用高级加密标准(AES)的代码,使用BSD协议授权;解压RAR部分,使用RAR特定的许可协议。


7-Zip is open source software. Most of the source code is under the GNU LGPL license. The unRAR code is under a mixed license: GNU LGPL + unRAR restrictions.

7-Zip在2007年获得SourceForge.net的社区票选为"最佳技术设计"及"最佳项目"两个奖项。

7-Zip预设的格式是其自行开发的7z格式,扩展名为'.7z'。7z格式包含多种算法,最常使用的就是Bzip2以及作者Igor Pavlov开发的LZMA。LZMA算法比起其他常见的传统压缩算法,如Zip、RAR来说相对较新,压缩率也比较高。7z格式默认使用Unicode来存储文件名称,可以避免不同系统间压缩解压乱码的问题。

注意:cli版本为p7zip,为跨平台版本,并不是由开发者维护。

特性
支持256-bit AES加密(256 bit Advanced Encryption Standard (AES))
7-Zip有弹性地支持动态文件大小压缩,应对备份至移动媒体如CD与DVD十分有效
支持FAR Manager插件
支持79种语言[含英文、中文(简体、繁体)、日文、韩文]
相对于需付费的WinRAR、WinZip,7-Zip提供免费且强大的压缩/解压缩能力
支持多线程压缩与解压缩,且具有高压缩比率
7-Zip有能力创建自解压缩档(SFX)
7-Zip有能力解压缩错误文件名的压缩档,必要时,可以重命名文件
开放式体系架构,可轻易的添加任何一种新的压缩方法,如LZMA、LZMA2、BZip2等
能够兼容任意压缩、转换、加密算法
最高支持16000000000 GB 的文件压缩
以 Unicode 为标准的文件名,在跨平台使用上解决多语言间的编码问题
支持固实压缩与文件头压缩
仅解压缩:ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR, Z,对于 ZIP 及 GZIP 格式,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比
Windows 资源管理器集成
强大的的文件管理器
更给力的命令行版本

7z格式支持的算法
7z 已公开了结构编辑功能,所以它可以支持任何一种新的压缩算法。到目前为止,下列压缩算法已被整合到了 7z 中::

压缩算法--备注
LZMA--改良与优化后的 LZ77 算法
LZMA2--改良的 LZMA 算法
PPMD--基于 Dmitry Shkarin 的 PPMdH 算法
BCJ--32 位 x86 可执行文件转换程序
BCJ2--32 位 x86 可执行文件转换程序
BZip2--标准 BWT 算法
Deflate--标准 LZ77-based 算法

LZMA算法介绍
LZMA是7z格式默认的压缩算法,它的主要特征有:

高压缩比率
可变的字典大小(高达4GB)
压缩速度:在 2 GHz  CPU上,大约 1 MB/s
解压缩速度:在 2 GHz  CPU上,大约10-20 MB/s
较小解压缩内存(依赖于所选的字典大小)
较小的解压缩代码,大约5KB
支持多线程
基于以上优点,LZMA压缩算法适合嵌入式应用。此外,LZMA算法基于GNU LGPL发布。LZMA SDK下载地址

7-Zip 适用于 Windows、Mac OS X、Linux、Unix 平台的命令行版本。

7-Zip特点:使用了 LZMA 与 LZMA2 算法的7z格式,拥有极高的压缩比。

支持格式:
压缩/解压缩:7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM
仅解压缩:ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR, Z
-对于ZIP及GZIP格式,7-Zip 能提供比使用PKZip及WinZip高2-10%的压缩比
-为7z与ZIP提供更完善的AES-256加密算法
-7z格式支持创建自释放压缩包
-Windows资源管理器集成
-强大的的文件管理器
-更给力的命令行版本
-支持FAR Manager插件
-支持87种语言


7-Zip 正式发布首个针对 Linux 的官方版本

2021年3月消息,7-Zip for Linux 是知名的解压缩软件 7-zip 官方在 Linux 上发布的首个版本。虽然 Linux 早已利用一个名为 p7zip 的工具并通过 POSIX 端口支持 7-zip 的文件格式,但它是由不同的开发者所维护的项目,并非 7-zip 官方出品。而且 p7zip 开发者已经有 4、5 年没有维护该项目了,因此 7-Zip 开发者 Igor Pavlov 决定基于最新的 7-Zip 源代码创建一个全新的官方 Linux 版本。Pavlov 已经正式发布了 7-Zip for Linux 的 AMD64、ARM64、x86 和 armhf 版本,用户可以点击超链下载对应版本。7-Zip for Linux 的第一个版本是以控制台应用程序的形式发布的,其命令行参数与 p7zip 类似,但不完全相同。

虽然 Pavlov 还没有公布源代码,但他分享了一些关于如何编译的信息。由于他自己并不使用 Linux,所以他向其他开发者就编译程序的最佳方式寻求了建议。Pavlov 在 7-zip 的发行页面上写道:"这个全新的 7-Zip for Linux 的二进制文件是由 GCC 编译的,没有进行任何 -static 切换。而编译后的 32 位可执行文件(x86 和 armhf)在一些 arm64 和 amd64 系统上无法工作,可能是因为缺少一些所需的 .so 文件。如果您对如何编译适用于大多数 Linux 系统的二进制文件有一些建议,请反馈给我“。

Pavlov 还希望用户使用以下命令对 7-Zip for Linux 在不同系统上的性能进行基准测试:
./7zz b "-mm=*" "-mmt=*" -bt > bench.txt

对于喜欢使用 7-Zip 的用户而言,这是个好消息,但由于目前针对 Linux 的 7-zip 还未公开源代码,因此对安全有所担忧的用户可以在沙盒中运行该软件。


7-Zip 低于v16.00版本发现多个高危漏洞

思科Talos安全团队的研究人员报告在流行的开源解压缩工具7-Zip中发现多个可利用的漏洞。7-Zip刚刚释出了最新版的v16.00修复了漏洞,使用7-Zip用户建议尽快升级。研究人员称,7-Zip处理Universal Disk Format(UDF) 文件的方法CInArchive::ReadFileItem存在越界读漏洞,能被任何包含畸形Long Allocation Descriptor的条目触发。另一个可被利用的是堆溢出漏洞,存在于 Archive::NHfs::CHandler::ExtractZlibFile方法中,两个漏洞都是有缺陷的输入验证导致的。数据输入验证对所有软 件的安全都是至关重要的。

最新版本:16.02
在刚刚过去的整整5年,著名免费开源文件压缩管理工具7-Zip,迎来15.12正式版,其上一个正式版是9.20,发布时间可以追溯到2010年11月18日。值得一提的是,本次更新并没有给出更新日志,在功能完善度方面自然已经做到了历代最好,兼容性方面,7-Zip适用于Windows10-XP等版本。

最新版本:18.05
7-Zip 18.05 正式版已发布,该版本主要的更新是性能方面的改进,以及 zір, hfѕ 和 dmg 编码方面的改进。详细如下:
Тhе ѕрееd fоr ѕіnglе-thrеаd LZМА/LZМА2 dесоdіng wаѕ іnсrеаѕеd bу 30% іn х64 vеrѕіоn аnd bу 3% іn х86 vеrѕіоn.
7-Zір nоw саn uѕе multі-thrеаdіng fоr 7z/LZМА2 dесоdіng, іf thеrе аrе multірlе іndереndеnt dаtа сhunkѕ іn LZМА2 ѕtrеаm.
7-Zір nоw саn uѕе multі-thrеаdіng fоr хz dесоdіng, іf thеrе аrе multірlе blосkѕ іn хz ѕtrеаm.
Тhе ѕрееd fоr LZМА/LZМА2 соmрrеѕѕіng wаѕ іnсrеаѕеd bу 8% fоr fаѕtеѕt/fаѕt соmрrеѕѕіоn lеvеlѕ аnd bу 3% fоr nоrmаl/mахіmum соmрrеѕѕіоn lеvеlѕ.
7-Zір nоw ѕhоwѕ Рrореrtіеѕ (Іnfо) wіndоw аnd СRС/ЅНА rеѕultѕ wіndоw аѕ „lіѕt vіеw“ wіndоw іnѕtеаd оf "mеѕѕаgе bох“ wіndоw.Ѕоmе іmрrоvеmеntѕ іn zір, hfѕ аnd dmg соdе.
Рrеvіоuѕ vеrѕіоnѕ оf 7-Zір соuld wоrk іnсоrrесtlу іn „Lаrgе mеmоrу раgеѕ“ mоdе іn Wіndоwѕ 10 bесаuѕе оf ѕоmе ВUG wіth „Lаrgе Раgеѕ“ іn Wіndоwѕ 10.
Nоw 7-Zір dоеѕn’t uѕе „Lаrgе Раgеѕ“ оn Wіndоwѕ 10 uр tо rеvіѕіоn 1709 (16299).Тhе vulnеrаbіlіtу іn RАR unрасkіng соdе wаѕ fіхеd (СVЕ-2018-10115).

最新版本:21.05
7-Zip 21.05 是2021年发布的第一个主要稳定版本,上一个版本可以追溯到 19.00 版,于 2019 年 2 月发布。与 7-Zip 19.00 相比,21.05 的重要变化包括:
支持解压 b64 文件(Base64 编码)
7-Zip 支持新的 AMD Ryzen 和 Intel CPU 所支持的 SHA-1 和 SHA-256 的硬件指令;这提高了某些操作的性能,包括 ZIP AES 的加密和解密、哈希值的计算,以及 7z、ZIP 和 RAR 的加密和解密的密钥派生速度
改进了 ZIP AES 加密和 7z、RAR 和 ZIP AES 解密
改进了快速和最快压缩级别的压缩率
ARM64 版本对 AES、CRC-32、SHA-1 和 SHA-256 的速度改进
LZMA/LZMA2 压缩操作的最大字典大小增加到 4G
ARM64 版本中 macOS 和 Linux 的 LZMA 和 LZMA2 的解压速度提高了 20-60%
7-Zip 在 ZIP 档案中为 UTF-8 编码的文件名写入一个附加字段
如果 RAM 大小不足以进行大的 LZMA2 字典的压缩操作,则会删除工作的 CPU 线程数来进行压缩
7-Zip 可能会创建文本文件 file.sha256,其中包含所有的文件名和 SHA-256 校验和。该程序也可能检查该文件以验证文件
「Add to Archive」窗口支持设置内存使用限制

最新版本:21.07
21.07 是2021年发布的第二个主要稳定版本,于12月28日发布,更新内容如下:
7-Zip 现在可以提取 VHDX 磁盘镜像
新的 switch 参数: -spm 和 -im!{file_path} 可以从处理中排除目录。对于指定的路径,如果在路径的末尾不包含路径分隔符,则不对其进行处理
在 "添加到归档" 窗口中,现在允许在参数字段中使用 -m 前缀,例如在命令行中使用:-mparam
对于某些目录的名称与另一个目录或文件的名称的前缀部分相同的情况,归档中文件的排序顺序略有更改,以使其更加一致
7-Zip 创建的 TAR 归档文件现在与 GNU TAR 程序创建的归档文件更加一致

最新版本:22.0
7-Zip 22.00 版于2022年6月下旬发布了,上一个版本可以追溯到 2021 年 12 月的 7-Zip 21.07。新版本的 7-Zip 支持提取提取用于 DMG 文件的 APFS 图像。APFS 是 Apple 在 Mac OS 和 iOS 中引入的文件系统,该文件系统针对闪存和固态驱动器存储解决方案进行了优化。对于 Linux ,新版本的 7-Zip 可以以 1 ns 精度存储额外的文件时间戳,此外还对 TAR 文件的支持进行了优化,可以使用开关 -ttar -mm=pax 或 -ttar -mm=posix 创建 POSIX tar 格式的 TAR 文件。对于 Windows ,新的 -snz 开关可以将 Zone.Identifier 流传播到提取的文件,Zone.Identifier 流一般用于确定文件是本地创建或是从 Internet 下载。

适用系统
此版本 7-Zip 适用于 Windows 10/8/7/Vista/XP/2019/2016/2012/2008/2003/2000(Windows 11 也可以使用)。Linux/Posix 移植 :命令行版本 7-Zip p7zip。

支持的格式
压缩解压缩:7z、XZ、BZIP2、GZIP、TAR、ZIP 和 WIM。
仅解压:APFS、AR、ARJ、CAB、CHM、CPIO、CramFS、DMG、EXT、FAT、GPT、HFS、IHEX、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、QCOW2、RAR、RPM、SquashFS、UDF、UEFI、VDI、VHD、VHDX、VMDK、WIM、XAR 和 Z。

最新版本:24.0
2024年5月中旬发布了v24.05稳定版更新,在修复部分 BUG 之外,还引入了全新的 -myv={MMNN},用于设置压缩7z 文件算法版本兼容性版本。MMNN 为 4 位数字,代表不带点的 7-Zip 版本。用户如果指定了-myv={MMNN} 开关,那么 7-Zip 仅使用该版本的压缩算法,但 7-Zip 指定版本以及后续版本可以正常解压。

如果用户没有指定-myv={MMNN},那么默认情况下 -myv= 2300,也就是说 7-Zip 应用会使用 23.00 版本压缩文件,可以使用 23.00 及后续版本解压文件。另外还更新 7-Zip 还引入了 -myfa={FilterID} 和 -myfd={FilterID} ,可以让 7-Zip 使用或者禁用指定的过滤方法来创建 7z 压缩文件。


官方主页:http://www.7-zip.org/
中文主页:http://sparanoid.com/lab/7z/

该文章最后由 阿炯 于 2024-05-16 13:50:03 更新,目前是第 2 版。