hdiutil是macOS原生磁盘映像管理工具,支持创建、挂载、卸载、转换、验证及信息查询等完整操作,无需安装,适用于脚本自动化与高级控制。

如果您需要在 macOS 中通过命令行对磁盘映像(.dmg、.sparseimage、.sparsebundle 等)执行创建、挂载、卸载、转换或验证等操作,则必须使用系统原生工具 hdiutil。该命令功能完整、无需额外安装,适用于自动化脚本、批量处理及高级用户精确控制场景。
一、创建加密或非加密磁盘映像
此方法用于从零生成指定大小、格式与加密类型的磁盘映像文件,支持稀疏映像(自动扩容)与固态映像(固定大小),适用于构建安全容器或分发模板。
1、打开“应用程序 > 实用工具 > 终端”。
2、执行以下命令创建一个 500MB 的 AES-256 加密稀疏映像:
hdiutil create -type SPARSE -fs 'APFS' -volname "SecureData" -encryption AES-256 -agentpass "/Users/用户名/Desktop/SecureData.sparseimage"
3、按回车后,终端将提示两次输入密码;输入相同高强度密码并确认。
4、若需创建非加密的固态 .dmg 文件(如用于分发),运行:
hdiutil create -size 2g -fs 'APFS' -volname "InstallPackage" "/Users/用户名/Desktop/InstallPackage.dmg"
5、生成完成后,文件将保存至指定路径,但不会自动挂载。
二、挂载与卸载磁盘映像
挂载操作使磁盘映像在 Finder 中显示为可访问卷宗,卸载则断开连接并释放资源;两者均不修改映像内容本身,仅改变系统对其的可见性状态。
1、挂载指定 .dmg 文件(不弹出 Finder 窗口):
hdiutil attach -quiet "/Users/用户名/Desktop/Data.dmg"
2、挂载时强制静默且忽略验证(适用于已知可信映像):
hdiutil attach -quiet -noverify -noautofsck "/Users/用户名/Desktop/Archive.dmg"
3、挂载加密映像并从钥匙串读取密码(需提前存入):
hdiutil attach -stdinpass "/Users/用户名/Desktop/Protected.dmg"
4、卸载已挂载卷(根据挂载路径操作):
hdiutil detach "/Volumes/SecureData"
5、卸载所有当前挂载的磁盘映像:
hdiutil detach -all
三、转换磁盘映像格式
此方法用于更改映像的压缩方式、文件系统类型或容器格式,例如将读写映像转为只读压缩版以减小分发体积,或适配不同 macOS 版本兼容性要求。
1、将未压缩的读写 .dmg 转换为高压缩率只读格式(UDZO):
hdiutil convert "/Users/用户名/Desktop/Source.dmg" -format UDZO -o "/Users/用户名/Desktop/Compressed.dmg"
2、将稀疏映像(.sparseimage)转换为固态只读映像(.dmg):
hdiutil convert "/Users/用户名/Desktop/Working.sparseimage" -format UDBZ -o "/Users/用户名/Desktop/Final.dmg"
3、转换时指定新卷标名称:
hdiutil convert "/Users/用户名/Desktop/Old.dmg" -format UDZO -volname "NewLabel" -o "/Users/用户名/Desktop/New.dmg"
4、若源映像受密码保护,转换过程中会提示输入密码;也可通过 -stdinpass 参数传递。
5、转换完成后,原始文件保持不变,新文件独立生成。
四、验证与修复磁盘映像完整性
验证操作检查映像文件结构是否损坏、校验和是否匹配;修复则尝试重建损坏的目录结构或元数据,适用于下载中断、传输错误或意外断电导致的映像异常。
1、仅验证映像完整性(不挂载、不修改):
hdiutil verify "/Users/用户名/Desktop/CheckMe.dmg"
2、验证并输出详细诊断信息:
hdiutil verify -verbose "/Users/用户名/Desktop/CheckMe.dmg"
3、对已挂载的卷执行文件系统级修复(需具备读写权限):
hdiutil repair "/Volumes/CorruptedVolume"
4、强制跳过签名验证(适用于自制或未签名映像):
hdiutil verify -noverify "/Users/用户名/Desktop/Test.dmg"
5、若验证失败,终端将明确提示错误代码(如 “Error 1234”)及具体位置,不可忽略。
五、列出与查询磁盘映像信息
此方法用于快速获取映像的底层参数,包括容量、格式、加密状态、块大小、卷标、创建时间等,是排查挂载失败、格式不兼容或脚本调试的关键前置步骤。
1、列出所有当前挂载的磁盘映像及其设备节点:
hdiutil info
2、查询指定映像文件的详细属性(不挂载):
hdiutil imageinfo "/Users/用户名/Desktop/Query.dmg"
3、仅提取映像的加密类型与状态:
hdiutil imageinfo "/Users/用户名/Desktop/Query.dmg" | grep -i "encryption"
4、查看映像支持的挂载选项(如是否允许写入、是否启用Journaled):
hdiutil imageinfo "/Users/用户名/Desktop/Query.dmg" | grep -E "(format|partition|properties)"
5、若映像为稀疏类型,输出中将明确显示 “Type: SPARSE” 及当前逻辑/物理占用大小。

















