mcmilk/7-Zip-zstd

GitHub: mcmilk/7-Zip-zstd

7-Zip 的增强版本,通过集成 Zstandard、Brotli、LZ4 等多种现代压缩算法,为用户提供比原版更丰富的压缩选项。

Stars: 7051 | Forks: 384

# README 这是 [7-Zip] ZS 的 Github 页面,提供了对额外 Codec 的支持。其使用的库位于此处:[多线程库](https://github.com/mcmilk/zstdmt) 你可以通过两种方式进行安装: 1. 包含 GUI 内附加功能以及改进的 Explorer 上下文菜单的完整安装程序 2. 仅安装 codec 插件到现有的 [7-Zip] 安装中(无 GUI 更改,也无额外的 Hasher) # 状态 [![最新稳定版本](https://img.shields.io/github/release/mcmilk/7-Zip-zstd.svg)](https://github.com/mcmilk/7-Zip-zstd/releases) [![PayPal.me](https://img.shields.io/badge/PayPal-me-blue.svg?maxAge=2592000)](https://www.paypal.me/TinoReichardt) ## Codec 概览 1. [Zstandard] v1.5.7 是一种实时压缩算法,提供高压缩率。它提供了非常广泛的压缩/速度权衡,并由非常快速的解码器作为支持。 - 级别:1..22 2. [Brotli] v.1.2.0 是一种通用的无损压缩算法,它结合使用了 LZ77 算法的现代变体、Huffman 编码和二阶上下文建模来压缩数据,其压缩率可与目前可用的最佳通用压缩方法相媲美。它的速度与 deflate 相似,但提供了更密集的压缩。 - 级别:0..11 3. [LZ4] v1.10.0 是一种无损压缩算法,可提供每核 400 MB/s(0.16 字节/周期)的压缩速度。它具有极快的解码器,速度可达每核数 GB/s(0.71 字节/周期)。它还提供了一种名为 LZ4_HC 的高压缩衍生版本,通过牺牲可自定义的 CPU 时间来换取压缩率。 - 级别:1..12 4. [LZ5] v1.5 是对 LZ4 的修改,旨在以更慢的压缩和解压缩速度为代价获得更好的压缩率。它现在已被 [Lizard] 取代。 - 级别:1..15 5. [Lizard] v2.1 是一种具有快速解压缩功能的高效压缩器。它实现了与 zip/zlib 和 zstd/brotli(在低和中等压缩级别下)相媲美的压缩率,解压速度达到 1000 MB/s 或更快。 - 级别 10..19 (fastLZ4) 旨在提供比 LZ4 高约 10% 的解压缩速度 - 级别 20..29 (LIZv1) 旨在保持 75% 解压速度的同时,提供比 LZ4 更好的压缩率 - 级别 30..39 (fastLZ4 + Huffman) 为 fastLZ4 添加了 Huffman 编码 - 级别 40..49 (LIZv1 + Huffman) 提供了最佳压缩率,可与 zlib 以及低级别的 zstd/brotli 相媲美,但解压速度更快 6. [Fast LZMA2] v1.0.1 是一种 LZMA2 压缩算法,在级别 5 及以上时比普通 LZMA2 快 20% 到 100%,但压缩率略低。它使用了并行缓冲基数匹配器以及来自 Zstandard 的一些优化。与标准 LZMA2 相比,该 codec 每个线程使用的额外内存要少得多。 - 级别:1..9 ### 7-Zip ZS CLI 变体 7z 和 7zz 提供了基本相同的核心 7‑Zip 功能,但它们的构建/分发方式 有所不同(支持插件 vs. 独立版),这可能会影响可用的格式/codec。 | 二进制文件 | 描述 | |--------|-------------| | `7z` | 完整的 7‑Zip 命令行工具,通过 7z.so 加载其模块/codec。 | | `7zz` | 用于 Linux/macOS 包的官方独立 7‑Zip 二进制文件 - 无法通过 7z.so 使用外部插件。 | | `7za` | 独立可执行文件,支持的归档格式比 `7z` 少。(精简版 + LZ4 和 Hash) | | `7zr` | 专注于 7z 格式的精简“轻量级”独立可执行文件。(FLZMA2, Zstd) | ## 7-Zip Zstandard 版(完整安装,包含 GUI 和 Explorer 集成) ### 安装(通过安装程序) 1. 从这里下载安装程序 [7-Zip ZS Releases](https://github.com/mcmilk/7-Zip-zstd/releases) 2. 像安装默认的 [7-Zip] 一样安装它 3. 你可以通过此命令检查 [7-Zip] 是否可以处理 [Zstandard] 或其他 codec:`7z.exe i` 输出应该如下所示: ``` 7-Zip 26.01 ZS v1.5.7 (x64) : Copyright (c) 1999- Igor Pavlov, 2016- Tino Reichardt, 2022- Sergey G. Brester : 2026-05-30 Libs: 0 c:\Program Files\7-Zip-Zstandard\7z.dll 1 C:\Program Files\7-Zip-Zstandard\Codecs\Iso7z.64.dll Formats: ... 0 CK xz xz txz (.tar) FD 7 z X Z 00 0 Z z taz (.tar) 1F 9D 0 CK zstd zst zstd tzst (.tar) tzstd (.tar) 0 x F D 2 F B 5 2 5 . . 0 x F D 2 F B 5 2 8 00 0 C F 7z 7z 7 z BC AF ' 1C 0 F Cab cab M S C F 00 00 00 00 ... Codecs: 0 4ED 303011B BCJ2 0 EDF 3030103 BCJ 0 EDF 3030205 PPC 0 EDF 3030401 IA64 0 EDF 3030501 ARM 0 EDF 3030701 ARMT 0 EDF 3030805 SPARC 0 EDF 20302 Swap2 0 EDF 20304 Swap4 0 ED 40202 BZip2 0 ED 0 Copy 0 ED 40109 Deflate64 0 ED 40108 Deflate 0 EDF 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 4F71102 BROTLI 0 ED 4F71104 LZ4 0 ED 4F71106 LIZARD 0 ED 4F71105 LZ5 0 ED 4F71101 ZSTD 0 ED 21 FLZMA2 0 EDF 6F10701 7zAES 0 EDF 6F00181 AES256CBC Hashers: 0 32 202 BLAKE2sp 0 32 204 BLAKE3 0 4 1 CRC32 0 8 4 CRC64 0 16 205 MD2 0 16 206 MD4 0 16 207 MD5 0 20 201 SHA1 0 32 A SHA256 0 48 208 SHA384 0 64 209 SHA512 0 32 20A SHA3-256 0 48 20B SHA3-384 0 64 20C SHA3-512 0 4 20D XXH32 0 8 20E XXH64 ``` ### 我的杀毒软件 X.Y 或 Virustotal.com 说它是恶意软件/病毒 总而言之:*它不是恶意软件* - 但去追逐这些(卖假药的厂商)[https://en.wikipedia.org/wiki/Snake_oil] 不是我的工作。 具体来说:你可以自己验证,发布版本是由此 Microsoft 拥有的平台上的 GitHub Actions 实时生成的。如果真的有任何病毒,那它们也是由运行在 Microsoft 数据中心的机器生成的 😉 例如,对于发布的 `v25.01-v1.5.7-R4` 版本: - 它是带有 `v25.01-v1.5.7-R4` 标签的那个版本 - 点击 [调整 Blake3 MAX_SIMD_DEGREE](https://github.com/mcmilk/7-Zip-zstd/actions/runs/20877497651) - 滚动到 Artifacts 部分 - 所有的 windows 二进制文件都在这个 ZIP 文件中:`7-Zip ZS Release binaries.zip` - 检查 SHA256 哈希值是否与 release 的文件相同 我建立了一个误报问题的列表 [在 issue #45 中](https://github.com/mcmilk/7-Zip-zstd/issues/451#issuecomment-3733009809)。 请不要打开新的 issue。相反,请联系杀毒软件供应商并要求他们删除这个[误报](https://en.wikipedia.org/wiki/False_positives_and_false_negatives)。 ### 完整安装的用法与功能 - 在 [7-Zip] 容器格式内进行 [Brotli]、[Lizard]、[LZ4]、[LZ5] 和 [Zstandard] 的压缩与解压缩 - 压缩和解压缩 [Brotli] (`.br`)、[Lizard] (`.liz`)、[LZ4] (`.lz4`)、[LZ5] (`.lz5`) 和 [Zstandard] (`.zst`) 文件 - 处理使用 [Zstandard] 压缩的 ZIP 文件 - 包含 [lzip] 解压缩支持,补丁来自:https://download.savannah.gnu.org/releases/lzip/7zip/ - Explorer 上下文菜单:_"添加到 xy.7z"_ 将使用上一次“添加到压缩包”对话框中的所有参数(包括:方法、级别、字典、块大小、线程和参数输入框) - 可以处理使用 LZ4 或 Zstandard 压缩的 squashfs 文件 - 默认情况下不会保存多个历史记录设置,在[此处](https://sourceforge.net/p/sevenzip/discussion/45797/thread/dc2ac53d/?limit=25)查看有关此的一些信息,你可以通过 `工具->选项->设置` 恢复原始的 7-Zip 行为 - 可以计算以下哈希值:CRC32、CRC64、MD2、MD4、MD5、SHA1、SHA256、SHA384、SHA512、SHA3-256、SHA3-384、SHA3-512、XXH32、XXH64、BLAKE2sp、BLAKE3(小写或大写) ``` 7z a archiv.7z -m0=zstd -mx0 Zstandard Fastest Mode, without BCJ preprocessor 7z a archiv.7z -m0=zstd -mx1 Zstandard Fast mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=zstd -mx.. ... 7z a archiv.7z -m0=zstd -mx21 Zstandard 2nd Slowest Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=zstd -mx22 Zstandard Ultra Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=lz4 -mx0 LZ4 Fastest Mode, without BCJ preprocessor 7z a archiv.7z -m0=lz4 -mx1 LZ4 Fast mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=lz4 -mx.. ... 7z a archiv.7z -m0=lz4 -mx12 LZ4 Ultra Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=lz5 -mx0 LZ5 Version 1.5 Fastest Mode, without BCJ preprocessor 7z a archiv.7z -m0=lz5 -mx1 LZ5 Version 1.5 Fast mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=lz5 -mx.. ... 7z a archiv.7z -m0=lz5 -mx16 LZ5 Version 1.5 Ultra Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=flzma2 -mx1 Fast LZMA2 Fastest mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=flzma2 -mx.. ... 7z a archiv.7z -m0=flzma2 -mx9 Fast LZMA2 Ultra Mode, with BCJ preprocessor on executables 7z x -so test.tar.zst | 7z l -si -ttar -> show contents of zstd compressed tar archive test.tar.zst 7z x -so test.tar.lz | 7z l -si -ttar -> show contents of lzip compressed tar archive test.tar.lz ``` ![Explorer 集成](https://mcmilk.de/projects/7-Zip-zstd/Add-To-Archive.png "Add to Archive Dialog with ZSTD options") ![文件管理器](https://mcmilk.de/projects/7-Zip-zstd/Fileman.png "File Manager with the Listing of an Archive") ![方法](https://mcmilk.de/projects/7-Zip-zstd/Methods2.png "Methods") ![哈希](https://mcmilk.de/projects/7-Zip-zstd/Hashes.png "Hashes") ![设置](https://mcmilk.de/projects/7-Zip-zstd/Settings.png "Settings for storing the history within the registry.") ## 用于 Mainline 7-Zip 的 Zstandard codec 插件 ### 安装(通过插件) 1. 从这里下载 `Codecs.7z` 压缩包 [7-Zip ZS Releases](https://github.com/mcmilk/7-Zip-zstd/releases),该压缩包包含与 [7-Zip] Mainline 版本兼容的二进制文件 2. 创建一个名为 `Codecs` 的新目录,并根据你的 [7-Zip] 安装位置将 zstd-x32.dll 或 zstd-x64.dll 放入其中 - 通常,x32 版本应放置于:"C:\Program Files (x86)\7-Zip\Codecs" - x64 版本应放置于:"C:\Program Files\7-Zip\Codecs" 3. 你也可以直接替换 `C:\Program Files (x86)\7-Zip` 中的 `7z.dll` 4. 然后你可以通过以下命令检查 dll 是否安装正确:`7z.exe i` 输出应该如下所示: ``` 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 ``` ### 用法(codec 插件) - 在 7-Zip 容器格式内进行 [Brotli]、[Fast LZMA2]、[Lizard]、[LZ4]、[LZ5] 和 [Zstandard] 的压缩与解压缩 - 你只能创建 `.7z` 文件,像 `.lz4`、`.lz5` 和 `.zst` 这样的文件不受插件支持 - 当压缩二进制文件(*.exe、*.dll)时,如果仅使用插件 dll,你必须通过 `-m0=bcj` 显式禁用 bcj2 过滤器 - 因此用法应该如下所示: ``` 7z a archiv.7z -m0=bcj -m1=zstd -mx1 Fast mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=bcj -m1=zstd -mx.. ... 7z a archiv.7z -m0=bcj -m1=zstd -mx21 2nd Slowest Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=bcj -m1=zstd -mx22 Ultra Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=bcj -m1=brotli -mxN ... 7z a archiv.7z -m0=bcj -m1=lizard -mxN ... 7z a archiv.7z -m0=bcj -m1=lz4 -mxN ... 7z a archiv.7z -m0=bcj -m1=lz5 -mxN ... 7z a archiv.7z -m0=bcj -m1=flzma2 -mxN ... ``` ## 用于 Total Commander 的 Codec 插件 - 下载 [TotalCmd.7z] - 通过用新文件替换 `tc7z.dll` 和 `tc7z64.dll` 来安装它 - 你可以在[此处](https://github.com/mcmilk/7-Zip-zstd/issues/467)获取详细信息 - 7-Zip `.7z` 格式的 [Brotli]、[Lizard]、[LZ4]、[LZ5] 和 [Zstandard] 的压缩和解压缩现在应该可以在 Total Commander 中开箱即用 :-) ## 用于 Far Manager 的 Codec 插件 - 将 `C:\Program Files\7-Zip-Zstandard\7z.dll` 中的 `7z.dll` 文件复制到 `C:\Program Files\Far Manager\Plugins\ArcLite\7z.dll` - 然后重启 Far manager - 在下次启动时,你就可以支持 7-Zip Zstandard 压缩包了 ;-) ## 基准测试 对于基准测试,我从 2026 年开始使用 Linux 二进制文件 `7zz`。 测试系统是一台空闲的 Dell PowerEdge R6615,具有以下硬件: - **CPU:** AMD EPYC 9354P (32 核心) - **内存:** 128 GB DDR5 (8x 16GB) - **操作系统:** AlmaLinux 9 (x86_64) 对于测试,使用了 [Silesia 压缩语料库](https://sun.aei.polsl.pl/~sdeor/index.php?page=silesia)。 压缩测试通过为每种方法运行单线程压缩来执行:`7z a test.7z -mmt=1 -m0=MethodX`。 解压测试在全新创建的压缩包上使用:`7z t test.7z`。 内存使用情况和执行时间是通过[修改过的 GNU time](https://github.com/mcmilk/7-Zip-Benchmarking/blob/master/linux/time-1.9.tr.diff)测量的。 基准测试本身通过 [shell 脚本](https://github.com/mcmilk/7-Zip-Benchmarking/blob/master/linux/runtests.sh)执行。 结果: ![压缩速度与压缩率](https://mcmilk.de/projects/7-Zip-zstd/dl/2026-01-03/01-ratio-vs-compr.png "Compression Speed vs Ratio") ![解压速度与压缩率](https://mcmilk.de/projects/7-Zip-zstd/dl/2026-01-03/02-ratio-vs-decompr.png "Decompression Speed vs Ratio") ![解压速度](https://mcmilk.de/projects/7-Zip-zstd/dl/2026-01-03/03-compr-per-level.png "Compression Speed per Level") ![解压速度](https://mcmilk.de/projects/7-Zip-zstd/dl/2026-01-03/04-decompr-per-level.png "Decompression Speed per Level") ![压缩时内存](https://mcmilk.de/projects/7-Zip-zstd/dl/2026-01-03/05-mem-compr.png "Memory usage at Compression") ![解压时内存](https://mcmilk.de/projects/7-Zip-zstd/dl/2026-01-03/06-mem-decompr.png "Memory usage at Decompression") ## 主题 - FileManager 工具栏图标主题:Glyfz 2016,作者 AlexGal [主页](https://www.deviantart.com/alexgal23) - 文件类型图标主题:Windows 10,作者 masamunecyrus [主页](https://www.deviantart.com/masamunecyrus) - 由 Mr44 创建的额外文件类型图标 [主页](https://github.com/Mr4Mike4) - 通过 ozone10 的 darkmodelib (v0.64.0) 提供深色模式支持 [主页](https://github.com/ozone10) ## 许可证与重新分发 - 与 Mainline [7-Zip] 相同,这意味着大部分代码均为 GNU LGPL v2.1-or-later - 阅读 [COPYING](COPYING) 了解更多详情 ## 链接 - [7-Zip 主页](https://www.7-zip.org/) - [7-Zip Zstandard 主页](https://mcmilk.de/projects/7-Zip-zstd/) - [请求包含](https://sourceforge.net/p/sevenzip/discussion/45797/thread/a7e4f3f3/)到 Mainline 7-Zip 中: - 结果,目前不会被包含 :( - [p7zip 主页](https://github.com/jinfeihan57/p7zip) - 适用于带有 LZ4 和 Zstandard 的 Linux 和 MacOS ## 版本信息 - 7-Zip ZS 版本 26.01 - Release 1 - [Brotli] 版本 1.2.0 - [Fast LZMA2] 版本 1.0.1 - [Lizard] 版本 2.1 - [LZ4] 版本 1.10.0 - [LZ5] 版本 1.5 - [Zstandard] 版本 1.5.7 /TR 2026-06-13 ## 备注 我们计划再次使用代码签名安装程序,https://github.com/mcmilk/7-Zip-zstd/issues/473
标签:7-Zip, Brotli, Zstandard, 客户端加密, 归档工具, 文件压缩, 无损压缩算法