为什么外置盘必须是 APFS
一句话结论
从 1.9.0 起,AppPorts 迁移 ~/Library/Containers/(应用容器数据,比如微信聊天记录)时,会在外置盘的 APFS 容器中新建一个卷,直接"接"到原来的目录上。这个做法只有 APFS 格式的外置盘做得到。exFAT / NTFS 盘我们也试过用磁盘映像绕路,结果是一拔盘整个映像报废,所以没有提供。
外置盘不是 APFS,也不必马上改。 应用本体和普通数据目录照常迁移,只有容器数据先留在本机,应用照常使用。以后想迁移容器数据时,再按准备 APFS 外置盘的方法准备;exFAT 分区内有剩余容量,不代表能直接划出新分区。
先说清楚:哪些操作有这个要求
| 你要做的事 | 对外置盘格式的要求 |
|---|---|
迁移应用本体(把 .app 搬到外置盘) | 没有要求,exFAT 也行 |
迁移普通数据目录(Application Support、缓存、~/.npm 这类工具目录、自定义目录) | 没有要求 |
迁移 容器数据(~/Library/Containers/、~/Library/Group Containers/,微信、QQ 音乐、App Store 应用的数据都在这里) | 必须 APFS |
也就是说,只有第三类受影响。但第三类恰恰是最大、最想搬走的那些数据。
为什么容器数据这么特殊
大部分 Mac 应用是"沙盒应用":系统给每个应用划一个专属文件夹(就是 ~/Library/Containers/ 下面那个),应用只能在自己的文件夹里读写。这是 macOS 的安全设计,App Store 上架的应用都必须这样。
以前 AppPorts 搬数据的办法是:把文件夹复制到外置盘,然后在原位置留一个"快捷方式"(符号链接)指过去。这招对普通数据目录很好用,但对沙盒应用从来没有真正生效过:
- 系统检查的不是快捷方式的位置,而是它指向哪里。指向外置盘就是"离开了专属文件夹",直接拒绝。
- 以前看起来能用,是因为迁移时多做了一步"重签名",把应用的沙盒身份拆掉了。应用不再是沙盒应用,自然不受限制。
- 代价在 macOS 27 上开始兑现:系统核对"这个应用有没有资格碰这个文件夹"时,被拆掉身份的应用可能对不上号,双击后一秒闪退(微信已确认,QQ 音乐目前还能开)。修复只能重装应用。这一段的来龙去脉见 macOS 27 升级说明。
所以新方案的核心要求只有一条:数据既要在外置盘上,又不能"离开"那个专属文件夹。
新方案是怎么做到的
办法是不用快捷方式,而是把外置盘上的一块空间直接挂到原来的文件夹上。可以想象成:原来的文件夹还在原地,只是它的"地板"换成了外置盘。
- 应用看到的路径一个字都没变,系统的检查照常通过。
- 应用的签名一个字节都不动,不需要重签名,以后升级系统也不会出事。
- 外置盘不在的时候,那个文件夹就是空的,应用会当作没有数据,不会把新数据写到本机造成两份。
要做到"把一块空间挂到某个文件夹上",这块空间必须是一个独立的卷。APFS 可以在同一个 APFS 容器中新增多个卷,让它们共享容器内的剩余空间,不需要预先划定每个卷的大小,也不需要重新分区。AppPorts 就是用这个能力为每个迁移的目录建一个专属的卷。这里的「新增卷」和在物理磁盘上划出一个新分区是两件事。
exFAT 和 NTFS 分区里不能这样新增 APFS 卷。要在同一块盘上同时保留它们和 APFS,需要给 APFS 一个独立分区:使用已有的未分配空间,或者先用支持现有文件系统的工具缩小原分区;做不到时就要备份后重新分区。AppPorts 不会替用户调整磁盘分区。
我们试过绕路,结果不行
exFAT 盘的用户不少,我们认真考虑过一条绕路:在 exFAT 盘上放一个"磁盘映像"文件(sparsebundle,就是 Time Machine 备份到网络盘时用的那种),映像里面是 APFS,再把映像挂到文件夹上。
这条路一开始看起来很好。2026 年 9 月在 macOS 27 上的实测:
- 不需要 APFS 盘,什么格式都能放。
- 应用首次访问时不会弹「访问可移动宗卷」的授权框(APFS 卷方案会弹一次)。
- 读写速度和 APFS 卷差不多。
- 甚至系统自带的便签这类平台应用也能用(APFS 卷方案对平台应用不行)。
然后我们做了一个最接近真实世界的测试:在写入数据的时候直接拔盘。用一块 64 GB U 盘,格式化成 APFS,在上面同时准备一个 APFS 卷和一个磁盘映像,各自挂到一个文件夹上,两个程序分别往里面不停写数据库(和微信、QQ 音乐存聊天记录、播放列表的方式一样),写了十几秒后拔掉 U 盘,再插回去看还剩什么。
| 拔盘前已写入 | 插回后 | |
|---|---|---|
| APFS 卷,第一轮(普通写入) | 7177 条 | 数据库报了一次损坏,用修复命令救回全部 7172 条,文件系统完好 |
| APFS 卷,第二轮(应用强制落盘) | 1906 条 | 1905 条完好,只丢最后一条 |
| 磁盘映像,第一轮(普通写入) | 25574 条 | 映像打不开了,里面的东西全部无法访问 |
| 磁盘映像,第二轮(应用强制落盘) | 373 条 | 映像还是打不开 |
差别不是"丢多丢少",而是"丢几条"和"全没了"的区别。
原因说穿了不复杂:磁盘映像是外置盘上的一堆 8 MB 大小的文件拼起来的,映像自己的"目录簿"记在第一个文件里,而且每隔几秒就要重写一次。拔盘的瞬间,外置盘只保证"这些文件本身是完整的",不保证"文件里面写到一半的内容是完整的"。目录簿正好写了一半,整个映像就成了一堆没有目录的碎片。应用再怎么强制落盘也没用,因为这层是映像自己的问题,应用管不到。
用 Time Machine 往网络盘备份的人可能遇到过"备份已损坏,必须新建备份",那就是同一件事。备份坏了可以重来,聊天记录坏了不行。
所以磁盘映像的路我们试完就关掉了。一个数据迁移工具不能给用户一个"拔一次盘可能全部消失"的选项,哪怕它在其它方面都更方便。
你现在该怎么办
先回答一个问题:你要迁移的是不是容器数据? 不是的话,什么都不用改。是的话,按外置盘的现状选一条路:
| 你的情况 | 建议 |
|---|---|
| 外置盘已经是未加密的 APFS | 直接在「应用数据」里点「挂载迁移」 |
| 外置盘是 exFAT / NTFS,不想动它 | 保留现状:容器数据留在本机,其它照常迁移。这是完全正常的用法 |
| 有另一块 APFS 盘,或愿意专门准备一块 | 在 AppPorts 里把外部存储换到那块盘,再迁移容器数据 |
| 想在现有这块盘上腾出 APFS 空间 | 按下方准备 APFS 外置盘操作,先备份 |
| 外置盘是加密的 APFS | 暂不支持,见下方加密的外置盘 |
不确定的话,在 AppPorts 里点一次「挂载迁移」:它会先只读检查外部存储,告诉你属于哪种情况,不会改动任何东西。
看一眼外置盘是什么格式:Finder 里选中外置盘,按 ⌘ I,看「格式」一栏。写着 "APFS" 就没问题;写着 "ExFAT"、"NTFS"、"Mac OS 扩展"(HFS+)就属于上表的第二行。
准备 APFS 外置盘
动磁盘之前
下面任何一种做法都应先备份盘上的数据。AppPorts 不会替你抹盘或调整分区。
盘上没有重要数据:打开「磁盘工具」,选中这块盘,点「抹掉」,格式选 "APFS",方案选 "GUID 分区图"。抹掉会清空整块盘。
盘上有数据,想保留原分区:先确认磁盘使用「GUID 分区图」,再区分以下情况。Finder 显示的「可用容量」是文件系统内部的剩余容量,不等于分区之外的未分配空间。
| 当前情况 | 如何准备 APFS 空间 |
|---|---|
| 已有 APFS 容器 | 直接在 AppPorts 里选择其中的卷即可;AppPorts 会自动新增迁移用的 APFS 卷,无需重新分区 |
| 磁盘上已有足够、可用于新分区的未分配空间 | 可以在这部分空间新建 APFS 分区,无需抹掉原分区;操作前核对磁盘工具显示的改动范围 |
| exFAT 分区占满整块盘,没有未分配空间 | macOS 磁盘工具和 Windows 自带磁盘管理都不能缩小 exFAT。使用系统自带工具时,需要先备份,再抹掉并重新分区,最后恢复文件 |
| NTFS 分区,没有未分配空间 | macOS 不能无损缩小 NTFS;可先在 Windows 磁盘管理中缩小 NTFS,成功腾出未分配空间后,再回 macOS 新建 APFS 分区。可缩小的大小受文件布局等条件限制 |
| Mac OS 扩展(日志式 HFS+)分区或 APFS 容器 | macOS 支持无损调整大小,可在满足空间和分区布局要求时缩小,再创建 APFS 分区;仍应先备份 |
如果磁盘不是 GUID 分区图,不要直接套用上面的新增分区步骤;应先备份,再按 GUID 方案重新分区。准备好后,在 AppPorts 中把外部存储路径指向 APFS 卷。
依据:本机 man diskutil 的 resizeVolume 要求文件系统为 journaled HFS+;APFS 使用 apfs resizeContainer。微软的缩小基本卷说明明确列出 Windows 自带工具支持 NTFS 或无文件系统的卷,未包含 exFAT。第三方工具是否支持 exFAT 无损缩容需要单独核实,不能把它当作系统自带能力。
盘要在 Windows 上共用:Windows 默认不能读写 APFS。可以使用 exFAT 和 APFS 两个分区,前者给 Windows 共用,后者给 AppPorts。已有 exFAT 占满整块盘时,系统自带工具无法直接从中划出 APFS 分区,需要先备份再重新分区。
加密的外置盘
挂载迁移会在外置盘的 APFS 容器里新建数据卷,而新卷不会继承原卷的密码。如果照常迁移,原本在本机受 FileVault 保护的聊天记录,会落在一个任何人插上就能读的卷上。登录时自动解锁和密码管理做好之前,AppPorts 在加密的 APFS 盘上不提供挂载迁移,也不会悄悄建一个未加密的卷。
可以怎么做:
- 保留现状:容器数据留在本机,本机的 FileVault 继续保护它。
- 改用一块未加密的 APFS 盘或分区:清楚这部分数据在外置盘上不加密,再迁移。
经典数据迁移模式
设置里的「经典数据迁移模式」会恢复 1.8.1 的符号链接 + 重签名做法,它不依赖 APFS,但带着旧办法全部的风险:沙盒应用在 macOS 27 上可能打不开,登录态可能丢失。它只为已经依赖旧方案的用户保留,不建议为了绕开 APFS 要求而打开。细节见设置。
常见疑问
以前用 exFAT 迁过的容器数据怎么办?
以前的迁移用的是快捷方式加重签名,和外置盘格式无关。它的问题不是格式,是重签名,处理办法见 macOS 27 升级说明。处理完之后如果还想把容器数据放到外置盘,再按准备 APFS 外置盘的方法准备。
为什么不直接给 exFAT 提供一个"我知道风险"的选项?
因为这个风险不是"偶尔丢一点",是"拔一次盘全没",而且拔盘是移动硬盘最正常的使用方式。等用户真的丢了聊天记录,"当初提醒过"没有任何意义。
换成 APFS 会影响读写速度吗?
不会,APFS 是 macOS 的原生格式,在 SSD 上通常比 exFAT 更快。我们的测试里,同一块 U 盘上 APFS 卷的数据库写入速度是直接写 exFAT 的十倍左右。
HFS+(Mac OS 扩展)可以吗?
不能直接用于挂载迁移。HFS+ 没有 APFS 的多卷共享空间能力,但日志式 HFS+ 可以用 macOS 自带工具无损缩小,满足条件时可腾出空间新建 APFS 分区;这点与 exFAT 不同。操作前仍需备份,详见上方准备 APFS 外置盘。
相关文档
- 挂载迁移:新方案怎么用
- 实验记录:拔盘测试:本文实验的原始数据
- macOS 27 升级说明:旧方案为什么会在 27 上失效
- 外部存储指南:接口、容量与文件系统的一般建议
