首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby:创建一个Gzipped的焦油归档

Ruby:创建一个Gzipped的焦油归档
EN

Stack Overflow用户
提问于 2009-07-11 06:27:55
回答 3查看 13.3K关注 0票数 20

用Ruby创建gzipped tar归档的最好方法是什么?

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

似乎已经提出了一些准解决方案,并且许多信息似乎已经过时。

例如,谷歌对"ruby tar“的最高搜索结果给出了this thread,这是在2007年启动的,显然没有解析。

另一个排名较高的搜索结果是this one describing ruby tar。它可以追溯到2002年,而且公告并没有完全激发人们的信心。

我也看到过各种关于向unix tar和类似产品支付费用的报道。

所以,我知道有很多方法可以做到这一点,但我真的希望从尝试过几种替代方案的人那里找到最可靠和最方便的推荐方案。

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2009-07-11 13:55:03

如果你在unix下运行,你可以把文件写到磁盘上,然后运行一个系统调用去tar/gzip它们。

`tar -czf #{file_name}.tar.gz #{file_name}`
票数 11
EN

Stack Overflow用户

发布于 2009-07-11 06:43:31

这个Ruby Minitar项目是在2009年更新的,看起来它可以解决你的问题

票数 6
EN

Stack Overflow用户

发布于 2018-03-16 12:17:37

下面的示例说明如何组合Ruby Zlib中的GzipWriter类和RubyGems中的TarWriter类,以创建gzipped压缩的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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1113087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档