27 个稳定版本 (4 个主要版本)
新版本 4.0.0 | 2024 年 8 月 24 日 |
---|---|
3.5.1 | 2024 年 8 月 9 日 |
3.4.4 | 2024 年 7 月 31 日 |
3.4.0 | 2024 年 1 月 20 日 |
0.6.1 | 2022 年 3 月 15 日 |
在 压缩 中排名第 152
每月下载量 582
用于 2 crates
37KB
675 行
PartialZip
PartialZip 是用 Rust 重写的 https://github.com/planetbeing/partial-zip。
它允许您从在线 zip 存档中下载单个文件。
欢迎您添加更多 zip 类型、解压缩方法和文件源。
使用方法
作为命令行工具
cargo install partialzip
partialzip list http://yoururl/file.ipsw
partialzip download http://yoururl/file.ipsw kernelcache.release.iphone10 kernelcache.release.iphone10
或从 git 源
cargo build --release
# listing files
./target/release/partialzip list http://yoururl/file.ipsw
# download file
./target/release/partialzip download http://yoururl/file.ipsw filename
# for example for kernelcache:
./target/release/partialzip download http://yoururl/file.ipsw kernelcache.release.iphone10 kernelcache.release.iphone10
Docker
# build the container
docker build -t marcograss/partialzip .
# run it
# list files
docker run --rm marcograss/partialzip list http://yoururl/file.ipsw
# download piping to stdout and save it on the host
docker run --rm marcograss/partialzip pipe http://yoururl/file.ipsw kernelcache.release.iphone10 > kernelcache.release.iphone10
用途
有时 zip 存档很大,您只需要几个文件,例如 ipsw 的内核缓存。
./target/release/partialzip download "http://XXXXX/iPhone10,6_11.1.2_15B202_Restore.ipsw" kernelcache.release.iphone10b kernelcache.release.iphone10b
如您所见,节省的时间和流量是显著的。
PartialZip 只下载您的文件所需的块,使您可以下载几个 Mb 而不是原始存档的几个 Gb。
先决条件
能够从 http 服务器部分下载 zip 的一个先决条件是服务器支持 Range Header。这样,您可以请求存档的特定部分。
并非所有服务器都支持此功能。您可以使用 -r
标志检查是否支持此功能
cargo run -- -r list http://yoururl/yourfile.zip
如何作为库使用
如果您想将 partialzip 作为库使用并希望减小二进制文件大小,您可以在 Cargo.toml
中的 partialzip 依赖项中选择标志 default-features = false
。这将不会构建 partialzip 的命令行界面,该界面不是作为库使用所必需的,并且将避免包含一些不必要的依赖项,从而节省空间。
rustls
您可以通过启用 rustls
功能来避免使用 openssl 并避免依赖关系
示例
-
Google Project Zero 博文:假冒 Carrier.app 的奇异故事 - 使用 partialzip 效率地下载尽可能多的 iOS ipsws 中 DCP 固件版本。
-
matteyeux 的 taco - 使用 partialzip 作为仓库实现此工具,用于下载和解密 iOS 固件镜像。
依赖项
~14–26MB
~416K SLoC