我想从.tar.gz tarball中读取单个文件的内容。该文件位于tarball的根目录中。有一些简单的方法来做到这一点?我在考虑像data = Tarball.open('myfile.tar.gz').entry('/myentry').content
这样的事情吗?
答案 0 :(得分:0)
问题是.tar.gz
不是结构化文件;它只是一个.tar
文件,它通过一个对tar
一无所知的压缩算法运行。因此,从中获取数据的唯一方法是首先解压缩整个事物。
作为一种空间效率较低但更具时间效率的替代方案,您可能需要考虑扩展tar文件,单独重新压缩每个文件,然后将它们重新编译为(未压缩的)存档。然后使用archive-tar
gem轻松提取单个文件,您只需添加解压缩步骤即可恢复原始文件。
答案 1 :(得分:0)
这是一个非常古老的问题,没有被接受的答案,所以我想知道它是否仍然存在,但是,当遇到类似问题时,有人可能会来找它。如果您知道要查找的文件中的典型模式,则可以使用
tar xf yourarchive.tar.gz --wildcards 'yourpattern'
,它只会提取选定的文件,然后您可以随意使用它。 假设每个 tarball 都应该有一个“app.conf”文件,然后你在“yourpattern”中使用它。
我希望这有帮助吗?