1. 檢查磁碟(唯讀)
App 在不改動任何內容的情況下掃描磁碟。它會計算檔案與資料夾數量、標示 exFAT 不允許的名稱、略過 System Volume Information 與 $RECYCLE.BIN 等系統資料夾,並將磁碟回報的已用空間與 macOS 實際看得到的檔案做比較。差距過大,表示可能有部分資料對 macOS 是不可見的。
- 不會對磁碟寫入任何內容
- 無法讀取的項目會被列出,不會被悄悄略過
- 你會看到所需的備份空間大小
五個階段,而且絕不跳過任何一個。本頁說明你的資料在每個步驟會發生什麼事,以及有哪些檢查在保護你避免出錯。
App 在不改動任何內容的情況下掃描磁碟。它會計算檔案與資料夾數量、標示 exFAT 不允許的名稱、略過 System Volume Information 與 $RECYCLE.BIN 等系統資料夾,並將磁碟回報的已用空間與 macOS 實際看得到的檔案做比較。差距過大,表示可能有部分資料對 macOS 是不可見的。
檔案會複製到你選擇的資料夾。複製每個檔案時同時計算其 SHA-256。進度記錄在只增不減的清單檔(manifest)中,因此你可以暫停、結束並續傳。
每個備份檔案都會略過快取、從磁碟讀回,並將其校驗碼與原始檔案計算出的校驗碼比對。即使只有一個位元組被改動,檢查也會失敗。
只有在下列條件全部成立時,才能進行格式化:備份已完整驗證、備份檔案仍存在且大小正確、磁碟的磁碟區與磁碟身分及大小皆未改變、備份不在該磁碟上,且你輸入了確切的磁碟名稱。App 會在動到磁碟之前先記錄「即將清除」,因此中斷之後也能被辨識出來。
所有檔案複製到新的 exFAT 磁碟區,並再次讀回以比對校驗碼。exFAT 不允許的名稱會被重新命名並列出。最終報告會儲存在備份旁邊。
當檔案寫入後從磁碟讀回的內容,算出的 SHA-256 與原始檔案相同時,才算已驗證。App 不會只憑檔案大小或日期判斷。唯一的例外是名為 ._* 的 macOS 中繼資料檔案:複製到 exFAT 後,macOS 會將它們合併到擴充屬性中,因此只能確認已寫入,無法重新讀回驗證。
exFAT 不允許 " * : < > ? \ | 這些字元、控制字元,或以空格、句點結尾的名稱。這類名稱會被取代並列入報告。僅大小寫不同的名稱會被調整為唯一。檔案與資料夾的修改日期會被保留。
macOS 內建的 NTFS 讀取程式可能隱藏或重新命名名稱不符 Windows 規則的檔案。NTFS2exFAT 只能處理 macOS 呈現給它的內容。當磁碟的已用空間遠大於可見檔案時它會發出警告,但無法偵測單一被隱藏的檔案。如果你的磁碟是由 Mac 或 Linux 的 NTFS 驅動程式寫入,請在轉換前先在 Windows 中,或用 NTFSTool 這類基於 ntfs-3g 的驅動程式檢查。
轉換引擎是一個小型 Swift 函式庫,除了 Foundation 與 CryptoKit 之外沒有其他相依項目。Mac App 與命令列工具共用同一個引擎。
引擎有單元測試(包括一項會在已驗證的備份中改動一個位元組,並預期檢查失敗的測試),以及端對端測試:建立真實的 NTFS 磁碟映像、執行完整轉換,並以 SHA-256 比對每個還原的檔案。實體外接磁碟的測試仍在進行中,這也是目前為測試版的原因之一。
同一個引擎也提供 ntfs2exfat-cli。
ntfs2exfat-cli list
ntfs2exfat-cli start disk4 ~/Backups
ntfs2exfat-cli backup ~/Backups/NTFS2exFAT-<job>
ntfs2exfat-cli erase ~/Backups/NTFS2exFAT-<job> --confirm "MY DRIVE"
ntfs2exfat-cli restore ~/Backups/NTFS2exFAT-<job>