我可以在磁盘映像打开时修改它,但不能“保存更改”吗?

时间:2018-11-26 22:26:54

标签: macos xattr hdiutil

我有一个脚本,其中我使用hdiutil创建SD卡的磁盘映像,然后挂载该磁盘映像。然后,我使用xattr将扩展属性写入内部文件,并将其作为重要程序。我有什么办法可以撤消那些xattr的写操作,以便在我卸载映像时不保存它们?理想情况下,我会保留未修改的SD卡副本以进行存档。有没有办法挂载磁盘映像,更改其中的文件,然后卸载它,而这些更改不是“已保存”的?由于时间原因,我试图避免两次复制SD卡。

1 个答案:

答案 0 :(得分:1)

您可以使用“阴影”文件挂载映像;卷的更改将存储在阴影文件中,而原始图像文件保持不变。要恢复到原始状态,只需弹出图像并删除阴影文件即可。

实际上,如果需要,甚至可以通过在图像仍挂载时“删除”阴影文件来增加技巧。该文件的目录条目将被立即删除,但是它将保留在磁盘上(可以读取和写入),直到最后一个程序将其关闭为止,直到弹出该映像时才会发生。像这样:

hdiutil mount /path/to/image.dmg -shadow
rm /path/to/image.dmg.shadow

这样,当图像弹出时,更改立即消失;重新安装它可以获得清晰的图像。不过,有一个警告:您必须完全弹出磁盘映像,而不仅仅是卸载卷。卸载卷会使映像附加到/ dev条目,阴影文件更改仍然有效等。

有关详细信息,请参见the hdiutil man page