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

  • rsync vérifie généralement des parties de fichiers pour optimiser les mises à jour, mais pas si elles sont toutes les deux apparemment locales (par exemple sur nfs). Ajoutez --no-W pour le forcer. Il existe un utilitaire libfaketime et faketime pour émuler lhorloge système en utilisant LD_PRELOAD (si pas setuid).
  • Bonjour, je viens de publier une nouvelle version de schilytools. Le mkisofs amélioré inclus prend en charge les horodatages reproductibles. Consultez la réponse mise à jour.

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 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *