GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So vergleichen Sie den Inhalt zweier Tarballs

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.


Linux
  1. So extrahieren Sie Tar-Dateien in ein bestimmtes oder anderes Verzeichnis in Linux

  2. So zeigen Sie den Inhalt komprimierter Dateien unter Linux an

  3. So archivieren Sie Dateien und Verzeichnisse unter Linux [Teil 1]

  4. So verbinden Sie zwei Textdateien unter Linux

  5. So durchsuchen Sie Dateien nach Inhalten

Wie man Textdateien unter Linux vergleicht und zusammenführt

Wie man Textdateien unter Linux vergleicht und zusammenführt (Teil 2)

Linux-tar-Befehl – ​​So komprimieren Sie Dateien unter Linux

So zeigen Sie zwei Dateien nebeneinander in Linux an

So vergleichen Sie zwei Dateien im Linux-Terminal

Wie tare ich Dateien mit einer sortierten Reihenfolge?