GNU/Linux >> Belajar Linux >  >> Linux

File dengan konten yang sama tetapi dengan md5sum berbeda saat di-gzip?

Menurut RFC 1952, gzip header file menyertakan waktu modifikasi file asli (kolom MTIME ). Anda dapat menampilkan header dalam teks biasa dengan gzip -lv renew.log.gz :

method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 64263ac7 Jun 21 17:59                 314                 597  52.1% renew.log

Jadi, jika Anda benar-benar ingin membandingkan file gzip, kompres dengan -n untuk tidak menyimpan nama file asli dan stempel waktu ,

gzip -n renew.log s3/renew.log 

dan md5sum mereka harus identik.

Kalau tidak, Anda bisa menggunakan

md5sum <(zcat renew.log.gz) <(zcat s3/renew.log.gz)

untuk menghitung md5sum dari file yang didekompresi.

Namun, waktu dan tanggal yang ditampilkan tidak diambil dari header, tetapi mewakili nilai saat ini; ini juga berlaku untuk nama file:

$ gzip renew.log 
$ mv renew.log.gz foo.gz
$ gzip -lv foo.gz -------- uncompressed name is taken from current name ---v
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 6c721644 Jul 11 22:34                 580                1586  65.7% foo
$ hexdump -C foo.gz | head -n 2
00000000  1f 8b 08 08 f0 16 df 51  00 03 72 65 6e 65 77 2e  |.......Q..renew.|
00000010  6c 6f 67 00 8d 93 dd 6e  9b 30 18 86 8f 89 94 7b  |log....n.0.....{|
                                                             ^^^-------^^^^^
                                                  original filename is stored in the header

Mengapa Anda mengharapkan versi terkompresi dari file yang sama menjadi sama? Program kompres (gzip) dapat menyertakan beberapa stempel waktu di header, atau dapat menggunakan beberapa algoritme acak.

Dan persis! Header gzip berisi stempel waktu. Jika Anda ingin file terkompresi Anda sama, file Anda harus memiliki stempel waktu yang sama!

Jadi, saat Anda menyalin file, selalu lakukan sebagai cp -p file1 file1 , bukan hanya cp file1 file2 - itu sebenarnya kebiasaan buruk!


Cukup gunakan gzip dengan bendera '-n':

[email protected]:~$ gzip -n Yippie-Ki-Yay.mp3 bla/Yippie-Ki-Yay.mp3 

[email protected]:~$ sha1sum Yippie-Ki-Yay.mp3.gz bla/Yippie-Ki-Yay.mp3.gz 
b44b21c5f414935f1ced1187bfafd989704474a5  Yippie-Ki-Yay.mp3.gz
b44b21c5f414935f1ced1187bfafd989704474a5  bla/Yippie-Ki-Yay.mp3.gz

Sumber:https://unix.stackexchange.com/questions/31008/why-does-the-gzip-version-of-files-produce-a-different-md5-checksum


Linux
  1. Cara mengenkripsi file dengan gocryptfs di Linux

  2. Bandingkan Direktori Tapi Bukan Isi File?

  3. Bagaimana cara mengarahkan stderr dan stdout ke file berbeda di baris yang sama dalam skrip?

  1. tar/gzip tidak termasuk file tertentu

  2. Saat membaca file dengan `kurang` atau `lebih`, bagaimana saya bisa mendapatkan konten berwarna?

  3. Kecualikan file tersembunyi saat mencari dengan Unix/Linux temukan?

  1. File Cat Dengan Direktori?

  2. Diff Dimana Garis Hampir Sama Tapi Rusak?

  3. Hapus file yang dimulai dengan tetapi tidak berisi