より高い圧縮率でzipファイルを圧縮する


10

zipコマンドを使用して圧縮された多数のzipファイルがあります。-9フラグを使用して再圧縮して、圧縮率を向上させます。手動で解凍してから圧縮せずにそれができるかどうか誰かが知っていますか?

PS。Windowsユーザーに提供されるため、zipファイルとして保存する必要があります(名前に空白が含まれているため)


再圧縮は、ファイルを解凍して再度圧縮することによってのみ可能です。アルゴリズムに依存します。また、bzip2またはさらに優れたxzを試すこともできます。

ヒント:これはXLSXまたはXLSM Excelファイルでも実行できます。これらは実際にはXMLやその他のものを含むZIPファイルだからです。
クリスティアンCiupitu 2018年

回答:


10

データを解凍しないと、圧縮率を向上させることはできません。圧縮する前にすべてのzipファイルを抽出する必要はありませんが、再圧縮する前に1つのzipファイル全体を解凍することをお勧めします。

zipファイル内のファイルを1つずつ再圧縮し、zipファイルに含まれる次のファイルに進む前にそれらを再度追加することができます。これには、N個のファイルを含むzipファイルの場合、zipファイルをN回書き換える必要があります。Nファイルを抽出して新しいzipファイルを一度に生成し、ですべてのファイルを圧縮する方がはるかに効率的です-9


1
私の目標は、解凍を回避することではなく、アーカイブ構造を同じに保つことです。ファイルのメタデータを変更しないでください。
Smartelf 2014

1
@Smartelf解凍を回避できるとは思いません。他の要件も可能です。データを変更する必要はありません。
terdon

2
@Smartelfはすでに述べたように、**再圧縮する必要があります。たとえばPythonプログラムとそのzipモジュールでこれを行う場合、同じファイルメタデータを割り当てることは問題になりません。unzip/ zip同じメタデータを保ち、おそらくより困難です。
Anthon、2014

6

まさにあなたが探しているものを実行するAdvanceCOMPと呼ばれるユーティリティがあります。ディスクへの中間抽出なしに、ZIPおよびGZファイル(およびその他のファイル)を再圧縮します。(私が使用しているメカニズムはデータを解凍して再圧縮することだと思いますが、ディスクにファイルを書き込んだりメタデータを再生成したりする必要はありません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.