マルチセグメントアーカイブを生成するための「zip」コマンドにはどのような問題がありますか?

マルチセグメントアーカイブを生成するための「zip」コマンドにはどのような問題がありますか?

見ているこれzip質問、ファイルマネージャのコンテキストメニューのコマンドを使用して複数の20 MBの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 - 1バイト)が正しく動作します。

(分割されたアーカイブを手動で再構築しようとしましたが、zip -FFアーカイブコンポーネントを見つけても結合されたファイルは変更されませんでした。)

それは明らかですドキュメントローラー分割アーカイブがサポートされている(分割アーカイブ形式に従わない)、受信者がすべて使用する場合(または他のアーカイブが使用する場合)無料アーカイブsplitまたは同様のツールを使用してアーカイブを分割できます。これを行うには、デフォルトのsplitサフィックスなどを使用する必要がありますaa。 makefile ab:

split -b20m archive.zip split.z

その後、ファイルローラーを使用すると、split.zaaアーカイブ全体を透明に開いて抽出できます(すべてのフラグメントが目立っている限り)。

関連情報