これらのtarファイルの作成を制御していますか?
その場合、最善の方法は、MD5チェックサムを作成し、アーカイブ自体のファイルに保存することです。次に、2つのファイルを比較する場合は、このチェックサムファイルを抽出して比較するだけです。
tarファイルを1つだけ抽出する余裕がある場合は、オプションを使用して--diff
tar
、他のtarファイルの内容との違いを探すことができます。
ファイル名とそのサイズを比較するだけで問題がない場合は、もう1つの大雑把なトリックが必要です。
これは、他のファイルが同じであることを保証するものではないことを忘れないでください。
を実行しtar tvf
て各ファイルの内容を一覧表示し、出力を2つの異なるファイルに保存します。次に、ファイル名とサイズの列以外のすべてを切り取ります。できれば2つのファイルも並べ替えてください。次に、2つのリスト間でファイル差分を実行します。
この最後のスキームは実際にはチェックサムを行わないことを覚えておいてください。
tarと出力のサンプル(この例では、すべてのファイルのサイズはゼロです)。
$ tar tvfj pack1.tar.bz2
drwxr-xr-x user/group 0 2009-06-23 10:29:51 dir1/
-rw-r--r-- user/group 0 2009-06-23 10:29:50 dir1/file1
-rw-r--r-- user/group 0 2009-06-23 10:29:51 dir1/file2
drwxr-xr-x user/group 0 2009-06-23 10:29:59 dir2/
-rw-r--r-- user/group 0 2009-06-23 10:29:57 dir2/file1
-rw-r--r-- user/group 0 2009-06-23 10:29:59 dir2/file3
drwxr-xr-x user/group 0 2009-06-23 10:29:45 dir3/
ソートされた名前/サイズリストを生成するコマンド
$ tar tvfj pack1.tar.bz2 | awk '{printf "%10s %s\n",$3,$6}' | sort -k 2
0 dir1/
0 dir1/file1
0 dir1/file2
0 dir2/
0 dir2/file1
0 dir2/file3
0 dir3/
そのようなソートされたリストを2つ取り、それらを比較することができます。
うまくいく場合は、日付と時刻の列を使用することもできます。