GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana membandingkan dua konten tarball

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.


Linux
  1. Cara Mengekstrak File Tar ke Direktori Tertentu atau Berbeda di Linux

  2. Cara Melihat Isi File Terkompresi di Linux

  3. Cara Mengarsipkan File Dan Direktori Di Linux [Bagian 1]

  1. Cara mengekstrak file .gz dan .tar.gz di Linux

  2. Bagaimana cara menggabungkan dua file menggunakan AWK?

  3. Bagaimana cara menggabungkan dua file CSV?

  1. Cara Mencari File untuk Konten

  2. Bagaimana membandingkan dua database SQLite di Linux

  3. Bagaimana cara tar file dengan urutan yang diurutkan?