用Ruby创建gzipped tar归档的最好方法是什么?
我有一个Rails应用程序,它需要创建一个压缩的归档来响应用户的操作。理想情况下,可以直接写入压缩文件,而无需首先生成中间临时文件。Ruby Zlib库似乎支持直接的gzip压缩。如何将其与tar输出结合使用?
似乎已经提出了一些准解决方案,并且许多信息似乎已经过时。
例如,谷歌对"ruby tar“的最高搜索结果给出了this thread,这是在2007年启动的,显然没有解析。
另一个排名较高的搜索结果是this one describing ruby tar。它可以追溯到2002年,而且公告并没有完全激发人们的信心。
我也看到过各种关于向unix tar和类似产品支付费用的报道。
所以,我知道有很多方法可以做到这一点,但我真的希望从尝试过几种替代方案的人那里找到最可靠和最方便的推荐方案。
有什么想法吗?
发布于 2009-07-11 13:55:03
如果你在unix下运行,你可以把文件写到磁盘上,然后运行一个系统调用去tar/gzip它们。
`tar -czf #{file_name}.tar.gz #{file_name}`
发布于 2009-07-11 06:43:31
这个Ruby Minitar项目是在2009年更新的,看起来它可以解决你的问题
发布于 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
https://stackoverflow.com/questions/1113087
复制相似问题