私のマシンは動作しておりDebian 6.0.7
、 を持っていますZip 3.0 (July 5th 2008), by Info-ZIP
。.zip ファイルを解凍しようとすると、10 回中 2 ~ 3 回はすべてが解凍されませんでした。2 ~ 3 個のファイルが欠落していました。
最初はファイル サイズと、私が知らなかったいくつかの制限が原因だと思いましたが、150 MB の小さなファイルでも同じことが起きていることに気付きました。次に、bash スクリプト ファイルを使用して解凍したためかもしれないと思い、手動でファイルを解凍してテストしましたが、やはり問題はありませんでした。
最後に、今日、140MB の .zip ファイルで確認しました。ファイルを手動で、また .sh スクリプトを使用して 10 回解凍し、ls -h -R > ../test_n.txt
解凍するたびに実行してフォルダーの記録を保持しました。20 個のファイルすべてを比較した後、20 回のうち 7 回で .zip ファイルから 2 ~ 8 個のファイルが欠落していることがわかりました。
なぜこのようなことが起こるのか、誰か分かるでしょうか?
答え1
何が起こっているのか全く分かりませんが、問題をデバッグするために試すことができるいくつかの方法があります:
その
zip
バージョンに-l
フラグや、ZIP ファイルを解凍せずにそのファイル内に含まれるファイルを確認するための何か他の機能がある場合は、それが役立つ可能性があります。zip -l file.zip
これにより、zip ファイルの内容が表示されるので、解凍後に同じ数のファイルが存在することが予想されます。これをスクリプトのテストとして使用して、常にすべてのファイルが解凍されていることを確認できます。
zip ファイルは本当に正しいですか? 別のソースからファイルを取得している場合は、ファイルのチェックサムを取得し、解凍しようとしている zip ファイルと比較します。異なる場合は、ファイルの破損がこの問題の原因である可能性があります。
コマンドの戻りコードは何ですか
zip
? を使用してファイルを解凍した後zip
、echo $?
戻りコードを確認するためにコマンドを発行します。戻りコードが 0 と異なる場合、プログラムは、何らかの理由でプログラムの実行が全体的に成功しなかったことを伝えています。この値は異なる場合があることに注意してください。ただし、私の知る限り、成功には 0 を使用し、エラー/警告には他の数値を使用するのは、Unix/Linux ユーティリティでは標準的です。
これが役に立つことを願っています:)