NTFS-3G 的「unsupported reparse point」錯誤

DR 的家用 PC 是 Windows 10 + Linux(目前是 Fedora 27)雙系統,偶爾會需要在兩個系統之間互相抓取檔案。其中在 Linux 系統上掛載 NTFS 檔案系統的途徑,自然就是透過 NTFS-3G。然而最近 DR 在讀取掛載後的 Windows\Fonts 字型目錄時,卻出現大量的 IO 錯誤。如果針對其中一個無法讀取的檔案進行測試,例如:

  • ls -l simsun.ttc

 

會發現該檔案是指向「unsupported reparse point」。為了進一步釐清狀況,DR 接著將能夠存取的檔案,與不能存取的檔案進行比對。具體的流程是先卸載分割區,然後分別執行以下指令:

  • sudo ntfsinfo -F /Windows/Fonts/simsunb.ttf /dev/sda2
  • sudo ntfsinfo -F /Windows/Fonts/simsun.ttc /dev/sda2

 

兩者的輸出訊息有一些差異,首先是 simsunb.ttf:

    File attributes:     ARCHIVE (0x00000020)
    Namespace:         POSIX
    Filename:         'simsunb.ttf'

 

再來是 simsun.ttc:

    File attributes:     ARCHIVE SPARSE_FILE REPARSE_POINT (0x00000620)
    Reparse point tag:     0x80000017 (Wof compressed)
    Namespace:         POSIX
    Filename:         'simsun.ttc'

 

於是根據網路上的討論:

 

得知這是因為 Windows 10 對閒置的系統檔案使用了新的壓縮技術,而 NTFS-3G 需要安裝 plugin 才能夠讀取(解壓縮)這些檔案。至於 plugin 的安裝就相當單純了,先確認系統中的 NTFS-3G 版本為 2017.3.23 或更新版本,然後前往以下頁面:

http://jp-andre.pagesperso-orange.fr/advanced-ntfs-3g.html#download

 

下載其中的 systcomp.zip,接著解開來,將 linux-64 目錄下的 ntfs-plugin-80000017.so 放置到新建立的 /usr/lib64/ntfs-3g 目錄裡(這道程序會因平台架構而異)。完成後,重新掛載檔案系統就不會再出現讀取錯誤了。

 

分類: