6 个版本
0.3.2 | 2024年7月4日 |
---|---|
0.3.1 | 2024年4月15日 |
0.2.0 | 2023年6月23日 |
0.1.1 | 2023年5月1日 |
0.1.0 | 2023年4月6日 |
#727 in 压缩
84 每月下载量
用于 2 个crate (通过 苹果酱)
59KB
1.5K SLoC
苹果酱
苹果酱是一个用 Rust 编写的命令行界面 (CLI) 程序,用于压缩、解压和打印有关 macOS 上 HFS+/APFS 透明压缩的压缩文件的信息。它基于 afsctool,并提供了几个关键改进,包括更好的性能、改进的多线程(即使是单个文件)和降低的内存使用。苹果酱支持 HFS+/APFS 所使用的所有三种压缩算法:LZFSE、LZVN 和 ZLIB。
安装
通过 Homebrew 安装
要使用 Homebrew 安装苹果酱,请运行以下命令
brew install Dr-Emann/homebrew-tap/applesauce
通过 shell 脚本安装预构建的二进制文件
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Dr-Emann/applesauce/releases/latest/download/applesauce-cli-installer.sh | sh
使用 Cargo 手动构建
详细信息
要使用 Cargo 安装苹果酱,请按照以下步骤操作
- 使用 rust-lang.org 提供的说明安装 Rust 和 Cargo。
- 将此存储库克隆到您的本地计算机上。
- 在项目目录中,运行
cargo build --release
来构建程序。 - 构建的二进制文件可以在
target/release
目录中找到。
用法
要使用苹果酱,请运行以下命令
applesauce [compress|decompress|info] file/directory
选项如下
compress
:使用三种压缩算法之一(LZFSE、LZVN 或 ZLIB)压缩指定的文件/目录。decompress
:解压指定的文件/目录。info
:打印有关指定压缩文件/目录的信息,包括压缩比和使用的压缩算法。
例如,要使用 ZLIB 压缩算法压缩名为 example.txt
的文件,请运行
applesauce compress -c ZLIB example.txt
功能
苹果酱具有以下关键功能
- 支持三种压缩算法:LZFSE、LZVN 和 ZLIB。
- 可以打印有关压缩文件的信息,包括压缩比和使用的压缩算法。
- 支持 macOS 上 HFS+/APFS 的透明压缩。
压缩算法
苹果酱支持以下三种压缩算法
- LZFSE:这是一种由苹果公司开发的压缩算法,用于iOS和macOS。它是一种快速压缩算法,在压缩比和速度之间提供了良好的平衡。
- LZVN:这也是苹果公司开发的一种压缩算法,用于iOS和macOS。它针对64位处理器进行了优化,并提供了高压缩比。
- ZLIB:这是一种广泛应用于许多软件包的压缩算法。它的速度比LZFSE和LZVN慢,但可以提供更高的压缩比(特别是使用
-l 9
时,但并不总是如此:这取决于正在压缩的数据类型)。
Applesauce默认使用LZFSE压缩。根据压缩数据的类型和所需的压缩比与速度之间的平衡,这些算法中的任何一个可能比其他算法更适合。
与Afsctool相比的改进
Applesauce基于afsctool,但提供了几个关键改进,包括
提高性能
afcstool可以并行压缩多个文件,但Applesauce在块级别进行并行处理,因此即使单个文件也可以并行压缩。Applesauce通常比afcstool快几倍,尤其是对于大量的小文件。
减少内存使用
afcstool在压缩文件之前会将整个文件加载到内存中(尽管它尝试使用mmap来处理大文件)。Applesauce只需将当前正在压缩的块(s)保留在内存中。
更好的用户界面
当Applesauce工作时,会输出一个漂亮的进度条,提供比afcstool的稀疏输出更友好的用户体验。
更好地处理大量小文件
afcstool会压缩压缩后适合xattr的文件,即使这样做实际上会增加比保持文件未压缩更多的开销。如果Applesauce压缩文件会导致文件更大,则不会压缩文件。
更好的错误处理
afcstool会就地覆盖文件。尽管它会尝试在发生错误时恢复文件,但如果在压缩文件时被强制终止,文件可能处于无效状态。
Applesauce将文件压缩/解压缩到临时文件,然后仅在操作完成后将临时文件原子性地重命名为原始文件:文件永远不会处于无效状态,即使程序被强行终止。
这不是备份的替代品:请勿在无法承受丢失的文件上使用Applesauce。
许可证
Applesauce遵循GNU通用公共许可证版本3(GPLv3)。
贡献
欢迎对Applesauce做出贡献!如果您想贡献代码,请打开GitHub存储库的拉取请求。如果您发现错误或提出功能请求,请在该存储库上打开一个问题。
依赖关系
~0.4–0.8MB
~13K SLoC