是否可以对由 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 …Run Code Online (Sandbox Code Playgroud) 我的 7z 存档中有一个 100 GB 的文本文件。我可以通过按 1 MB 块读取它来找到其中的模式'hello'(7z 将数据输出到 stdout):
Popen("7z e -so archive.7z big100gb_file.txt", stdout=PIPE)
while True:
block = proc.stdout.read(1024*1024) # 1 MB block
i += 1
...
if b'hello' in block: # omitting other details for search pattern split in consecutive blocks...
print('pattern found in block %i' % i)
...
Run Code Online (Sandbox Code Playgroud)
现在我们经过 5 分钟的搜索发现该模式'hello'位于第 23456 个块中,那么将来如何在 7z 文件中快速访问该块或行呢?
(如果可能,不要将此数据保存在另一个文件/索引中)
那么7z,如何在文件中间查找呢?
注意:我已经阅读了Indexing / random access to 7zip .7z archives和random search …