Skip to content

為什麼外接磁碟必須是 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 USB 隨身碟,格式化成 APFS,在上面同時準備一個 APFS 卷宗和一個磁碟映像檔,各自掛到一個資料夾上,兩個程式分別往裡面不停寫資料庫(和微信、QQ 音樂存聊天記錄、播放清單的方式一樣),寫了十幾秒後拔掉 USB 隨身碟,再插回去看還剩什麼。

拔除磁碟前已寫入插回後
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 更快。我們的測試裡,同一塊 USB 隨身碟上 APFS 卷宗的資料庫寫入速度是直接寫 exFAT 的十倍左右。

HFS+(Mac OS 擴充格式)可以嗎? ​

不能直接用於掛載遷移。HFS+ 沒有 APFS 的多卷宗共享空間能力,但日誌式 HFS+ 可以用 macOS 自帶工具無損縮小,滿足條件時可騰出空間建立 APFS 分割區;這點與 exFAT 不同。操作前仍需備份,詳見上方準備 APFS 外接磁碟。

相關文件 ​

最近更新