me.txt
テキストという名前のファイルを作成しました。
This is dummy text
次に、TARを作成し、名前をme.txt.tar
。
しばらくして、まったく同じ名前とテキスト(デフォルトで私がしたことtouch me.txt
)でファイルを再生成して、.tarというTARファイルにしましたme2.txt.tar
。
技術的に、両方のtarは同じファイルと同じファイルの内容を持っていますが、ファイルはme.txt
異なる時間に作成されました。しかし、diffツールは次のように言います。
Binary files me.txt.tar and me2.txt.tar differ
これはファイル生成タイムスタンプの違いによって発生します。しかし、ファイルの内容だけを比較してタイムスタンプは無視すればよいので、違いに対する出力はないと予想されます。
ファイルの内容に興味があるので、TARやJARなどのファイル内のファイルのタイムスタンプを無視するのに役立ちます。
- 私が使用するコマンドは次のとおりです。
$ echo "This is dummy text" > me.txt $ tar -cvf me.txt.tar me.txt (After 1 minute or so..) $ touch me.txt $ tar -cvf me2.txt.tar me.txt $ diff me.txt.tar me2.txt.tar
- 出力:
Binary files me.txt.tar and me2.txt.tar differ
diffoscope
同様の出力を提供します。
答え1
アーカイブ自体のメタデータではなく、アーカイブ内のファイルの内容を比較したいので、内容を比較する必要があります。すべてのアーカイブのファイルが同じ順序で保存されていると仮定すると、
diff -u <(tar xOf me.txt.tar) <(tar xOf me2.txt.tar)
JARの場合は、次のものを使用できますunzip
。
diff -u <(unzip -c file1.jar) <(unzip -c file2.jar)