我有大约200,000个文本文件放在bz2文件中。我遇到的问题是,当我扫描bz2文件以提取我需要的数据时,它变得非常慢。它必须通过整个bz2文件来查看我正在寻找的单个文件。反正有加速吗?
另外,我考虑过可能在tar.bz2中组织文件,所以我可以让它知道在哪里看。无论如何要组织放入bz2的文件吗?
更多信息/编辑: 我需要查询每个文本文件的压缩文件。是否有更好的压缩方法支持如此大量的文件,并且是完全压缩的?
答案 0 :(得分:6)
你必须使用bzip2吗?读它documentation,很明显它不是为了支持随机访问而设计的。也许您应该使用更符合您要求的压缩格式。好的旧Zip格式支持随机访问,但当然可能会更糟糕。
答案 1 :(得分:0)
Bzip2以大块压缩(默认为900 KiB,我相信)。一种可以显着加快tar文件扫描速度的方法,但会降低压缩性能,就是单独压缩每个文件,然后将结果一起tar。这基本上是Zip格式文件(虽然使用zlib压缩而不是bzip2)。但是,您可以轻松获取tar索引,只需要解压缩您正在寻找的特定文件。
我不认为大多数tar
程序提供了以任何有意义的方式组织文件的能力,尽管你可以为你的特殊情况编写一个程序来执行此操作(我知道Python虽然我有tar编写库他们只使用过一次或两次)。但是,在找到您要查找的内容之前,您仍然需要解压缩大部分数据。