Ruby:从tarball读取单个文件

时间:2014-11-13 18:33:49

标签: ruby tar gz

我想从.tar.gz tarball中读取单个文件的内容。该文件位于tarball的根目录中。有一些简单的方法来做到这一点?我在考虑像data = Tarball.open('myfile.tar.gz').entry('/myentry').content这样的事情吗?

2 个答案:

答案 0 :(得分:0)

问题是.tar.gz不是结构化文件;它只是一个.tar文件,它通过一个对tar一无所知的压缩算法运行。因此,从中获取数据的唯一方法是首先解压缩整个事物。

作为一种空间效率较低但更具时间效率的替代方案,您可能需要考虑扩展tar文件,单独重新压缩每个文件,然后将它们重新编译为(未压缩的)存档。然后使用archive-tar gem轻松提取单个文件,您只需添加解压缩步骤即可恢复原始文件。

答案 1 :(得分:0)

这是一个非常古老的问题,没有被接受的答案,所以我想知道它是否仍然存在,但是,当遇到类似问题时,有人可能会来找它。如果您知道要查找的文件中的典型模式,则可以使用

tar xf yourarchive.tar.gz --wildcards 'yourpattern'

,它只会提取选定的文件,然后您可以随意使用它。 假设每个 tarball 都应该有一个“app.conf”文件,然后你在“yourpattern”中使用它。

我希望这有帮助吗?