這個用於創建多段存檔的 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
一行所示)。怎麼了?
這是一個已知問題:它無法重新組合按
zip
內部緩衝區大小 (16KiB) 倍數拆分的檔案。現在您需要拆分為不同的大小……在您的情況下,20971519(20MiB 減去一個字節)應該可以正常工作。(我嘗試手動重新組合拆分存檔,但
zip -FF
查找存檔組件並無法修復組合文件。)事實證明,File Roller支持拆分存檔(不遵循分段存檔格式),因此如果您的收件人都使用它(或者可能是其他使用libarchive的存檔器),您可以使用
split
或類似工具拆分存檔。為此,您需要使用split
的預設後綴、aa
等生成文件ab
:split -b20m archive.zip split.z
然後 File Roller 將讓您打開
split.zaa
,並透明地提取整個存檔(只要所有片段都明顯存在)。