macOS 27 的 Golden Gate 测试版里,一条用了很久的命令行工具,被苹果正式判了"缓刑"。
它叫 hdiutil,macOS 上专门操持磁盘镜像(dmg)的老命令。做启动盘、挂载镜像、打包加密备份,很多脚本里都躺着它的身影。
8 月 14 日,macOS 开发者 Jeff Johnson 在自己的博客 lapcatsoftware 上发了一篇《hdiutil is deprecated in macOS 27 Golden Gate》,把这颗"炸弹"拆开摆给了所有人看。

弃用告示里,只写了三句话
Jeff Johnson 是从 man hdiutil 手册的 WHAT'S NEW 段里发现这条告示的。官方的话,翻译过来就三句:
"在 macOS 27.0 中,hdiutil 已被弃用。所有磁盘镜像操作,请改用 diskutil image。"
diskutil image 提供了 attach、create、resize、info、chpass 等子命令。还有一句关键:ASIF(苹果稀疏镜像格式)只有 diskutil image 支持,hdiutil 不再支持。
换句话说,苹果不是砍掉盘镜像这个功能,而是把它从 hdiutil 挪到了 diskutil 底下,换了个门牌号。
但开发者不这么看。Jeff Johnson 直接下场实测,结论是:新命令确实更快,但也更"不会说话"。

实测:快了一分多钟,还小 90MB
Jeff Johnson 拿他每天都要干的一件事做对比——备份用户主目录,这是他 MacBook Pro 上的日常操作。
老命令 hdiutil 跑一趟,平均 110 到 115 秒。
换新命令 diskutil 跑同样一件事,平均只要 40 到 45 秒。快了一分多钟。
产出的镜像文件也瘦了:hdiutil 的 dmg 是 2.89 GB,diskutil 的是 2.8 GB,省出约 90MB。
单看这两个数字,diskutil 是全面胜出的。

但它失败的时候,一声不吭
转折,就藏在"更快"的代价里。
Jeff Johnson 在备份时撞到一个坑:主目录里有一两个文件,所有权是 root 用户的(他形容得有点无奈——"烦人地"归 root 所有)。
老命令 hdiutil 遇到这种情况,会弹出一个身份验证提示,你输一次管理员密码,它继续往下跑,备份照常完成。
新命令 diskutil 呢?直接报一句:"操作无法完成。不允许操作。"(Operation not permitted)
然后呢?没有然后了。哪怕你加了 verbose 参数,它也不告诉你到底是哪个文件、因为什么被卡住。Jeff Johnson 只能自己猜——猜中了是那个 root 文件,手动删掉,才让它跑通。
这就是最要命的地方:新命令更快,但它把"失败原因"这块给省了。 对一个写脚本的人来说,一个只会说"失败了"却不告诉你为什么的工具,比慢一点更折磨人。
还有一批老参数,被直接砍掉了
除了"不会说话",diskutil 还缺了一串 hdiutil 的老选项。
最伤的是 -puppetstrings——这个参数专门输出一种"机器好解析"的进度文本,让别的程序能读懂备份进度。多少自动化脚本是靠着它来报进度的,现在没了。
还有 create -srcfolder 底下一整排选项:-crossdev、-scrub、-anyowners、-skipunreadable、-atomic、-copyuid,也都不见了。
Jeff Johnson 的结论很直白:"我不明白,功能明明还活在 diskutil 里,为什么非要把 hdiutil 判死刑。苹果似乎铁了心要打断那些跑了很久的工作流和脚本。"
他自己早年参与过一个叫 Knox 的应用,底层就是直接调用 hdiutil。要是哪天苹果真把 hdiutil 从系统里删掉,这类应用会当场崩掉。

吵翻了:185 分,评论区两派对撞
这篇帖子当天上了 Hacker News 首页,冲到 185 分。
评论区有一条讲得最透。网友 KlayLay 说:diskutil 管的是磁盘(卷),hdiutil 管的是磁盘镜像——"文件系统作为一个文件",这俩压根不是同一个东西的两种写法。 所以把弃用 hdiutil 说成"进步",逻辑上站不住。
另一派更直接。DrJokepu:"老哥,这可是苹果。向后兼容这种事,纯属碰巧。" oefrha 补刀:"一个 4.5 万亿美元的公司,掏不出一年 100 个工时的维护成本?"
当然也有人提醒先别慌。网友 nrabulinski 说,xip 格式早就被"弃用"了,可 Xcode 至今还在用它分发;seatbelt 也"弃用"了很多年,至今仍是系统沙盒的底层。苹果嘴里的"弃用",和"删除",往往隔着好几年。
最后还有个花絮,是评论区自己炸出来的。Jeff Johnson 去年就报过一个 hdiutil 的 bug,苹果最近回复他:请确认该问题在最新 beta 是否仍存在,若存在,请提交一份 iOS sysdiagnose。
是的,一个 macOS 的 bug,苹果让他交一份 iOS 的系统诊断。网友 dreamcompiler 直接说:"我一度怀疑苹果总部有些楼层的员工,已经沉浸到不知道 macOS 还存在。"

对一个 Mac 用户,这意味着什么
先说结论:hdiutil 不会明天就消失。 但如果你手里有脚本、有 App、有"祖传的"备份命令在调它,现在就该开始盘点了。
几件现在就能做的事:
第一,查一遍你的脚本。 打开终端,把你常用的备份、做启动盘、挂载镜像的命令翻出来,凡是出现 hdiutil 的,先记下来。
第二,别急着全量迁移。 眼下 diskutil image 还有"失败不吭声"和缺参数这两个坑,拿来跑关键备份之前,先小规模试,确认没踩坑再切换。
第三,盯着 beta 的变化。 macOS 27 正式版大概下个月就来,到时候 diskutil 的 verbose 日志、权限处理、-scrub 这些坑,苹果可能修,也可能不修。
评论区