Coba juga pkgdiff untuk memvisualisasikan perbedaan antar paket (mendeteksi file yang ditambahkan/dihapus/diganti namanya dan konten yang diubah, ada dengan kode nol jika tidak diubah):
pkgdiff PKG-0.tgz PKG-1.tgz
Apakah Anda mengontrol pembuatan file tar ini?
Jika demikian, trik terbaik adalah membuat checksum MD5 dan menyimpannya dalam file dalam arsip itu sendiri. Kemudian, ketika Anda ingin membandingkan dua file, Anda tinggal mengekstrak file checksum ini dan membandingkannya.
Jika Anda mampu untuk mengekstrak hanya satu file tar , Anda dapat menggunakan --diff
pilihan tar
untuk mencari perbedaan dengan isi file tar lainnya.
Satu lagi trik kasar jika Anda baik-baik saja hanya dengan perbandingan nama file dan ukurannya .
Ingat, ini tidak menjamin bahwa file lainnya sama!
mengeksekusi tar tvf
untuk membuat daftar konten setiap file dan menyimpan hasilnya dalam dua file berbeda. kemudian, potong semuanya selain kolom nama file dan ukuran. Sebaiknya urutkan juga kedua file tersebut. Kemudian, lakukan perbedaan file di antara kedua daftar tersebut.
Ingatlah bahwa skema terakhir ini tidak benar-benar melakukan checksum.
Contoh tar dan output (semua file berukuran nol dalam contoh ini).
$ 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/
Perintah untuk membuat daftar nama/ukuran yang diurutkan
$ 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/
Anda dapat mengambil dua daftar yang diurutkan dan membedakannya.
Anda juga dapat menggunakan kolom tanggal dan waktu jika sesuai untuk Anda.
EDIT:Lihat komentar oleh @StéphaneGourichon
Saya menyadari bahwa ini adalah balasan yang terlambat, tetapi saya menemukan utas saat mencoba mencapai hal yang sama. Solusi yang telah saya terapkan mengeluarkan tar ke stdout, dan menyalurkannya ke hash mana pun yang Anda pilih:
tar -xOzf archive.tar.gz | sort | sha1sum
Perhatikan bahwa urutan argumen itu penting; khususnya O
sinyal mana yang akan digunakan stdout.