Skip to content

适用于高性能系统的多进程解压缩软件(A multiprocess decompression software for high-performance system)

License

Notifications You must be signed in to change notification settings

hxz393/BrutalityExtractor

Repository files navigation

软件介绍

BrutalityExtractor 是一款专为高性能系统打造的多进程解压软件。针对现代多核处理器和高速固态硬盘优化,批量解压速度比常见解压软件提升 5 倍以上,彻底利用计算机硬件性能。

主要特性:

  • 批量解压缩:自动扫描解压目录下所有压缩文件,即使文件后缀名不正确也能正确识别。
  • 支持多格式:支持常见压缩文件格式 7zziprartargzxzbz2 ,并且能正确处理分卷压缩包。
  • 支持多进程:根据处理器线程数,自定义解压进程数量,将解压速度翻倍。
  • 支持密码列表:可以设置常用密码列表,自动匹配加密压缩包。
  • 附加功能:消除目录冗余、删除空目录、删除垃圾文件等常用功能。

软件截图:

最新版本截图

命令行截图:

命令行截图

系统要求

使用前请仔细阅读下面软件的使用限制。

操作系统

软件开发编译环境为 Win10 x64 专业工作站版,版本号 22H2。只要是 Win10 x64 以上操作系统的用户可以直接打开使用。

更低版本的 Win 7Win XP 因为使用 Python 3.10 版本的原因,不支持运行。

其他操作系统理论上可以手动编译成可执行文件,编译流程参见下面自行打包小节。

处理器

当处理器配置低于 2 核 4 线程时,软件将运行在单进程模式,不会有任何速度加成。

处理器配置高于 2 核 4 线程时,出于稳定性考虑,软件能设置进程数最高不超过处理器线程数的一半。

当然你可以选择多开软件运行,来实际上无视这一限制。因此可能造成系统死机、崩溃、丢失数据等副作用,请自行评估影响。

内存

内存限制比较宽松,这是因为无法评估运行时实际所需内存。解压所需内存由文件压缩格式、压缩算法、是否固实压缩等因素决定。当内存被占满时,可能会发生解压失败、程序运行报错、系统异常报错等情况。

建议对单个或分卷大于 4GB 的压缩文件手动解压。因为这类文件解压可能会占用大量内存,并且本软件目前对大体积压缩包没有加速效果。

采用多线程加速解压大体积压缩包的方案,正在评估效果。如果效果好,将会加入到后续更新中。

硬盘

如果使用传统机械硬盘,则无论处理器或内存配置有多高,使用本软件或其他软件,都不能让解压速度超过硬盘读写速度。

现在使用 PCI-E 3.0 x4 以上接口的固态硬盘,还被其他解压软件限制在机械硬盘的速度,这是一种极大性能浪费。本软件没有发明新解压算法来提高速度,但通过多进程运行的方式,让性能瓶颈转移到处理器上。

一个通用硬盘规格和进程数对应关系表如下:

硬盘规格 进程数 说明
HDD SATA 3.0 18TB 2 高性能 HDD,读写速度超 200MB/s,勉强可开 2 个进程
SSD SATA 3.0 4TB 4 高性能 SATA 接口 SSD,读写速度最高 500MB/s,可开 4 个进程
SSD PCI-E 1TB 8~64 常见 m.2 接口 SSD,通常有 1GB/s 以上读写速度,性能差异极大。进程数根据实际情况调整

下载地址

软件下载方式:

  • 方式一:到 release 页面下载最新版的可执行文件,文件名为 BrutalityExtractor.exeBrutalityExtractorCli.exe ,下载完毕可直接打开使用。
  • 方式二:百度网盘分流下载。
  • 方式三:直连下载。

下载的压缩包,需要解压缩后运行可执行文件,否则配置将不会保存。

自行打包

手动编译需要事先安装好 Python 3.10 以上版本,和 pyinstaller 软件包。其他依赖报缺啥装啥,统一装最新版。

编译步骤如下:

  1. 在安装有 Git 的主机上克隆项目。命令如下:

    git clone https://github.com/hxz393/BrutalityExtractor.git

    或者在 项目主页 点击绿色<> Code 按钮选择 Download ZIP 选项,下载 源码压缩包。下载完毕后用压缩软件或命令工具解压缩。

  2. 使用命令切换到项目路径下面。

    例如在 Windows 系统下面,打开 CMD 命令提示符,输入:

    cd B:\git\BrutalityExtractor
    B:

    在 Linux 系统下面,通用使用 cd 命令切换到项目路径下面:

    cd /root/BrutalityExtractor

    如果使用 PyCharm 作为 IDE,可以直接在自带的终端栏目输入下面打包命令。

  3. 使用 pyinstaller 命令编译打包成可执行文件:

    pyinstaller -F -w -i BrutalityExtractor.ico --add-binary 'bin/7z.exe;bin' --add-binary 'bin/7z.dll;bin' --collect-all="tksvg" BrutalityExtractor.py

    打包命令行模式脚本:

    pyinstaller -F -w -i BrutalityExtractor.ico --add-binary 'bin/7z.exe;bin' --add-binary 'bin/7z.dll;bin' --console BrutalityExtractorCli.py

    如果过程没有报错,可执行文件会生成到 dist 目录下面。

开源许可

本软件采用 GPL-3.0 license 源授权许可协议,若违背开源社区的基本准则,将开源项目据为私有用于商业用途,属于侵权行为,本人将追究法律责任。

用到的第三方开源库:

软件使用

第一次运行时,由于缺少配置文件软件界面为英文。可以展开 Appearance Settings,在 Language 后面选择简体中文来切换语言。选择以后需要重启软件来生效。

基本配置

其中解压目录或目标目录为必填项。

  • 解压目录

    输入或选择压缩包存放的目录,例如B:\ArchiveB:/Archive/ 均可正常识别。

    目录内最好别放无关的文件,否则可能会有意外解压行为,例如将游戏资源打包文件 resources.pak 给解压,造成游戏无法运行。

  • 目标目录

    输入解压后文件存放目录,解压后的目录结构会和解压目录中的保持一致。例如 B:/Archive/ 下面的 xd1/test.zip 文件内容会被解压到 B:/New/ 下面 xd1/test/ 内。

    将目标目录设定到不同磁盘,可以稍微提升解压速度。

  • 解压密码

    输入单个密码或者密码列表文本文件位置。如果压缩包没有密码,随便输入什么密码都可以解压。如果有密码,会挨个尝试密码列表中的密码,直到密码正确或全部失败。

    软件本身没有对密码尝试做多进程处理。如果需要暴力破解压缩包密码,可将密码列表分为多份,运行多个软件实例来跑。将日志等级设为 Debug,可在日志中看到尝试结果。此功能请勿用于非法用途。

    为了能正确读取特殊密码,密码文本文件请使用 UTF-8 编码格式储存。

高级配置

高级配置中的设置需要根据实际情况来调整。

  • 进程数量

    设置同时运行解压的进程数。解压进程数不会超过要解压文件的总数量。

  • 忽略警告

    关闭解压运行前的系统资源检测。

  • 释放空间

    在压缩包解压完成后,删除压缩包。无论开启与否,如果解压失败都不会删除原始压缩包。

  • 强制模式

    跳过文件类型识别,尝试对目录下所有文件进行解压。

  • 日志相关

    控制写入本地日志文件的配置,修改设置后需要重启软件来生效。

外观配置

一些外观主题设置。

  • 关闭提示

    关闭鼠标悬停在文字上时显示的提示信息。

  • 迷你模式

    使用小图标模式,让布局更紧凑。需要重启生效。

  • 修改主题

    选择自己喜好的软件主题配色风格。

  • 修改语言

    修改软件显示语言。目前仅有中英两种,欢迎提交其他语种的靠谱翻译。语言字典位于 modules/configs/lang_dict.py

  • 窗口透明

    配置窗口透明度。

附加功能

附加功能独立于解压功能存在,提供一些常用文件操作功能。

  • 功能开关

    开启功能开关后,将在目标目录下执行下面所配置的功能,解压操作暂时关闭。

  • 消除冗余

    消除冗余目录结构。只有在目录下有且仅有一个同名目录情况下会工作,一次只消除一层冗余结构。例如:将 D:/test/test/ 下面的文件提取到 D:/test/,之后删除空的 D:/test/test 目录。

  • 清理目录

    删除指定目录下所有扫描到空目录。有时空目录有其特殊用途,请谨慎清理。

  • 删除垃圾

    指定的文件或目录名,直接删除目标目录下找到的匹配目标。和解压密码一样,支持导入名称列表来批量删除。

命令行模式

在命令行中运行时,需要下载命令行版本可执行文件 BrutalityExtractorCli.exe

命令行模式仅支持有限的功能,但速度更快。命令格式如下:

BrutalityExtractorCli.exe [-h] -d D [-p P] [-c C] [-v]

其中中括号 [] 内的参数为可选。可以使用 BrutalityExtractorCli.exe -h 命令来查看自带帮助。

参数说明如下:

  • -d:指定压缩文件存放目录,解压操作也在同一目录进行,并且解压成功后会删除源压缩文件。
  • -c:设置同时解压的进程数量。没有最高限制,请小心输入。
  • -p:指定解压密码或密码列表。如果密码带空格,需要用双引号 "" 将密码括起来。

下面是一个使用示例,指定解压目录为 B:\Archive,密码列表为 B:/pass.txt,运行进程数 16:

BrutalityExtractorCli.exe -c 16 -d B:\Archive -p B:/pass.txt

常见问题

软件运行遇见错误时,先查看下面总结的一些常见问题和解决方案。再查看所有 Issue 中是否有同样问题。如果都没有帮助,可以提交新 Issue ,并附上相关日志。

窗口最大化后不正常

全屏模式下折叠展开不会自动适应窗口高度。

原因:由于使用的框架原因,不支持全屏模式。

解决:欢迎提供解决方案。

增加批量压缩功能

不加入。常见压缩软件在压缩时资源利用率非常好,请尝试 7zPeaZip 等开源免费软件。

增加自动改名功能

不加入。请尝试专业的软件,例如:everythingPowerToys 等优秀免费软件。

更新日志

为避免更新日志过长,只保留最近更新日志。

版本 1.2.1(2023.07.21)

改进内容:

  1. 消除冗余目录功能,可作用于所有子目录;
  2. 改进解压结果判断逻辑。

修复内容:

  1. 调低程序运行优先级;
  2. 修改更新检测方法;
  3. 修复其他小问题。

版本 1.2.0(2023.06.28)

改进内容:

  1. 添加强制模式开关,解除文件类型限制;
  2. 更新 7z 核心程序到 23.1 版本。

修复内容:

  1. 修复窗口退出时,子进程在系统残留。

版本 1.1.0(2023.06.20)

改进内容:

  1. 优化代码结构,提升运行速度;
  2. 合并删除垃圾文件和文件夹为一个功能;
  3. 优化日志记录功能;
  4. 添加默认配置项目。

修复内容:

  1. 修复 pathlib 库造成的性能问题,替换为 os 库;
  2. 修复一个特定情形下误删文件的 BUG。

版本 1.0.2(2023.06.15)

改进内容:

  1. 修改日志写入格式为 UTF-8;
  2. 当解压文件总数小于进程数时,设置进程数为文件数。

修复内容:

  1. 修复删除文件计数错误;
  2. 修复文件大小显示的小数位被忽略;
  3. 修复部分遗漏文字。

版本 1.0.1(2023.06.12)

修复内容:

  1. 添加读取文本时,指定使用 UTF-8 编码。

版本 1.0.0(2023.06.11)

发布第一个版本。