私のアプリケーションでは、毎日 100,000 個以上の PDF (それぞれ約 50kb) ファイルを圧縮する必要があるタスクを実行する必要があります。現在、私は 7-zip を使用し、7za.exe
(7-zip のコマンド ライン ツール) を呼び出して各ファイルを圧縮しています (ファイルは多くの異なるフォルダーにあります)。
このアプローチにはどのような制限があり、どのように解決できますか? 7zip
アーカイブのファイル サイズまたはファイル数の制限はありますか?
ファイル サイズの制限は 16 エクサバイト、つまり 16000000000 GB です。
ファイル数に厳密な制限はありませんが、ファイルのヘッダーを管理する方法には実質的な制限があります。正確な制限はパスの長さによって異なりますが、32 ビット システムでは約 100 万個のファイルに制限されます。
他の形式がより多くをサポートしているかどうかはわかりません。通常の zip の制限ははるかに小さいです。
http://en.wikipedia.org/wiki/7-Zip
7-Zip の顕著な制限の 1 つは、最大 16 エクサバイトのファイル サイズをサポートする一方で、実際の圧縮を実行するためのメモリ要件に加えて、ファイルにメモリを割り当てるオーバーヘッドが異常に高いことです。
ファイルごとに約 1 キロバイト (パス名が非常に長い場合はそれ以上) が必要であり、ファイル リストだけでも、実際の圧縮に必要なメモリよりも桁違いに大きくなる可能性があります。現実的には、メモリ要件が 2 GB のプロセス制限を超えるため、32 ビット システムでは 1 つのアーカイブに約 100 万を超えるファイルを圧縮できないことを意味します。
64 ビット システムでは、同じプロセス サイズの制限はありませんが、この制限を克服するには数ギガバイトの RAM が必要です。ただし、このようなシステムで作成されたアーカイブは、メモリが少ないマシンでは使用できません。