Ruby:创建一个gzip Tar存档

Ruby:创建一个gzip Tar存档,ruby,gzip,tar,Ruby,Gzip,Tar,使用Ruby创建Gzip tar归档的最佳方法是什么 我有一个Rails应用程序,需要创建一个压缩的归档文件来响应用户的操作。理想情况下,可以直接写入压缩文件,而无需首先生成中间临时文件。该库似乎支持直接gzip压缩。如何将其与tar输出相结合 许多准解决方案似乎已经提出,许多信息似乎已经过时 例如,谷歌搜索“ruby tar”的最热门搜索结果是2007年开始的,显然没有解决方案 另一个高级搜索结果是。它可以追溯到2002年,而这一宣布并没有真正激发人们的信心 我还看到了各种关于向unix ta

使用Ruby创建Gzip tar归档的最佳方法是什么

我有一个Rails应用程序,需要创建一个压缩的归档文件来响应用户的操作。理想情况下,可以直接写入压缩文件,而无需首先生成中间临时文件。该库似乎支持直接gzip压缩。如何将其与tar输出相结合

许多准解决方案似乎已经提出,许多信息似乎已经过时

例如,谷歌搜索“ruby tar”的最热门搜索结果是2007年开始的,显然没有解决方案

另一个高级搜索结果是。它可以追溯到2002年,而这一宣布并没有真正激发人们的信心

我还看到了各种关于向unix tar等进行炮轰的报道

所以,我知道有很多方法可以做到这一点,但我真的在寻找一个推荐给最可靠和最方便的人谁尝试了一些替代方案


有什么想法吗?

这个项目是在2009年更新的,似乎可以解决您的问题

如果您在unix下运行,您可以将文件写入磁盘,然后运行一个系统调用以tar/gzip对其进行访问

`tar -czf #{file_name}.tar.gz #{file_name}`

下面的示例演示如何组合Ruby Zlib中的GzipWriter类和RubyGems中的TarWriter类来创建gzip tar存档:

require 'rubygems/package'

filenames_and_contents = {
  "filename" => "content",
}

File.open("archive.tar.gz", "wb") do |file|
  Zlib::GzipWriter.wrap(file) do |gzip|
    Gem::Package::TarWriter.new(gzip) do |tar|
      filenames_and_contents.each_pair do |filename, content|
        tar.add_file_simple(filename, 0644, content.length) do |io|
          io.write(content)
        end
      end
    end
  end
end

我喜欢这个-很简单。即使它没有检查您的系统上是否安装了“tar”,但如果他们有ruby,这是一个合理的假设:)不要忘记它周围的倒勾“`”。所以我不想在前面加空格,让它们可见。这和我的问题很相似:有人找到答案吗?我还在玩这个,但这看起来是个好主意。Ruby从搜索
创建gzip tar
的第一页登陆到这里。请考虑非红宝石用法的泛化问题。Minitar似乎不允许从流中写入焦距,只能从文件中写入。不过,它可以输出到流。