Versuchen Sie auch pkgdiff, um Unterschiede zwischen Paketen zu visualisieren (erkennt hinzugefügte/entfernte/umbenannte Dateien und geänderten Inhalt, existiert mit Null-Code, wenn unverändert):
pkgdiff PKG-0.tgz PKG-1.tgz
Kontrollieren Sie die Erstellung dieser Tar-Dateien?
Wenn ja, wäre der beste Trick, eine MD5-Prüfsumme zu erstellen und in einer Datei zu speichern im Archiv selbst. Wenn Sie dann zwei Dateien vergleichen möchten, extrahieren Sie einfach diese Prüfsummendateien und vergleichen sie.
Wenn Sie es sich leisten können, nur eine TAR-Datei zu extrahieren , können Sie den --diff
verwenden Option von tar
um nach Unterschieden zum Inhalt anderer tar-Dateien zu suchen.
Noch ein grober Trick wenn Sie nur mit einem Vergleich der Dateinamen und ihrer Größe einverstanden sind .
Denken Sie daran, dies garantiert nicht, dass die anderen Dateien gleich sind!
Führen Sie einen tar tvf
aus um den Inhalt jeder Datei aufzulisten und die Ausgaben in zwei verschiedenen Dateien zu speichern. Schneiden Sie dann alles außer den Dateinamen- und Größenspalten aus. Sortieren Sie die beiden Dateien vorzugsweise auch. Führen Sie dann einfach einen Dateivergleich zwischen den beiden Listen durch.
Denken Sie nur daran, dass dieses letzte Schema nicht wirklich eine Prüfsumme erstellt.
Beispiel für Tar und Ausgabe (in diesem Beispiel haben alle Dateien die Größe Null).
$ 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/
Befehl zum Generieren einer sortierten Namens-/Größenliste
$ 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/
Sie können zwei solcher sortierter Listen nehmen und sie vergleichen.
Sie können auch die Datums- und Zeitspalten verwenden, wenn das für Sie funktioniert.
EDIT:Siehe den Kommentar von @StéphaneGourichon
Mir ist klar, dass dies eine späte Antwort ist, aber ich bin auf den Thread gestoßen, als ich versuchte, dasselbe zu erreichen. Die Lösung, die ich implementiert habe, gibt das tar an stdout aus und leitet es an den von Ihnen gewählten Hash weiter:
tar -xOzf archive.tar.gz | sort | sha1sum
Beachten Sie, dass die Reihenfolge der Argumente wichtig ist; insbesondere O
was signalisiert, stdout zu verwenden.