Într-un proces automat se creează un fișier iso cu mkisofs
. Chiar și, deoarece datele originale sunt exact aceleași, fișierele iso rezultate nu sunt aceleași (modificările lor md5sum
). Deoarece am rsync --checksum
rezultatul, nu-mi place că „aceeași izo” este, desigur, retransferată de fiecare dată. Mă aștept ca majoritatea marcajelor temporale să fie principala diferență.
Există un libfaketime
switchin buildin pentru a genera un iso prin mkisofs
asta ar fi într-adevăr același.
Nu știu dacă contează doar marcajele de timp? Am comparat fișierele iso rezultate cu ieșirea lor xxd isofile
astfel:
diff --side-by-side --suppress-common-lines <(xxd a.iso) <(xxd b.iso )
și se pare că există doar 51 de linii reprezentând 16 octeți (deci aproximativ 800 de octeți de diferență) în celălalt exact același fișier.
Comanda utilizată pentru a genera acest iso în cauză este aproximativ:
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: Îmi lipsește un comutator parameer de linie de comandă cu rsync
care face sumă de verificare pentru bucăți de ~ 1 MB de fișiere mari, pentru a preveni retransferul atunci când în cazul meu diferă doar aproximativ 800 de octeți?
Comentarii
Răspuns
Mai întâi o notă importantă: Nu utilizați genisoimage
deoarece este o variantă defectă a unui mkisofs
din mai 2004.
În perioada până în mai 2007, o mulțime de bug-uri specifice Debian au fost adăugate și de atunci este mort.
Important de știut aici este că genisoimage
creează imagini defecte ale sistemului de fișiere care la un moment dat nu mai pot fi acceptate de către sistemul dvs. de operare …
mkisofs
oficial este totuși activ menținut și remediat o mulțime de bug-uri care nu sunt specifice Debian în august 2006. În prezent, nu sunt cunoscute bug-uri.
Acum, la problema dvs.: utilizați -R (Rock Rigde) și acest lucru adaugă UNIX
ca timestamp-uri la metadatele fișierelor. Aceasta este problema numărul 1 …
Cealaltă problemă este că superblocul sistemului de fișiere ISO-9660 (numit oficial descriptor_primar) conține data de creare și data modificării. Acesta din urmă poate fi controlat prin opțiunea -modification-date
.
Dacă credeți că aceasta este o caracteristică cu adevărat necesară, aș putea adăuga o opțiune similară pentru data creării. Apoi, totuși, veți avea nevoie de o opțiune pentru a spune părții de formatare Rock Ridge să utilizeze data modificării fișierelor în loc de ora ultimului acces de citire.
Versiunile actualizate frecvent ale sursei originale fac parte din tariful schilytools
care poate fi preluat din: http://sourceforge.net/projects/schilytools/files/
Cel mai recent tarball schilytools a introdus suport pentru imagini sistem de fișiere ISO-9660 reporducibile. Vă rugăm să preluați / compilați / instalați schily-2020-03-27.tar.bz2.
Există câteva opțiuni noi:
-
-noatime
spunemkisofs
să arhiveze timpul de modificare ca atime. -
-creation-date
setează data creării în PVD -
-expiration-date
setează data de expirare în PVD -
-effective-date
setează data efectivă în PVD -
-reproducible-date
setează de fiecare dată cu excepția-effective-date
și-noatime
în plus.
Acest lucru funcționează atât pentru imagini vanilie ISO-9660, cât și pentru imagini care conțin Rock Ridge
și UDF
. Consultați pagina manuală recentă la: http://schilytools.sourceforge.net/man/man8/mkisofs.8.html
Linia dvs. de comandă actualizată ar arăta astfel :
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
pentru a-l forța. Există un utilitarlibfaketime
șifaketime
pentru a emula ceasul sistemului utilizândLD_PRELOAD
(dacă nu setuid).schilytools
.mkisofs
îmbunătățit include suport pentru timbre reproductibile. Consultați răspunsul actualizat.