5 个版本 (3 个重大更改)

0.10.1 2020 年 12 月 22 日
0.10.0 2020 年 12 月 19 日
0.9.0 2020 年 3 月 3 日
0.8.0 2020 年 2 月 29 日
0.7.1 2019 年 7 月 17 日

#588 in 文件系统

1,123 星 & 28 关注者

MIT 许可证

105KB
2K SLoC

Rust 2K SLoC // 0.0% comments · Rust 包仓库 JavaScript 374 SLoC // 0.0% comments · Rust 包仓库

压缩工具

Windows 10 文件系统压缩的友好用户界面

现代轻量级压缩算法以每核心每秒千兆字节的速度运行,将它们应用于文件系统以更好地利用存储和 IO 实际上是一件轻而易举的事情。

半意识到这一点,Windows 10 带来了一个重新设计的压缩系统,虽然速度快且有效,但仅通过命令行工具暴露给用户 —— compact.exe

压缩工具就是为了填补这个空白,提供了一个简单易用的图形界面工具。

安装 v0.10.1 下载

下载可从 Github 发布 页面下的 资产 部分获得,或者您可以使用以下直接链接

建议大多数用户使用 64 位版本。

如果您尝试运行时收到 "Windows 保护的您的 PC",这仅仅是 SmartScreen 对二进制文件尚未签名感到不满。如果您认为事情是合理的,请点击 "更多信息" 和 "仍要运行"。

请注意,这是测试版软件,不提供任何保修。

功能

实时进度更新

压缩工具的目录分析在运行时会更新。您也可以体验到在压缩每个文件时磁盘空间使用计数器逐渐减少的满足感。

暂停、继续、停止

所有操作都可以在任何时候安全地暂停和中断。压缩工具将完成它正在做的事情并停止,或者从上次停止的地方重新开始。

压缩估算

压缩器在将大文件传递给Windows进行压缩之前,会进行统计压缩性检查。如果遇到无法压缩的大文件,可以瞬间跳过,而不是占用磁盘几分钟却没有任何好处。

机器学习

使用先进的基于条件的AI逻辑,压缩器可以跳过之前被检测为无法压缩的文件,这使得在之前压缩过的文件夹中再次运行压缩器变得更快。

(是的,这是一个if语句和一个微不足道的哈希数据库,闭嘴)

可扩展性和快速

使用来自Mozilla的现代编译型系统编程语言Rust编写,压缩器可以轻松处理包含数百万个文件的文件夹。

注意事项

测试软件

虽然它已经被成千上万人成功使用,但压缩器应该谨慎使用。它旨在压缩可替换的软件,而不是珍贵的文件。

请备份。报告错误。请友好。请记住

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

这是大声的法律文本,所以你知道我是认真的。

数据损坏

已经有一份报告称,在打开SQLite数据库文件时发生了数据损坏。作者无法重现此问题,但在0.10版本中添加了文件锁定,这应该可以防止它们被修改。

权限

压缩器目前没有使用UAC提升其权限的机制来处理受保护的文件。如果您正在使用受限帐户,可能需要以提升权限运行程序。

请小心压缩。系统文件应该自动跳过,Windows文件夹应该包含在默认排除列表中(如果您想压缩Windows,请查看其CompactOS功能),但您几乎肯定不希望在您的整个C:\驱动器上盲目运行此程序。

可修改的文件

压缩器是为那些几乎不改变文件的系统设计的——任何修改都会导致整个文件被解压缩。事实上,只需以写入模式打开一个文件就会挂起,直到文件被解压缩,即使没有进行任何更改。

对于应用程序文件夹来说,这通常不是什么大问题,但对于数据库、日志、虚拟机镜像以及各种其他希望主要存在于其他地方的东西来说,这并不是很好。

如果某个游戏使用大型文件并在更新时进行原地二进制补丁,可能值得将其添加到排除列表中。

与其他操作系统的兼容性

压缩器仅在Windows 10上受支持——Windows的早期版本将无法访问压缩文件,尽管文件系统其余部分应保持完全可访问。

如果他们使用的NTFS驱动程序不支持,Linux和其他操作系统将遇到类似的问题。截至本文撰写时,NTFS-3G有一个第三方插件支持此功能。

在FreeBSD下,此功能可在sysutils/fusefs-ntfs-compression下使用,而较小平台的用户可能需要像野蛮人一样手动安装它。

压缩结果

这是默认设置下的压缩结果的一个未经挑选的样本

程序 大小 压缩后 比率
AI War 2 2.43 GiB 1.42 GiB 0.59x
Big Pharma 1.1 GiB 711 MiB 0.37x
Crusader Kings 2 2.19 GiB 1.29 GiB 0.59x
Deus Ex MD 41.31 GiB 28.06 GiB 0.68x
Infinifactory 1.71 GiB 742 MiB 0.58x
Satisfactory 15.82 GiB 10.45 GiB 0.66倍
太空工程师 16.28 GiB 9.4 GiB 0.58x
星际争霸 7.76 GiB 5.21 GiB 0.67倍
深海迷航BZ 10.62 GiB 6.40 GiB 0.60倍
漫长的黑暗 7.42 GiB 5.64 GiB 0.76倍
Microsoft SDKs 5.91 GiB 2.45 GiB 0.41倍
Visual Studio 2017 9.63 GiB 4.77 GiB 0.50倍
Windows Kits 5.38 GiB 2.03 GiB 0.38倍

更全面的成果数据库由CompactGUI项目维护:https://docs.google.com/spreadsheets/d/14CVXd6PTIYE9XlNpRsxJUGaoUzhC5titIC1rzQHI4yI/edit#gid=0.

未来

我未来想要用Compactor做很多事情。这包括但不限于:

  • 使分析可选。它并非基本必需。
  • 针对SSD的多线程分析/压缩。
  • GUI重做。我越长不做这个,Rust在这方面应该越擅长 :P
  • 安装程序。为什么这涉及到如此多的XML啊,我的天。
  • 签名二进制文件/安装程序。这似乎需要金钱。
  • 定时任务或后台服务以实现一次性设置并忘记操作。

可以在论坛中讨论功能请求,或者你可以创建一个问题

替代方案

  • compact.exe是Windows 10附带的命令行工具。如果你熟悉命令行和批处理文件,可能你会更喜欢这个。怪人。
  • CompactGUI是一个流行的Visual Basic程序,它调用compact.exe来完成其工作,而不是像Compactor一样直接使用Windows API。它有一些...性能问题,尤其是对大型文件夹。
  • 自1995年以来,NTFS已经支持LZNT1压缩,在属性高级属性下的复选框中隐藏。它不如灵活,并且因其性能不佳和碎片化问题而声名狼藉,但更易于设置并忘记。

你是否知道其他任何的?请告诉我。

技术细节

Compactor主要使用Rust编写。前端基本上是一个嵌入式网站,由web-view crate驱动。它不依赖于任何远程资源或打开任何端口。

在底层,它使用DeviceIoControlFSCTL_SET_EXTERNAL_BACKINGFSCTL_DELETE_EXTERNAL_BACKING,以及WofApi(Windows Overlay Filesystem)的一些函数。这当然部分归功于winapi crate。最终我希望完成一些绑定并贡献回去。

Compresstimation使用简单的线性采样算法,通过LZ4级别1作为压缩性检查,并跨整个文件平均。代码在GitHub上可用

不可压缩文件数据库实际上是一个只读的SipHash128路径哈希列表。如果您想同时压缩多个驱动器,则可以在多个实例之间安全共享。它位于 %APPDATA%\Local\Freaky\Compactor

作者

Compactor 由来自英格兰东北部的古怪、孤僻的家伙 Thomas Hurst 编写,他是一位大约有25年编程经验的程序员。

他主要使用 FreeBSD,专注于 Unix 平台,但使用 Windows 是因为他玩游戏而不是社交。

您可以在 @Freaky@hachyderm.io 上找到他,或者通过 libera.chatFreaky 在 IRC 上打扰他。

依赖项

~9–20MB
~278K SLoC