看着这问题,我很好奇是否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
并透明地提取整个档案(只要所有片段都明显存在)。