目标盘存不住哪些应用信息
目标盘缺少哪些能力、迁移后会怎样、以及怎样处理。
把应用搬到外置盘时,文件内容几乎总能搬过去,但文件系统能记录的属性并不都一样。目标盘缺少某项能力时,AppPorts 会在迁移前说明,迁移后应用通常仍能打开和使用,只是这部分信息无法保留。
本文说明每种情况为什么会发生、意味着什么、以及怎样处理。
先看结论
| 目标盘缺少 | 迁移后会发生什么 | 建议 |
|---|---|---|
| 访问控制列表(ACL) | 应用原有的细粒度访问规则丢失,退回普通权限位 | 多数应用无影响;带特权后台服务的应用建议用 APFS |
| 硬链接 | 应用内部共用的文件各存一份,占用更多空间 | 能用;只是多占空间 |
| 资源叉 | 少数应用的自定义图标、旧式本地化资源可能缺失 | 能用;外观可能不完整 |
| POSIX 权限位 | 所有文件权限变成该盘固定默认值 | 能用;但依赖特定权限的应用可能异常 |
一句话:这些都属于"能用,但不完整"。 真正会拒绝迁移的是另一类问题,见迁移失败。
为什么会出现
不同文件系统的设计目标不同。APFS 是 macOS 的原生文件系统,完整保存所有者、权限、ACL、硬链接、资源叉和扩展属性。而下面这些格式原本是为跨平台交换设计的,或者刻意简化了这些概念:
- exFAT:为 U 盘和跨平台交换设计。没有所有者字段,不保存 ACL,不支持硬链接,权限位固定,资源叉无法写入。macOS 会把扩展属性存进隐藏的旁路文件,普通属性因此能读写,但资源叉不行。
- FAT32:限制比 exFAT 更多,单文件不能超过 4 GB。
- HFS+ 在"忽略所有权"挂载下:会保存所有者字段,但新建文件被记成占位用户。
所以问题不在"盘不好",而在于这块盘没有设计用来存这些信息。把应用放上去,文件内容是对的,元数据却不是。
每项分别意味着什么
访问控制列表(ACL)
ACL 是比"读/写/执行"更细的规则,例如"允许某个后台服务读取这个文件"。macOS 的沙盒应用和带特权服务的应用会用到它。
丢失后,文件退回普通的 POSIX 权限位。绝大多数应用不受影响;但依靠 ACL 授权后台服务的应用可能拒绝工作,并给出修改权限的提示——而在这类盘上,修改权限会被系统静默忽略,看起来成功、实际无效。
硬链接
硬链接让多个路径指向同一份数据,不重复占空间。应用常用来在多个组件间共用资源,例如同一张图标被多个内部应用引用。
目标盘不支持硬链接时,AppPorts 会把它们物化成各自独立的副本。应用照常运行,代价是多占空间。日志里会记录分离了多少个。
资源叉
资源叉是 macOS 的历史特性,用来存放图标、旧式本地化字符串等附加资源。现代应用大多改用普通文件,但一些老应用和本地化资源仍在用。
无法保存时这部分会丢失,表现为个别图标缺失或界面文字不完整,不影响程序主体运行。
POSIX 权限位
权限位决定"谁可以读、写、执行"。某些文件系统不接受 chmod,所有文件固定为同一个模式。
丢失后,所有文件权限相同。普通应用不受影响,但依赖特定权限的应用(例如需要某文件仅自己可读)可能出现异常。
怎么判断目标盘是否合适
AppPorts 在迁移前会实际探测目标盘的能力,而不是靠格式名称猜测:它会在目标位置临时创建条目、尝试写入 ACL 和资源叉、建立硬链接、设置权限位,然后删除这些临时条目。因此同一块盘换了挂载方式也能被正确识别。
探测到缺失时,迁移前会弹出提示,列出具体缺少哪几项。你可以选择继续,也可以换一块盘。
遇到这些情况怎么办
如果应用只是普通应用(不依赖 ACL 授权、没有特权后台服务):可以继续迁移,实际影响通常只是多占一点空间,或个别图标缺失。
如果应用带特权后台服务(例如某些系统工具、VPN、代理类应用):建议改用 APFS 格式的磁盘,或让它的数据留在本机。这类应用最容易因为 ACL 或权限位丢失而拒绝工作。
如果只是空间紧张:硬链接分离会让占用变大。可以先把应用迁回本机、腾出空间后再迁,或换一块更大的盘。
如果需要保留全部元数据:唯一可靠的办法是使用 APFS 格式的目标盘。APFS 在"忽略所有权"挂载下也保存真实归属,是 macOS 上最完整的选择。
抹掉磁盘会清除所选对象的数据。更换格式前请先确认备份可用,不要只为绕过提示而重格式化整块盘。
为什么外部存储上的应用包会变成降级版本
迁出到不保存完整元数据的磁盘(例如 exFAT)时,复制过程就已经无法保留 ACL、硬链接、资源叉和权限位。这不是导回本机时出的问题——损失发生在迁出那一刻,此后那份副本就一直是降级的。
还原会把这个副本复制回本机,但复制不会凭空补回从未写下的信息。更关键的是:还原完成后,外部原件会被删除,缺失就变成永久的。
所以 AppPorts 在还原前会先检查外部副本所在的磁盘。如果那块盘本来就不支持这些项目,会提示你「外部存储上的应用包可能已降级」,并给出两个选择:
- 仍要还原:接受这份副本已经缺失的部分,把应用搬回本机。
- 取消:让应用继续留在外置盘,或卸载后重新安装官方版本。
如果这些应用依赖权限或访问控制(例如带特权的后台服务),推荐重新安装官方版本,而不是还原一份已经降级的副本。
哪些情况会直接拒绝迁移
上面讨论的都是"能用但不完整"。另有一类情况 AppPorts 会直接停下并保留原件,因为继续会真正丢东西:
- 应用本身带有 ACL,而目标盘写不进去——这是真实存在的授权规则,不能假装搬成功。
- 目标盘出现了源里没有的内容,或复制过程中文件被改动——无法证明搬对了。
- 目标盘在迁移过程中断开或变成只读。
遇到这些提示时,保留原盘和现有副本,按界面说明处理后重试,不要手工删除副本。