有没有办法修改qcow2图像的st_ctime_sec属性?
我正在尝试使用可重现的qcow2构建,最终目标是我可以重新创建qcow2文件,并且仍然具有字节相同内容的字节。
我觉得ctime在原版和我的复制版本之间存在差异。
使用 virt-diff -a orig.qcow2 -A rebuild.qcow2 --atime --dir-times --times 我只会得到如下差异:
我找到了一个以root身份运行的解决方案,但我正在寻找可以作为普通用户运行的东西。
modprobe nbd max_part=8
qemu-nbd -c /dev/nbd0 guest.img
mount /dev/nbd0p1 /mnt/guest
然后从change ctime
debugfs -w /dev/sda1 < changes
其中更改包含
之类的行set_inode_field /grub2/locale/ast.mo ctime 201001010101
set_inode_field /grub2/locale/ca.mo ctime 201001010101
set_inode_field /grub2/locale/da.mo ctime 201001010101
set_inode_field /grub2/locale/de.mo ctime 201001010101
答案 0 :(得分:0)
您可以使用libguestfs API guestfs_utimens执行atime和mtime。但是,libtimestfs无法设置ctime,主要是因为it appears there is not a "good" way to do it in Linux。您可以将debugfs
方法编码为新的libguestfs API(或使用调试后门)。或者,如果您的映像是原始文件系统(而不是qcow2),您可以直接在其上运行debugfs
,然后使用guestfs上传API(与this相反)将原始文件系统复制到最终映像中