在自动化过程中,使用mkisofs创建一个iso文件。甚至,由于原始数据完全相同,由此产生的iso文件也不一样(它们的md5sum更改)。由于我rsync --checksum的结果,我不喜欢“相同的iso”当然是重新传输每次。我预计主要的区别是时间戳。
是否有一些libfaketime内置开关可以通过mkisofs生成一个确实相同的iso。
我不知道只有时间戳重要吗?我将得到的iso文件与它们的xxd isofile输出进行了比较,如下所示:
diff --side-by-side --suppress-common-lines <(xxd a.iso) <(xxd b.iso )在其他文件中,似乎只有51行代表16个字节(大约800字节的差值)。
用于生成此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个字节不同的情况下重新传输?
发布于 2020-03-17 14:08:23
首先,一个重要的注意事项:不要使用genisoimage,因为它是mkisofs的缺陷变体,从2004年5月开始。
在截至2007年5月的时间里,已经添加了大量Debian特定的bug,从那以后,它就死了。
这里要知道的是,genisoimage创建的文件系统映像在某个时候可能不再为操作系统所接受.
然而,官方的mkisofs仍在积极维护,并在2006年8月修复了大量非Debian特定的bug。目前还没有已知的bug。
现在来看看您的问题:您正在使用-R ( Rigde),这将像时间戳一样将UNIX添加到文件元数据中。这是问题1.
另一个问题是,ISO9660文件系统超级块(正式名称为primary_descriptor)包含创建日期和修改日期。后者可以通过选项-modification-date来控制。
如果您认为这是一个真正需要的功能,我可以为创建日期添加一个类似的选项。然而,您仍然需要一个选项来告诉Ridge格式化部分使用文件的修改日期,而不是上次读取访问的时间。
经常更新的原始源版本是schilytools tarball的一部分,可以从:http://sourceforge.net/projects/schilytools/files/检索。
目前最新的schilytools tarball引入了对可报告的ISO-9660文件系统映像的支持。请取/编译/安装schily 2020-03-27.tar.bz2。
有几个新的选择:
-noatime告诉mkisofs将修改时间存档为atime。-creation-date在PVD中设置创建日期。-expiration-date在PVD中设置过期日期。-effective-date在PVD中设置生效日期-reproducible-date设置所有时间,除了-effective-date和-noatime之外。这适用于普通的ISO-9660文件系统映像以及包含Rock Ridge和UDF的图像。请参阅最近的手册页: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发布于 2021-04-14 06:02:54
人们转向索里索,因为一个人可能想要避免亲吻和genisoimage似乎还没有得到进一步的发展。
为了使xorriso输出可重复设置环境变量名为SOURCE_日期_与1970年1月1日以来的秒值相同的时代。
您可以直接使用xorriso,也可以使用它的名为xorrisofs的mkisofs兼容性模式。
SOURCE_DATE_EPOCH=0 xorrisofs YOUR-MKISOFS-ARGShttps://unix.stackexchange.com/questions/572751
复制相似问题