如何使用ruby拆分/重新加入zip文件

时间:2013-05-29 10:55:54

标签: ruby ruby-on-rails-3 rubygems rubyzip

我是Ruby的新手。有没有办法拆分大型zip文件&然后再将分割文件加入一个大型zip文件?

我可以看到一个带有split sample的链接,但是在运行时会看到错误(拆分对象错误) split sample link

任何人都可以帮我解决SPlit /加入ruby中的zip文件吗?

1 个答案:

答案 0 :(得分:1)

最新的rubyzip版本0.9.9中没有Zip::ZipFile.split。它仅存在于源代码的最新主分支中。如果您正在寻找一种方法将大文件拆分成小部分并稍后加入它们,或者更确切地说,您不依赖于中间拆分结果,则可以尝试使用Unix / Linux的split。例如。您想使用USB驱动器复制小文件并将它们加入另一台计算机。

# each file will contain 1048576 bytes
# the file will be splitted into xaa, xab, xac...
# You can add optional prefix to the end of the command
split -b 1048576 large_input_file.zip

# join them some where after
cat x* >large_input_file.zip

rubyzip gem提供了一种从大型zip文件创建多部分zip文件的方法。您可以使用p7zipWinRAR解压缩拆分的zip文件部分。但是,unzip不支持多部分zip文件很奇怪。 unzip的手册说明了

  

除了与zip结合使用外,尚不支持多部分档案。 (所有部分必须按顺序连接在一起,然后zip -F'' (for zip 2.x) or zip -FF''(对于zip 3.x)必须在连接的存档上执行才能fix'' it. Also, zip 3.0 and later can combine multi-part (split) archives into a combined single-file archive using zip -s- inarchive - O outarchive''。有关详细信息,请参阅zip 3手册页。)这将在下一个主要版本中得到纠正。

如果需要,可以克隆最新的主分支并使用该lib来完成工作。

$ git clone https://github.com/aussiegeek/rubyzip.git
$ vim split.rb

然后在您的ruby文件“split.rb”中:

$:.unshift './rubyzip/lib'

require 'zip/zip'

part_zip_count = Zip::ZipFile.split("large_zip_file.zip", 102400, false)
puts "Zip file splitted in #{part_zip_count} parts"

您可以结帐docs for split