我需要为我正在编写的新应用程序提出一种文件格式。 该文件将需要保存一堆其他文本文件,这些文件主要是文本,但也可以是其他格式。 自然地,压缩的 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 并且用 C 编写 Python 模块没有问题。理想情况下我只使用 tar、dd、cat、gzip 等.
谢谢, ~埃里克
最佳答案
ZIP 似乎适合您的情况。文件是单独压缩的,这意味着您无需流式传输之前的所有内容即可访问它们。
在 Python 中,您可以使用 zipfile
.
https://stackoverflow.com/questions/3002196/
相关文章:
apache - 在 ReverseProxy 上下文中切换 SSLVerifyClient
ruby-on-rails - rails : Expected helper to define
git - 如何使用 ssh 将 repo 克隆到远程服务器
c# - 以特定时间间隔从视频(mpg、wmv 等)中捕获帧
asp.net-mvc - ASP.Net MVC 2.0 : unescaping URL que
modeling - Data Vault 模型什么时候是数据仓库的正确模型?
sql - 对于每个唯一的 A 列,什么 SQL 查询返回具有最新日期和时间(B 列和 C 列)的行