Î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

  • rsync verifică de obicei părți din fișiere pentru a optimiza actualizările, dar nu dacă ambele sunt aparent locale (de ex. pe nfs). Adăugați --no-W pentru a-l forța. Există un utilitar libfaketime și faketime pentru a emula ceasul sistemului utilizând LD_PRELOAD (dacă nu setuid).
  • Bună, tocmai am publicat o nouă versiune a schilytools. mkisofs îmbunătățit include suport pentru timbre reproductibile. Consultați răspunsul actualizat.

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 spune mkisofs 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 

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *