目標碟存不住哪些應用程式資訊
目標碟缺少哪些能力、遷移後會怎樣、以及怎樣處理。
把應用程式搬到外接碟時,檔案內容幾乎總能搬過去,但檔案系統能記錄的屬性並不都一樣。目標碟缺少某項能力時,AppPorts 會在遷移前說明;遷移後應用程式通常仍能開啟和使用,只是這部分資訊無法保留。
本文說明每種情況為什麼會發生、意味著什麼、以及怎樣處理。
先看結論
| 目標碟缺少 | 遷移後會發生什麼 | 建議 |
|---|---|---|
| 存取控制清單(ACL) | 應用程式原有的細緻存取規則遺失,退回一般權限位 | 多數應用程式無影響;帶特權背景服務的建議用 APFS |
| 硬連結 | 應用程式內部共用的檔案各存一份,佔用更多空間 | 能用;只是多佔空間 |
| 資源分支 | 少數應用程式的自訂圖示、舊式本地化資源可能缺失 | 能用;外觀可能不完整 |
| POSIX 權限位 | 所有檔案權限變成該碟固定預設值 | 能用;但依賴特定權限的應用程式可能異常 |
一句話:這些都屬於「能用,但不完整」。 真正會拒絕遷移的是另一類問題,見遷移失敗。
為什麼會出現
不同檔案系統的設計目標不同。APFS 是 macOS 的原生檔案系統,完整保存擁有者、權限、ACL、硬連結、資源分支和延伸屬性。而下面這些格式原本是為跨平台交換設計的,或者刻意簡化了這些概念:
- exFAT:為 USB 隨身碟和跨平台交換設計。沒有擁有者欄位,不保存 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,而目標碟寫不進去——這是真實存在的授權規則,不能假裝搬成功。
- 目標碟出現了來源裡沒有的內容,或複製過程中檔案被改動——無法證明搬對了。
- 目標碟在遷移過程中斷開或變成唯讀。
遇到這些提示時,保留原碟和現有副本,按介面說明處理後重試,不要手動刪除副本。