4

スクリプトファイルを使用して作成したオールインワンのzipファイルが、Webインターフェイスを介して手動でクリックして作成する必要があるいくつかのzipファイルのコンテンツと同じ出力を生成することを確認するためにいくつかのテストを行っています。したがって、zipのフォルダ構造は異なります。

もちろん、手動でそれらを抽出し、強力な眼球技術を使用してスキャンしたり、それを行うためのスクリプトを作成したりすることもできますが、時間をかけて上司から会社の時間強盗で告発される前に、私は尋ねていますこれを行うためのより良い方法があれば?

ちなみに私はperlLAMPスタックを使用しています。ありがとう。

4

4 に答える 4

3

perl のArchive::ZIPまたは Python のzipfileを使用して、アーカイブ内のファイルのファイル名、サイズ、および CRC チェックサムを抽出できます。ファイル名でソートされた結果を含むファイルを作成します (パスは無視します)。

小さい ZIP の場合は、スクリプトの結果をマージします ( cat list1 list2 list3 | sort)。

diffこれで、 を使用して結果を比較できます。

于 2009-02-12T10:38:06.713 に答える
1

BeyondCompareを心からお勧めします。あなたが本当に低賃金になっていない限り、それはあなたの(ボス)ドルにとって最大の価値です。

[編集]のフォルダ構造をスキャンしたようです。申し訳ありません。BeyondCompareは、同じフォルダ構造のフォルダ内のすべてのファイルを比較できます。異なるフォルダ内のファイルで一致するものを検索するためのインテリジェンスはありません(私は信じています) 。

よろしく、
リーベン

于 2009-02-12T09:23:19.030 に答える
1

Carra の回答からヒントを得て... A.zip が単一の大きなアーカイブであり、B.zip が Web 経由で生成されたアーカイブである場合、次のアルゴリズムを使用します。

  1. A.zip からすべてのファイルを抽出し、コンテンツが抽出されたフォルダーに存在するファイルのチェックサムを (などを使用して) 再帰的に (wrt フォルダーで) 計算し、この情報を並べ替えてから (パイプを介してcksum)ファイルに保存します (たとえば、 A.txt)md5sumsort

  2. B.zip についても同じことを行い、B.txt を生成します。

  3. A.txt と B.txt を比較すると、まったく同じであるはずです。

また

両方の (zip) アーカイブのファイル/ディレクトリ リストをunzip -l取得し、ユーザーが生成した zip ファイルの階層をフラット化し、スクリプトで生成された zip ファイルの内容と比較するために使用しますdiff。階層を平坦化するということは、diff.

于 2009-02-12T09:26:13.330 に答える
1

ファイルの crc チェックサムを作成します。

元のファイルと解凍されたファイルのチェックサムが同じであれば、ファイルが同じであることを確認できます。また、テキスト以外のデータでも機能します。

チェックサムは、「SFV Checker」などの外部プログラムを使用して、またはプログラムで簡単に作成できます (.net/java には、これを行うためのライブラリが含まれています)。

于 2009-02-12T09:29:27.550 に答える