2011.08.22
 

大規模ファイルにWinZipを使用する

Question

JAR ユーティリティーで確実に zip できるファイルのサイズに制限はあるのでしょうか。約 6 GB のサイズの大きなファイルを約 500 MB に圧縮しようとしています。次のコマンドを CLP で使用して圧縮しています。

CHGCURDIR DIR('/home/myfolder/')
STRQSH CMD('jar cfM myfile.zip myfile.txt')

このファイルの受信先は WinZip でファイルを unzip することになっています。WinZip で大規模ファイルを unzip しようとしたとき、「Error: Unable to extract file. (エラー: ファイルを解凍できません)」というエラーを受信しました。解凍したファイルのサイズが zip ファイルに記録された解凍サイズと一致していないのです。約 80,000 KB とサイズの小さめのファイルを作成したら、WinZip でファイルを正常に unzip できました。

ファイルを確実に unzip できるなら、FTP ステップを CL プログラムに追加できるのですが・・・

Answer

おそらく、使用している WinZip のバージョンをアップグレードする必要があるでしょうね。2010 年の初めまで、WinZip には 4 GB 制限がありました。zip ファイル・フォーマットに 64 ビット拡張機能がサポートされていなかったためです。このため、ファイル数は 65,535 個、解凍アーカイブ・サイズ合計は 4 GB でした。

「解凍ファイルのサイズが一致しない」エラーを受信する理由は、WinZip が 32 ビットのファイル・サイズ値しか認識していないためです。皮肉にも、圧縮が動作しているのは、それがファイル・サイズ値に依存しないプログレッシブ・プロセスであるためです。しかし WinZip には破損したアーカイブを使用しないようサニティ・チェック機能があり、その機能が問題を起こしているわけです。

最新の WinZip でサポートされている 64 ビット拡張機能によりすべてのアーカイブ容量制限がなくなり、ネイティブ・ファイル・システムでサポートされる任意のサイズのアーカイブを作成でき、圧縮プロセスの失敗する原因となるサニティ・チェックが不要になります。

ページトップ

ボタン