Dans un processus automatisé, un fichier iso est créé avec mkisofs
. Même si les données dorigine sont exactement les mêmes, les fichiers iso résultants ne sont pas les mêmes (leurs md5sum
changent). Puisque je rsync --checksum
le résultat, je naime pas que le « même iso » soit bien sûr retransféré à chaque fois. Je mattends à ce que la plupart des horodatages soient la principale différence.
Y a-t-il un commutateur intégré libfaketime
pour générer un iso via mkisofs
ce serait en effet la même chose.
Je ne sais pas si seuls les horodatages comptent? Jai comparé les fichiers iso résultants avec leur sortie xxd isofile
comme ceci:
diff --side-by-side --suppress-common-lines <(xxd a.iso) <(xxd b.iso )
et il semble y avoir seulement 51 lignes représentant 16 octets (soit environ 800 octets de différence) dans le fichier else exact.
La commande utilisée pour générer cet iso en question est à peu près la suivante:
genisoimage -o "file.iso" -b isolinux/isolinux.bin \ -c isolinux/boot.cat -no-emul-boot \ -boot-load-size 4 -boot-info-table \ -J -R -v -T -V "CDLABEL" "datadir/"
BS: Est-ce quil me manque un paramètre de paramètre de ligne de commande avec rsync
qui effectue la somme de contrôle pour des blocs denviron 1 Mo de gros fichiers, afin dempêcher le retransfert lorsque dans mon cas, seuls quelques 800 octets diffèrent?
Commentaires
Réponse
Tout dabord, une remarque importante: nutilisez pas genisoimage
car il sagit dune variante défectueuse dun mkisofs
de mai 2004.
Jusquen mai 2007, de nombreux bogues spécifiques à Debian ont été ajoutés et depuis, il est mort.
La chose importante à savoir ici est que genisoimage
crée des images de système de fichiers défectueuses qui, à un moment donné, peuvent ne plus être acceptées par votre OS …
Le mkisofs
officiel est cependant toujours activement maintenu et corrigé de nombreux bogues non spécifiques à Debian en août 2006. Il ny en a actuellement aucun connu. bugs.
Passons maintenant à votre problème: vous utilisez -R (Rock Rigde) et cela ajoute UNIX
comme des horodatages aux métadonnées des fichiers. Cest le problème numéro 1 ….
Lautre problème est que le super bloc du système de fichiers ISO-9660 (officiellement appelé primary_descriptor) contient la date de création et la date de modification. Ce dernier peut être contrôlé via loption -modification-date
.
Si vous pensez que cest une fonctionnalité vraiment nécessaire, je pourrais ajouter une option similaire pour la date de création. Cependant, vous auriez toujours besoin dune option pour indiquer à la partie de mise en forme Rock Ridge dutiliser la date de modification des fichiers au lieu de lheure du dernier accès en lecture.
Les versions fréquemment mises à jour de la source dorigine font partie de larchive tar schilytools
qui peut être récupérée à partir de: http://sourceforge.net/projects/schilytools/files/
La dernière archive tar schilytools a introduit le support des images de système de fichiers ISO-9660 reporductibles. Veuillez récupérer / compiler / installer schily-2020-03-27.tar.bz2.
Il y a quelques nouvelles options:
-
-noatime
dit àmkisofs
darchiver lheure de modification au format atime. -
-creation-date
définit la date de création dans le PVD -
-expiration-date
définit la date dexpiration dans le PVD -
-effective-date
définit la date dentrée en vigueur dans le PVD -
-reproducible-date
définit toutes les heures sauf pour-effective-date
et-noatime
en plus.
Cela fonctionne pour les images de système de fichiers ISO-9660 vanille ainsi que pour les images contenant Rock Ridge
et UDF
. Consultez la page de manuel récente à ladresse: http://schilytools.sourceforge.net/man/man8/mkisofs.8.html
Votre ligne de commande mise à jour ressemblerait à ceci :
mkisofs -b isolinux/isolinux.bin \ -c isolinux/boot.cat -no-emul-boot \ -boot-load-size 4 -boot-info-table \ -J -R -v -T -V "CDLABEL" \ -reproducible-date=20200327 "datadir/" > file.iso
--no-W
pour le forcer. Il existe un utilitairelibfaketime
etfaketime
pour émuler lhorloge système en utilisantLD_PRELOAD
(si pas setuid).schilytools
. Lemkisofs
amélioré inclus prend en charge les horodatages reproductibles. Consultez la réponse mise à jour.