zipファイルとzipファイルから抽出されたディレクトリを比較する最も簡単な方法は何ですか? zipファイルが同じであれば削除したいです。
はい。Archive.zip
ディレクトリに同じファイルが含まれていることを確認する必要がありますtravel_photos/
(つまり、そのディレクトリ内のすべてのファイルがArchive.zip
正しく抽出されたかどうかtravel_photos/
)。
限定。アーカイブの作成と抽出の実行方法を変更することはできません。このファイルは私に提供されており、後で確認する必要があります。つまり、内部のすべてのファイルのチェックサムを含むファイルを作成することはできませんArchive.zip
。
必要です。travel_photos/
大きなディレクトリを処理する必要があり、他の大きなファイルを作成するのに十分なスペースがない可能性があるため、別のzipアーカイブを作成したくありません。このため、下記の2~5番は良くありませんが、どれがうまくいくかを調べるために努力しました。
私が今まで試したこと。
- 比較
md5sum Archive.zip
して(cd travel_photos; zip -rqq - *) | md5sum
、 - 比較
(cd travel_photos; zip -rqq ../test.zip *); md5sum test.zip
してmd5sum Archive.zip
、 - 比較
unzip -p test.zip | md5sum
してunzip -p Archive.zip | md5sum
zcmp test.zip Archive.zip
(また一緒にzdiff
)unzip -vql test.zip | sort -k8 | md5sum
そしてunzip -vql Archive.zip | sort -k8 | md5sum
部分的な解決策。上記の最後の例を変更してフィールドのCmpr
合計を削除しSize
(2つのアーカイブのファイルがまったく同じであってもサイズは異なりますか?)、最初の2行から合計アーカイブサイズを削除すると、次のことがわかります。アーカイブも同じだ。
diff -W200 -y <(unzip -vql test.zip | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) <(unzip -vql Archive.zip | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) --suppress-common-lines
このソリューションの欠点は、作成してtest.zip
ディスクに保存する必要があることです。travel_photos/
ディレクトリとzipファイルを比較する方法はありますかArchive.zip
?次のようにzipコマンドの出力をパイプしようとしましたが、うまくいきませんでした。
diff -W200 -y <(unzip -vql Archive.zip | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) < ((cd travel_photos; zip -rqq - *) > unzip -vql | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) --suppress-common-lines
答え1
"folderdiff"(https://pypi.org/project/folderdiff/)はファイルをディスクに保存せず、フォルダの内容をZIPアーカイブの内容と比較します。
2つのZIPアーカイブコンテンツを比較することもできます。
「FolderDiff」は、Webアプリケーション(WordPressなど)を信頼できるソースと比較し、バックドアを含む可能性のある変更または追加されたファイルを見つけるために作成されました。
各ファイルに対してSHA256ハッシュが計算され、信頼できるソースと比較されます。 "folderdiff"には2つのパラメータが必要です。 1つ目は信頼できるソース、2つ目は信頼できるソースと比較する必要があるフォルダです。
次の例は、既存のWordPressインストールでバックドアを見つける方法を示しています。
$ folderdiff wordpress-6.0.3-de_AT.zip /var/www/ --prefix wordpress/
===================== Added ======================
+ webshell.php
==================== Modified ====================
* index.php
公開:私はフォルダdiffの著者です