DMG文件基础概念
- 定义与特性
DMG(Disk Image)是macOS专属的磁盘映像格式,采用HFS+/APFS文件系统封装,支持压缩(AES-128/256加密)、分卷和校验功能。其本质是将文件系统结构+数据打包为单一文件,通过虚拟设备节点(/dev/disk*)挂载访问。 - 核心用途
- 软件分发:78%的macOS第三方应用通过DMG分发
- 数据备份:可创建加密的磁盘映像
- 系统恢复:部分恢复工具使用DMG存储
macOS选择DMG的技术动因
- 完整性保障
校验和机制确保安装包传输无损,双击时自动验证 - 安装流程标准化
允许开发者自定义安装界面(背景图/协议文档) - 文件系统兼容性
完美支持macOS特性如资源派生(Resource Fork)
APP安装流程与底层机制
- 用户可见操作
123# 典型安装流程hdiutil attach example.dmg # 挂载DMGcp -r /Volumes/Example/App.app /Applications # 拖动安装 - 底层执行过程
- 内核将DMG映射为虚拟设备(如/dev/disk5s1)
- 挂载到/Volumes/临时目录,文件系统驱动解析元数据
- 复制操作触发APFS写时复制(CoW)机制
关键问题解析
- 挂载点溯源
12hdiutil info | grep -B 5 "/Volumes/Target" # 查找挂载点对应DMGmount | grep "/Volumes/Target" # 查看设备节点 - 大小差异原因
- DMG压缩存储 vs 挂载后解压状态
- 文件系统元数据(如HFS+目录B-tree)占用额外空间
- 废纸篓仍可访问
文件句柄保留机制:DMG挂载后系统保持对原始文件的引用,移动至~/.Trash不影响已打开句柄 - 不自动卸载的设计考量
- 用户体验:避免中断用户可能的二次安装
- 性能优化:减少重复挂载开销
- 影响
- 我们为了节省空间,安装完APP后,就会把安装文件(*.dmg)删掉,由于该文件安装后没有自动卸载,即使删除了,磁盘空间也不会被释放,此时,需要参考下面的手动卸载操作,手动卸载后,磁盘空间理解释放(很爽)
实用操作指南
- 手动卸载
12hdiutil detach /Volumes/Target # 标准卸载hdiutil detach -force /dev/disk5s1 # 强制卸载 - 工具差异
hdiutil
专管磁盘映像,可追溯DMG关联diskutil
侧重物理设备管理,无DMG元数据接口
- DMG制作示例
1hdiutil create -srcfolder ./App -fs HFS+ -volname "MyApp" -encryption AES-256 MyApp.dmg
支持参数:-format UDZO
:压缩映像-size 100m
:预分配空间
- 访达中操作
- 访达中的“位置”里面也可以看到挂载的dmg文件,也可以点击“推出”进行卸载