Automatizált folyamat során egy iso fájl jön létre a mkisofs
címmel. Még ha az eredeti adatok is pontosan megegyeznek, a keletkező iso fájlok nem ugyanazok (md5sum
változások). Mivel rsync --checksum
az eredmény, nem szeretem, hogy az “ugyanazt az iso” -ot természetesen minden alkalommal újra átadják. Arra számítok, hogy főleg az időbélyegek lesznek a fő különbségek.
Van valami libfaketime
buildin kapcsoló, amely iso létrehozására szolgál a mkisofs
ez valóban ugyanaz lenne.
Nem tudom, hogy csak az időbélyegek számítanak? Összehasonlítottam a kapott iso fájlokat a következő xxd isofile
kimenettel:
diff --side-by-side --suppress-common-lines <(xxd a.iso) <(xxd b.iso )
és úgy tűnik, hogy csak 51 sor, amelyek 16 bájtot jelentenek (tehát nagyjából 800 bájt különbséget) a másikban pontosan ugyanabban a fájlban.
A szóban forgó iso létrehozásához használt parancs nagyjából ez:
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: Hiányzik egy rsync
parancssori parameer kapcsoló, amely ellenőrző összegez ~ 1 MB nagyságú nagy fájldarabokat, hogy megakadályozza az újraátvitelt, amikor az én esetemben csak körülbelül 800 bájt különbözik egymástól?
Megjegyzések
Válasz
Először fontos megjegyzés: Ne használjon genisoimage
mivel ez egy mkisofs
hibás változata 2004 májusától.
2007 májusáig rengeteg Debian-specifikus hiba hozzá lettek adva, és azóta halott.
A fontos tudnivaló itt az, hogy a genisoimage
hibás fájlrendszeri képeket hoz létre, amelyeket egy időben már nem lehet elfogadni az Ön operációs rendszere által.
A hivatalos mkisofs
szolgáltatást azonban továbbra is aktívan karbantartják, és rengeteg nem Debian-specifikus hibát kijavítanak 2006 augusztusában. Jelenleg nincsenek ismertek hibák.
Most a problémádhoz: Használod az -R (Rock Rigde) parancsot, és ez hozzáadja a UNIX
-t, mint az időbélyegek a fájlok metaadataihoz. Ez az 1. számú probléma.
A másik probléma az, hogy az ISO-9660 fájlrendszer szuperblokkja (hivatalos nevén primer_leíró) tartalmazza a létrehozás és a módosítás dátumát. Ez utóbbi a -modification-date
opcióval vezérelhető.
Ha úgy gondolja, hogy ez valóban szükséges funkció, akkor hozzáadhatok egy hasonló lehetőséget a létrehozás dátumához. Akkor azonban még mindig szükséged lenne egy lehetőségre, hogy a Rock Ridge formázási rész megmondja, hogy a fájlok módosítási dátumát használja az utolsó olvasási hozzáférés ideje helyett.
Az eredeti forrás gyakran frissített verziói a a schilytools
tarball, amelyet a következő helyről lehet letölteni: http://sourceforge.net/projects/schilytools/files/
A jelenleg legfrissebb schilytools tarball bevezette az újratermelhető ISO-9660 fájlrendszer képek támogatását. Kérjük, töltse le / fordítsa / telepítse a schily-2020-03-27.tar.bz2 fájlt.
Van néhány új lehetőség:
-
-noatime
azt mondja amkisofs
számára, hogy a módosítás idejét archiválja mint atime. -
-creation-date
beállítja a létrehozási dátumot a PVD-ben -
iv
-expiration-date
beállítja a lejárati dátumot a PVD-ben -
-effective-date
beállítja a PVD hatálybalépésének dátumát -
-reproducible-date
minden idõt beállít, kivéve a-effective-date
és-noatime
elemeket.
Ez működik a vanília ISO-9660 fájlrendszer képek, valamint a Rock Ridge
és UDF
. Lásd a legutóbbi man oldalt itt: http://schilytools.sourceforge.net/man/man8/mkisofs.8.html
A frissített parancssor így nézne ki :
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
hozzáadásával kényszerítheti. Van egylibfaketime
ésfaketime
segédprogram a rendszeróra emulálására aLD_PRELOAD
(ha nem setuid).schilytools
új verzióját. A mellékelt továbbfejlesztettmkisofs
tartalmazza a megismételhető időbélyegek támogatását. Lásd a frissített választ.