#macos #命令行 #zlib #透明 #压缩 #lzfse #苹果酱

app 苹果酱CLI

使用macos透明压缩进行文件压缩和解压缩的命令行界面

16个不稳定版本 (4个破坏性更新)

0.5.4 2024年7月4日
0.5.3 2024年4月16日
0.4.6 2024年4月10日
0.3.0 2023年6月23日
0.1.5 2023年3月6日

#277 in 压缩

Download history 1078/week @ 2024-04-09 272/week @ 2024-04-16 5/week @ 2024-05-21 2/week @ 2024-06-11 156/week @ 2024-07-02 32/week @ 2024-07-09

188 每月下载量

GPL-3.0-or-later

125KB
3K 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安装苹果酱,请按照以下步骤操作

  1. 按照rust-lang.org提供的说明安装Rust和Cargo。
  2. 将此仓库克隆到您的本地计算机上。
  3. 在项目目录中,运行cargo build --release以构建程序。
  4. 构建的二进制文件可以在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只会将当前正在压缩的块保留在内存中。

更好的用户界面

Applesauce在运行时会输出一个美观的进度条,提供比afsctool的稀疏输出更友好的用户体验。

处理大量小文件的压缩效果更好

afcstool会压缩压缩后适合放入xattr的文件,即使这样做实际上会增加更多开销,即使留下文件未压缩更合适。Applesauce不会压缩如果这样做会导致文件更大的文件。

更好的错误处理

afcstool会原地覆盖文件。尽管它在发生错误时试图恢复文件,但如果在压缩文件时被强制终止,文件可能会处于无效状态。

Applesauce将文件压缩/解压缩到临时文件,然后在操作完成后以原子方式将临时文件重命名为原始文件:文件永远不会处于无效状态,即使程序被强制终止。

这不能替代备份:请勿在无法承受丢失的文件上使用Applesauce。

许可证

Applesauce遵循GNU通用公共许可证版本3(GPLv3)。

贡献

欢迎对Applesauce做出贡献!如果您想贡献代码,请在GitHub仓库上打开一个pull request。如果您发现错误或有功能请求,请在仓库上打开一个issue。

依赖项

~14–25MB
~372K SLoC