Pourquoi la version gzip des fichiers produit-elle une somme de contrôle md5 différente

28

J'ai quatre fichiers que j'ai créés à l'aide d'un svndump

test.svn 
test2.svn 
test.svn.gz  
test2.svn.gz

maintenant quand je lance ça

md5sum test2.svn test.svn test.svn.gz test2.svn.gz

Voici la sortie

89fc1d097345b0255825286d9b4d64c3  test2.svn
89fc1d097345b0255825286d9b4d64c3  test.svn
8284ebb8b4f860fbb3e03e63168b9c9e  test.svn.gz
ab9411efcb74a466ea8e6faea5c0af9d  test2.svn.gz

Je ne comprends donc pas pourquoi la gzipcompression des fichiers différemment met-elle un horodatage quelque part avant la compression? J'ai eu un problème similaire mysqldumpcar il utilisait le champ de date en haut

qui suis je
la source
Bon sang, je viens de comprendre, mais je laisse quelqu'un accumuler les points. Vous allez répondre: D
whoami

Réponses:

32

gzipstocke certaines des métadonnées du fichier d'origine dans l'en-tête d'enregistrement, y compris l'heure de modification du fichier et le nom du fichier, le cas échéant. Voir la spécification du format de fichier GZIP .

Il est donc prévu que vos deux gzipfichiers ne soient pas identiques. Vous pouvez contourner ce problème en passant gzipl' -nindicateur, ce qui l'empêche d'inclure le nom de fichier d'origine et l'horodatage dans l'en-tête.

Tapis
la source
4

Chaque fichier .gz a un en-tête avec un nom de fichier ... Essayez head test.svn.gzethead test2.svn.gz

Jan Marek
la source
Cela génère beaucoup de déchets. Je ne pense pas que la tête fonctionnerait bien sur test.svn.gz
whoami
Au début, vous pouvez voir un nom de fichier ...
Jan Marek
1
> head test2.svn.gz F u ; @ h 'N` V D ? Fo
whoami
11
head test2.svn.gz|hexdump -Cne gâchera pas votre terminal
Mat
ohhh nice @Mat aime apprendre de nouvelles commandes
whoami