侧边栏壁纸
博主头像
HHShare 博主等级

行动起来,活在当下

  • 累计撰写 153 篇文章
  • 累计创建 36 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

macOS 27 弃用 hdiutil:新命令快 1 分钟,失败却一声不吭

晖晖分享
2026-08-24 / 0 评论 / 0 点赞 / 0 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我删除。

macOS 27 的 Golden Gate 测试版里,一条用了很久的命令行工具,被苹果正式判了"缓刑"。

它叫 hdiutil,macOS 上专门操持磁盘镜像(dmg)的老命令。做启动盘、挂载镜像、打包加密备份,很多脚本里都躺着它的身影。

8 月 14 日,macOS 开发者 Jeff Johnson 在自己的博客 lapcatsoftware 上发了一篇《hdiutil is deprecated in macOS 27 Golden Gate》,把这颗"炸弹"拆开摆给了所有人看。

Jeff Johnson 原文标题区

弃用告示里,只写了三句话

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 还存在。"

iOS sysdiagnose 花絮

对一个 Mac 用户,这意味着什么

先说结论:hdiutil 不会明天就消失。 但如果你手里有脚本、有 App、有"祖传的"备份命令在调它,现在就该开始盘点了。

几件现在就能做的事:

第一,查一遍你的脚本。 打开终端,把你常用的备份、做启动盘、挂载镜像的命令翻出来,凡是出现 hdiutil 的,先记下来。

第二,别急着全量迁移。 眼下 diskutil image 还有"失败不吭声"和缺参数这两个坑,拿来跑关键备份之前,先小规模试,确认没踩坑再切换。

第三,盯着 beta 的变化。 macOS 27 正式版大概下个月就来,到时候 diskutil 的 verbose 日志、权限处理、-scrub 这些坑,苹果可能修,也可能不修。

0

评论区