GNU/Linux >> Tutoriales Linux >  >> Linux

¿Archivos con el mismo contenido pero con diferentes md5sums cuando gzip'd?

Según RFC 1952, el gzip el encabezado del archivo incluye la hora de modificación del archivo original (campo MTIME ). Puede mostrar el encabezado en texto sin formato con 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

Entonces, si realmente desea comparar los archivos comprimidos con gzip, comprímalos con el -n opción, para no guardar el nombre de archivo original y la marca de tiempo ,

gzip -n renew.log s3/renew.log 

y su md5sum debe ser idéntico.

De lo contrario, podría usar

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

para calcular el md5sum de los archivos descomprimidos.

Sin embargo, la hora y la fecha mostradas no se toman del encabezado, sino que representan los valores actuales; este es también el caso del nombre de archivo:

$ 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

¿Por qué espera que la versión comprimida del mismo archivo sea la misma? El programa de compresión (gzip) puede incluir alguna marca de tiempo en el encabezado, o puede usar algunos algoritmos aleatorios.

¡Y exactamente! El encabezado gzip contiene la marca de tiempo. Si desea que sus archivos comprimidos sean iguales, su archivo debe tener la misma marca de tiempo.

Entonces, cuando copie un archivo, hágalo siempre como cp -p file1 file1 , no solo cp file1 file2 - ¡eso es en realidad un mal hábito!


Simplemente use gzip con la marca '-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

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


Linux
  1. Cómo cifrar archivos con gocryptfs en Linux

  2. ¿Archivos Cat con directorio?

  3. Makefiles con archivos fuente en diferentes directorios

  4. ¿Cómo redirigir stderr y stdout a diferentes archivos en la misma línea en el script?

  5. bash:/bin/tar:lista de argumentos demasiado larga al comprimir muchos archivos con tar

Linux:¿diferentes formatos de archivos de objetos en Linux?

Haz una copia de seguridad de tus archivos con rsync

Bash script para eliminar todos los archivos excepto N cuando se ordenan alfabéticamente

tar/gzip excluyendo ciertos archivos

¿Es posible compartir archivos entre 2 sistemas operativos diferentes en la misma computadora?

¿Por qué find -mtime no funciona como se esperaba en archivos con diferentes zonas horarias?