You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大体积嵌套加密7z归档管道提取失败问题咨询

嵌套加密7z归档的管道提取问题

问题详情

我有一个200GB的密码保护7z归档OuterArchive.7z,内部包含另一个200GB的密码保护7z归档InnerArchive.7z,结构如下:

OuterArchive.7z (200GB)
    └── InnerArchive.7z (200GB)
        ├── SomeFile.ext (1GB)
        └── ...

由于存储空间不足,无法完整提取归档,尝试通过管道直接提取目标文件SomeFile.ext,执行命令:

7z x OuterArchive.7z -so InnerArchive.7z -ppass1 | 7z x -si -so -ppass2 SomeFile.ext

命令执行失败,报错:

ERROR: 
Can not open the file as archive

E_NOTIMPL

测试前半段命令可正常输出InnerArchive.7z的文件头,确认问题出在管道后半段。同时想了解,在仅16GB RAM的设备上,这种流式提取操作是否可行?


命令修正与原因分析

错误原因

后半段命令的问题在于两点:

  1. 参数顺序混乱:解密密码选项-ppass2应放在归档源标识-si之前,确保7z先获取解密密钥再读取归档数据;
  2. 未指定归档类型:从标准输入读取数据时,7z无法自动识别加密7z的格式,导致无法解析归档结构。

修正后的命令

调整参数顺序并添加-t7z强制指定归档类型,最终命令如下:

7z x OuterArchive.7z -so InnerArchive.7z -ppass1 | 7z x -ppass2 -si -t7z -so SomeFile.ext

如果不需要保留文件路径,仅提取文件内容到当前上下文,也可以用e命令替代x:

7z x OuterArchive.7z -so InnerArchive.7z -ppass1 | 7z e -ppass2 -si -t7z -so SomeFile.ext

16GB RAM设备的可行性分析

这种流式提取操作完全可行,理由如下:

  • 7z处理管道数据时采用流式解压逻辑,不会将200GB的完整归档加载到内存,仅会缓存必要的索引信息和解压临时块;
  • 目标文件仅1GB,解压过程中的内存占用通常维持在几GB以内,远低于16GB的内存上限,不会出现内存溢出问题。

内容的提问来源于stack exchange,提问作者behrad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:12:45