자동 프로세스에서 ISO 파일은 mkisofs
로 생성됩니다. 원래 데이터가 정확히 동일하기 때문에 결과 iso 파일은 동일하지 않습니다 (md5sum
변경). 결과가 rsync --checksum
이므로 “동일한 ISO”가 매번 재전송되는 것이 싫습니다. 대부분 타임 스탬프가 주요 차이점이 될 것으로 예상합니다.
mkisofs
div를 통해 ISO를 생성하는 libfaketime
내장 스위치가 있습니까? > 그것은 실제로 동일합니다.
타임 스탬프 만 중요한지 모르겠습니까? 결과 iso 파일을 xxd isofile
출력과 다음과 같이 비교했습니다.
diff --side-by-side --suppress-common-lines <(xxd a.iso) <(xxd b.iso )
정확히 동일한 파일에서 16 바이트 (약 800 바이트 차이)를 나타내는 51 줄.
문제의이 iso를 생성하는 데 사용되는 명령은 대략 다음과 같습니다.
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 : rsync
가있는 명령 줄 매개 변수 스위치가 누락 되었나요?이 스위치는 다음과 같은 경우 재전송을 방지하기 위해 최대 1MB의 큰 파일 청크를 체크섬합니다. 제 경우에는 800 바이트 만 다릅니 까?
주석
답변
먼저 중요 사항 : 2004 년 5 월 mkisofs
의 결함이있는 변종입니다.
2007 년 5 월까지 많은 데비안 관련 버그 추가되었으며 그 이후로 죽었습니다.
여기서 알아야 할 중요한 점은 genisoimage
가 결함이있는 파일 시스템 이미지를 생성하여 더 이상 허용되지 않을 수 있다는 것입니다. OS에 따라 …
공식 mkisofs
는 2006 년 8 월에 여전히 활발하게 유지 관리되고 있으며 데비안이 아닌 특정 버그를 많이 수정했습니다. 현재 알려진 바는 없습니다. 버그.
이제 문제 해결 : -R (Rock Rigde)을 사용하고 있으며 파일 메타 데이터에 타임 스탬프와 같은 UNIX
가 추가됩니다. 이것은 문제 번호 1입니다 ….
다른 문제는 ISO-9660 파일 시스템 수퍼 블록 (공식적으로 primary_descriptor라고 함)에 생성 날짜와 수정 날짜가 포함되어 있다는 것입니다. 후자는 -modification-date
옵션을 통해 제어 할 수 있습니다.
이 기능이 정말 필요하다고 생각하신다면 생성 일에 유사한 옵션을 추가 할 수 있습니다. 그러나 마지막 읽기 액세스 시간 대신 파일의 수정 날짜를 사용하도록 Rock Ridge 형식화 부분에 지시하는 옵션이 여전히 필요합니다.
원래 소스의 자주 업데이트되는 버전은 다음의 일부입니다. 검색 할 수있는 schilytools
tarball : http://sourceforge.net/projects/schilytools/files/
현재 최신 schilytools tarball은 변환 가능한 ISO-9660 파일 시스템 이미지에 대한 지원을 도입했습니다. schily-2020-03-27.tar.bz2를 가져 오기 / 컴파일 / 설치하세요.
몇 가지 새로운 옵션이 있습니다.
-
-noatime
는mkisofs
에 수정 시간을 한 번으로 보관하도록 지시합니다. -
-creation-date
는 PVD의 생성 날짜를 설정합니다. -
-expiration-date
는 PVD의 만료 날짜를 설정합니다. -
-effective-date
는 PVD의 유효 날짜를 설정합니다. -
-reproducible-date
는-effective-date
및-noatime
를 제외한 모든 시간을 추가로 설정합니다.
바닐라 ISO-9660 파일 시스템 이미지와 Rock Ridge
및 . 최신 man 페이지를 참조하십시오. http://schilytools.sourceforge.net/man/man8/mkisofs.8.html
업데이트 된 명령 줄은 다음과 같습니다. :
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
를 추가합니다.libfaketime
및faketime
유틸리티는LD_PRELOAD
를 사용하여 시스템 시계를 에뮬레이트합니다 ( not setuid).schilytools
의 새 버전을 게시했습니다. 포함 된 향상된mkisofs
에는 재현 가능한 타임 스탬프에 대한 지원이 포함됩니다. 업데이트 된 답변을 확인하세요.