在Rails中压缩目录

我如何在rails上的ruby中压缩目录? 我试过rubyzip没有成功。 我不需要单独压缩dir的内容只是压缩dir本身。

您将不得不遍历目录中的项目以在压缩文件中添加条目。

def compress(path) gem 'rubyzip' require 'zip/zip' require 'zip/zipfilesystem' path.sub!(%r[/$],'') archive = File.join(path,File.basename(path))+'.zip' FileUtils.rm archive, :force=>true Zip::ZipFile.open(archive, 'w') do |zipfile| Dir["#{path}/**/**"].reject{|f|f==archive}.each do |file| zipfile.add(file.sub(path+'/',''),file) end end end 

http://grosser.it/2009/02/04/compressing-a-folder-to-a-zip-archive-with-ruby/

使用命令执行此操作的另一种方法

 Dir["*"].each do |file| if File.directory?(file) #TODO add OS specific, # 7z or tar . `zip -r "#{file}.zip" "#{file}"` end end 

http://ruby-indah-elegan.blogspot.com/2008/12/zipping-folders-in-folder-ruby-script.html

更新

感谢Mahmoud Khaled的编辑/更新

对于新版本,使用Zip::File.open而不是Zip::ZipFile.open

您可以使用tar tar -cvf your_dir.tar your_dir/创建目录存档

然后使用 – 压缩导轨中的焦油 –

 def gzip_my_dir_tar(your_dir_tar_file) content = File.read(your_dir_tar_file) ActiveSupport::Gzip.compress(content) end 

它已在Rails 3中得到解答:如何根据请求生成压缩文件