Prova anche pkgdiff per visualizzare le differenze tra i pacchetti (rileva i file aggiunti/rimossi/rinominati e il contenuto modificato, esiste con zero codice se invariato):
pkgdiff PKG-0.tgz PKG-1.tgz
Stai controllando la creazione di questi file tar?
In tal caso, il trucco migliore sarebbe creare un checksum MD5 e memorizzarlo in un file all'interno dell'archivio stesso. Quindi, quando vuoi confrontare due file, estrai semplicemente questi file di checksum e confrontali.
Se puoi permetterti di estrarre un solo file tar , puoi usare --diff
opzione di tar
per cercare differenze con il contenuto di altri file tar.
Un altro trucco rozzo se ti va bene solo un confronto tra i nomi dei file e le loro dimensioni .
Ricorda, questo non garantisce che gli altri file siano gli stessi!
eseguire un tar tvf
per elencare il contenuto di ciascun file e memorizzare gli output in due file diversi. quindi, taglia tutto tranne il nome del file e le colonne delle dimensioni. Preferibilmente ordina anche i due file. Poi, basta fare un file diff tra le due liste.
Ricorda solo che quest'ultimo schema non esegue realmente il checksum.
Tar e output di esempio (tutti i file hanno dimensione zero in questo esempio).
$ 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/
Comando per generare un elenco ordinato di nomi/dimensioni
$ 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/
Puoi prendere due di questi elenchi ordinati e differenziarli.
Puoi anche utilizzare le colonne di data e ora se per te funziona.
EDIT:vedi il commento di @StéphaneGourichon
Mi rendo conto che questa è una risposta tardiva, ma mi sono imbattuto nel thread mentre cercavo di ottenere la stessa cosa. La soluzione che ho implementato restituisce il tar a stdout e lo reindirizza a qualsiasi hash tu scelga:
tar -xOzf archive.tar.gz | sort | sha1sum
Si noti che l'ordine degli argomenti è importante; in particolare O
quali segnali utilizzare stdout.