能否对由7zip压缩的非常大的文件进行随机访问(大量查找)?
原始文件非常巨大(999GB的XML),我无法以未解压的格式存储它(没有足够的可用空间)。因此,如果7z格式允许在不解压所选块之前的所有块的情况下访问中间块,则可以构建块开头和相应原始文件偏移量的索引。
我的7z存档的标头是:
37 7A BC AF 27 1C 00 02 28 99 F1 9D 4A 46 D7 EA // 7z archive version 2;crc; n.hfr offset
00 00 00 00 44 00 00 00 00 00 00 00 F4 56 CF 92 // n.hdr offset; n.hdr size=44. crc
00 1E 1B 48 A6 5B 0A 5A 5D DF 57 D8 58 1E E1 5F
71 BB C0 2D BD BF 5A 7C A2 B1 C7 AA B8 D0 F5 26
FD 09 33 6C 05 1E DF 71 C6 C5 BD C0 04 3A B6 29
更新:7z压缩软件称此文件仅有一个数据块,使用LZMA算法进行压缩。测试中解压速度为600MB/s(对应未压缩数据),仅使用了一个CPU核心。
xz
变体,vasi 的pixz
,它可以将文件打包成多个块,并添加流索引以进行快速查找(通常用于在tar.xz
中进行快速查找):https://github.com/vasi/pixz。"*Pixz 生成一系列较小的块,使得对原始数据进行随机访问成为可能。这对于大型 tarballs 特别有用。*" - osgx