macOS 上创建、转换、压缩和加密 DMG 文件需结合磁盘工具与 hdiutil:图形界面适合快速创建标准读写 DMG,命令行支持加密(AES-128/256)、多种压缩格式(UDZO/UDBZ/ULFO)及批量脚本化操作。

在 macOS 上创建、转换、压缩和加密 DMG 文件,核心在于 磁盘工具(Disk Utility) 和命令行工具 hdiutil。图形界面适合基础操作,终端命令则更灵活、可脚本化,也支持高级控制(如分卷加密、自定义块大小、无损压缩等)。
用磁盘工具快速创建标准 DMG
适合打包应用或文档,无需加密或特殊压缩:
- 打开“磁盘工具” → 菜单栏“文件”→“新建映像”→“空白映像”
- 设置名称、保存位置、大小(建议选“自定义”,按需输入,如 500MB;也可选“根据内容自动调整”但仅限后续写入后压缩)
- 格式选“APFS”(推荐,macOS 10.13+)或“Mac OS 扩展(日志式)”(兼容旧系统)
- 映像格式选“读/写”,完成后会自动挂载为新卷,拖入文件即可
- 右键镜像文件 → “显示简介” → 点击锁图标解锁 → 勾选“锁定”,可防止误编辑(非加密)
用 hdiutil 命令行实现精准控制
终端命令更可靠,尤其适合批量处理或需要加密/压缩的场景:
-
创建加密读写 DMG:
hdiutil create -size 500m -encryption -stdinpass -format APFS -volname "MySecure" ~/Desktop/secure.dmg(执行后提示输入密码) -
将文件夹制作为压缩只读 DMG:
hdiutil create -srcfolder /path/to/folder -format UDZO ~/Desktop/archive.dmg(UDZO = zlib 压缩,体积小,通用性强) -
转换现有 DMG 格式或加密状态:
hdiutil convert -format UDBZ -encryption -o encrypted.dmg original.dmg(UDBZ 为 bzip2 压缩,比 UDZO 更小但耗时略长) -
压缩已挂载的读写 DMG(释放空闲空间):先卸载:
hdiutil detach /Volumes/MyVolume,再压缩:hdiutil compact ~/Desktop/data.dmg
加密与安全要点
DMG 加密基于 AES-128 或 AES-256(取决于 macOS 版本和选项),但安全性实际取决于密码强度:
- 加密仅在创建或转换时启用,无法对已有未加密 DMG 单独加密码——必须重新生成或转换
- 使用
-stdinpass可避免密码明文出现在历史记录中;若省略该参数,密码会以明文形式出现在终端命令中(不安全) - 加密 DMG 挂载时需输入密码,系统不会缓存(除非勾选“记住密码”并存入钥匙串,此时安全性取决于钥匙串保护)
- 不要依赖“隐藏文件”或“资源分支”方式隐藏敏感内容——DMG 内容可被挂载后直接访问,真正保护靠加密
压缩类型与适用场景
不同格式影响兼容性、体积和生成速度:
- UDRW:读/写,未压缩,可编辑,适合中转工作盘
- UDRO:只读,未压缩,兼容性最好,旧版 macOS 和部分工具可识别
- UDZO:zlib 压缩,速度快,体积适中,现代 macOS 默认推荐
- UDBZ:bzip2 压缩,压缩率更高,但生成慢、解压稍慢,适合静态归档
- ULFO:LZFSE 压缩(macOS 10.11+),平衡速度与压缩率,但旧系统不支持










