终端无法直接修改.dmg文件容量,因磁盘映像具有特定格式和结构,扩容缩容需底层卷重布局与元数据更新,仅「磁盘工具」封装支持;强行用dd等操作易致损坏。

终端本身不直接提供修改磁盘映像(.dmg 文件)容量的命令,macOS 官方不支持用 diskutil 或其他内置终端命令直接“调整已存在磁盘映像的大小”。所有可靠、安全的扩容或缩容操作,必须通过图形界面的「磁盘工具」完成。
为什么终端不能直接改 .dmg 大小
磁盘映像不是普通文件容器,而是具有特定格式(如 APFS、HFS+、UDIF)和结构的块设备镜像。其大小变更涉及底层卷结构重布局、元数据更新和可能的文件系统校验——这些逻辑由「磁盘工具」封装调用,未暴露为终端可直接执行的命令。
尝试用 dd、hdiutil resize(该命令实际不存在)或手动修改头信息,极可能导致映像损坏、无法挂载或数据丢失。
正确做法:用磁盘工具调整,再配合终端辅助
虽然不能纯终端操作,但你可以用终端快速启动流程并验证结果:
-
先弹出映像:确保它没被挂载,否则磁盘工具会跳过它
hdiutil detach /Volumes/你的映像名称 -
打开磁盘工具并跳转到调整界面:
open -a "Disk Utility" && osascript -e 'tell app "Disk Utility" to activate'
然后手动点「映像」→「调整大小」 -
调整完成后验证是否成功:
hdiutil imageinfo /路径/到/映像.dmg | grep -E "(Size|Capacity)"
查看输出中的Size(文件总大小)和Capacity(逻辑容量),确认二者匹配新设定值
加密映像要额外注意
如果映像是加密的(比如 AES-128):
- 必须先弹出,再在磁盘工具中选中该 .dmg 文件 → 输入密码 → 才能进入「调整大小」界面
- 终端无法绕过密码环节;没有密码,连
hdiutil imageinfo都会提示「无权限」 - 调整过程会重新加密整个映像,耗时随容量增大而明显增加
替代方案:重建映像(适合高级用户)
若你确实需要脚本化或终端主导流程,唯一安全方式是「重建」而非「原地调整」:
- 挂载原映像:
hdiutil attach 原.dmg - 创建新映像(指定目标大小):
hdiutil create -size 20g -fs APFS -volname "NewVol" 新.dmg - 复制数据:
rsync -av /Volumes/原映像名称/ /Volumes/NewVol/ - 卸载并删除旧映像
这个方法可控性强,但需双倍临时空间,且不保留原始时间戳或 ACL 权限(除非加 -aE 参数)。











