Pour MacOS :
Dans man tar
nous pouvons regarder --options
section et nous y trouverons !timestamp
option, qui exclura l'horodatage de notre archive gzip. Utilisation :
tar --options '!timestamp' -cvzf archive.tgz filename
Il produira la même somme md5 pour les mêmes fichiers avec les mêmes noms
tar czf outfile infiles
est équivalent à
tar cf - infiles | gzip > outfile
La raison pour laquelle les fichiers sont différents est que gzip
place son nom de fichier d'entrée et son heure de modification dans le fichier compressé. Lorsque l'entrée est un tube, elle utilise une chaîne vide comme nom de fichier et l'heure actuelle comme heure de modification.
Mais il a aussi un --no-name
option, qui lui dit de ne pas mettre le nom et l'horodatage dans le fichier. Donc, si vous écrivez explicitement la commande développée, au lieu d'utiliser le -z
option à tar
, vous pouvez utiliser cette option.
tar cf - testfile | gzip --no-name > a.tar.gz
tar cf - testfile | gzip --no-name > b.tar.gz
J'ai testé cela sur OS X 10.6.8 et cela fonctionne.