使用密码解压和 7z,无临时文件

使用密码解压和 7z,无临时文件

时不时地,我会收到一个 6 GB .zip 数据档案的下载链接,我想要:

  • 下载

  • 解压缩

  • 使用 7z 重新压缩,并输入密码

我想避免在每个步骤中使用临时文件,因为它会在我的 SSD 上使用约 18 GB 的写入操作,而最后只需要 6 GB。

在 Linux 上,它可能wget ... | unzip ... | 7z ...与管道有关。

如何在 Windows 上执行此操作?


注意:此问题链接到让 7-Zip 将档案直接解压到目录但不是重复的,因为链接的问题仅涵盖问题的“7z temp”部分,而我正在谈论下载+解压缩+7z 链。
此外,我正在寻找命令行解决方案而不是像让 7-Zip 将档案直接解压到目录

答案1

以下命令行解决方案可避免使用临时文件进行解压缩/压缩,并且适用于 Windows。它使用-so-sistdout/stdin 标志7z

7z e -so -r Takeout20201231_0941.zip *.mbox | 7z a -si -pSECRET -mhe=on -mx=2 Takeout20201231_0941.7z

请注意,我的原始档案中只有 1 个匹配*.mbox,因此只有一个文件需要解压缩/压缩。

对于多个文件来说,情况会更加复杂,正如@DanielB 在其评论中所指出的那样:

此操作不适合管道或类似的东西。您实际上无法通过管道传输多个文件,因为它不仅仅是数据。它们还有名称。


最后,将原始 ZIP 的下载直接传输到7z e不可能的,因为 ZIP 文件无法进行流解压缩:它们通常有一个索引在文件末尾,因此需要整个文件在开始减压之前,请先

为此,我们可以X:\使用 OSFMount 快速创建 RAM 磁盘:

osfmount.com -a -t vm -m X: -s 8G -o format:ntfs

相关内容