压缩归档文件,可快速访问单个文件。

3
我需要为我正在编写的新应用程序设计一个文件格式。 这个文件将需要包含许多其他文本文件,大多数是文本,但也可以是其他格式。 自然而然地,压缩的tar文件似乎很合适。 问题在于,我想要能够从文件中非常快速地检索一些数据,但从tar.gz文件中获取一个特定的文件似乎需要比应该更长的时间。我假设这是因为即使我只想要一个文件,它也必须解压整个文件。当我只有一个常规的未压缩tar文件时,我可以非常快速地获取那些数据。 假设我需要快速获取的文件名为data.dat。
例如,命令...
tar -x data.dat -zf myfile.tar.gz

... 是我不希望花费太长时间的部分。

MP3文件有id3数据,JPEG文件有exif数据,可以快速读取而无需打开整个文件。 我希望我的data.dat文件也能以类似的方式可用。

我想,我可以将其保留为未压缩状态,并与myfile.tar.gz中的其他文件分开。 然后,我可以创建一个data.dat和myfile.tar.gz的tar文件,希望由于它位于外部tar文件的头部并且未经压缩,因此可以更快地检索到该数据。

这样做听起来对吗?将压缩的tar文件放在另一个tar文件中?

基本上,我的需求是具有对一个特定文件快速访问的存档类型文件。 Tar可以很好地实现这一点,但我也希望该数据被压缩,一旦这样做,我就无法快速访问该数据了。 是否有其他存档格式可以给我需要的快速访问?

顺便说一下,这个应用程序将用Python编写。如果解决方案要求使用自己的二进制格式重新发明轮子,我熟悉C,并且编写Python模块没有问题。理想情况下,我只会使用tar、dd、cat、gzip等。

谢谢, ~Eric


我需要为我正在编写的新应用程序想出一个文件格式。如果这个格式不正确,其他所有都无关紧要了。祝你好运。 - msw
2
@msw,根据问题的背景(包括“是否有其他存档格式可以给我所需的快速访问”),很明显他不想发明一种新的压缩格式。 - Matthew Flaschen
1个回答

3

ZIP 似乎适合您的情况。文件被单独压缩,这意味着您可以在不通过全部内容流式传输的情况下访问它们。

在 Python 中,您可以使用 zipfile


谢谢你的建议。我明天会试一下,看看它在性能方面表现如何(快速访问),并看看zip与gzipped tar相比如何。 - eric.frederich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接