用于创建多段存档的“zip”命令有什么问题?

用于创建多段存档的“zip”命令有什么问题?

看着问题,我很好奇是否zip可以在文件管理器上下文菜单中使用命令来创建多个 20MB zip 文件(gmail 消息接受的级别)。该问题的答案表明rar可以7z轻松创建多个文件,但我想知道zip文件是否可以访问。

像所提出的那样的命令这里应该管用。在终端和 Thunar 自定义操作中,我都使用此命令看到了相同的结果:

zip my_archive.zip -r /path/to -s 20m

Thunar 的版本是

zip my_archive.zip -r %f -s 20m

但生成的存档(my_archive.z01、my_archive.z02、my_archive.z03...、my_archive.zip)无法打开。

也许这是预期的,正如我所见这里这些生成的文件必须在“解压缩”之前使用以下命令“解开”

 zip -s 0 my_archive.zip --out unsplit.zip

(我不得不说,我没想到需要这样做,因为通常其他多文件存档在提取之前不需要重新加入,甚至存档分割也给出hjsplit了可以直接提取的多个存档卷但那是另一回事了。)

只是该unsplit.zip文件在提取时也会出错。

$ unzip unsplit.zip
Archive:  unsplit.zip
  inflating: home/cip/Desktop/R/Interviu/20170918.3gpp  
  error:  invalid compressed data to inflate

存档无法提取,但可以打开(在存档管理器内探索),并且它具有奇怪的文件夹内文件夹结构(反映了最初创建它的路径;如inflating上面的行所示)。

怎么了?

答案1

这是一个已知问题in zip:它无法重新组合按内部缓冲区大小(16KiB)的倍数分割的存档。现在您需要分割不同的大小...在您的情况下,20971519(20MiB 减去一个字节)应该可以正常工作。

(我尝试手动重新组合拆分存档,但zip -FF查找存档组件并无法修复组合文件。)

事实证明文件滚筒支持分割存档(不遵循分段存档格式),因此如果您的收件人都使用它(或者可能其他存档器使用自由档案库),您可以使用split或类似的工具拆分您的存档。为此,您需要使用 的split默认后缀aa等生成文件ab

split -b20m archive.zip split.z

然后 File Roller 会让您打开split.zaa并透明地提取整个档案(只要所有片段都明显存在)。

相关内容