NTFS-3G - Arch Linux 中文维基

跳至內容

# NTFS-3G

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 NTFS-3G，最近一次同步於 2019-10-06，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- File systems
- NTFS

NTFS-3G 是微軟 NTFS 的一個開源實現，同時支持讀和寫。NTFS-3G 開發者使用 FUSE 文件系統輔助開發並幫助實現可移植性。

## 安裝

安裝 ntfs-3g包 軟體包。

## 手動掛載

有兩種手動掛載 NTFS 分區的方法。傳統方法是：

    # mount /dev/你的_NTFS_分区 /mount/point

在 Arch 中不需要顯式指定掛載類型 `ntfs-3g`。mount 命令默認會使用 `/usr/bin/mount.ntfs`（在安裝了 ntfs-3g 軟體包之後被符號連接到 `/usr/bin/ntfs-3g`）。

第二種方法是直接調用 `ntfs-3g`：

    # ntfs-3g /dev/你的_NTFS_分区 /mount/point

可用選項參見 ntfs-3g(8)。

## 格式化

警告：與往常一樣，仔細檢查設備路徑。

    # mkfs.ntfs -Q -L 卷标 /dev/sdXY

注意：`-Q` 通過不向驅動器填充零且不檢查壞扇區來加速格式化。

## 配置

你的 NTFS 分區可以被配置成自動掛載，或者預先配置好來安裝你想要的方式掛載。配置可以在文件系統配置文件 fstab 中指定或者使用 udev 規則。

### 默認配置

使用默認配置會在啟動時掛載 NTFS 分區。使用這種方法，如果掛載位置的父文件夾有合適的用戶或組權限，用戶或組就可以讀寫這個分區。

把以下內容寫入`/etc/fstab`:

    # <file system>  <dir>  <type>  <options>  <dump>  <pass>
    /dev/NTFS-part  /mnt/windows  ntfs-3g   defaults		  0       0

### Linux權限兼容

Linux系統通常將目錄的權限設為755，將文件的權限設為644。如果您經常使用NTFS分區，建議保留這些權限。下面的示例將上述權限分配給普通用戶：

    # 安装具有 linux 兼容权限的内部 Windows 分区，即权限755用于目录（dmask=022）和权限644用于文件（fmask=133）
    /dev/NTFS-partition  /mnt/windows  ntfs-3g uid=username,gid=users,dmask=022,fmask=133 0 0

或者，如果Windows上的權限對你很重要，你可以使用 ntfsusermap(8) 命令將 Windows 用戶 映射到 Linux 用戶上。ntfs-3g將會處理權限的翻譯。

### 允許組/用戶

在`/etc/fstab`中，您還可以指定其他選項，如允許訪問（讀取）分區的用戶。例如，您允許`users`組中的人員具有訪問權限：

    /dev/NTFS-partition  /mnt/windows  ntfs-3g   gid=users,umask=0022    0       0

默認情況下, 上述命令僅為root用戶啟用寫支持。若要為其他用戶啟用，必須顯示指定應授予寫入權限的用戶。使用`uid`參數加您的用戶名以啟用用戶寫支持：

    /dev/NTFS-partition  /mnt/windows  ntfs-3g   uid=username,gid=groupid,umask=0022    0       0

如果您在一個單用戶計算機上運行，您可能希望自己擁有該文件系統並授予所有可能的權限：

    /dev/NTFS-partition  /mnt/windows  ntfs-3g   uid=username,gid=groupid    0       0

### 基本的 ntfs-3g 選項

對大多數人來說，上面的設置已經足夠了。這是一些其他的對於不同的Linux文件系統的通用選項。完整列表參見ntfs-3g(8) § OPTIONS

umask
  umask 是一個嵌入的 shell 命令，可以自動設置新創建的文件的權限。對於 Arch Linux，對於 root 和 user 默認的 umask 是 0022。設為 0022 將使新目錄有目錄權限755，新文件有權限644。你可以在這裡查看更多關於 umask 權限的信息：。
noauto
  如果設置了 `noauto`，`/etc/fstab` 中的 NTFS 條目不會在啟動時自動掛載。
uid
  用戶 id 號碼。這允許指定用戶具有完全的訪問權限。你的uid可以用 `id` 命令獲得。
fmask and dmask
  與 `umask` 類似但是分別定義的是文件和目錄的權限。

下面的選項只對ntfs-3g有用：

windows_names
  阻止創建擁有不被Windows允許的名字的文件、目錄以及擴展屬性的。

### 允許用戶掛載

默認情況下，如果ntfs-3g在掛載一個塊設備，ntfs-3g需要 root 權限運行, 即使在`/etc/fstab`中有`user`選項。有關詳細信息，請參閱 ntfs-3g-faq。即使在fstab裡面有了`user`選項，ntfs-3g仍然需要root權限。

注意：

- ntfs-3g包包沒有內置FUSE支持。使用ABS重新構建包以啟用FUSE支持。
  - 完整的解釋是， "user" and "users" work via a setuid `mount` not dropping its setuid privilege so that the block device can be used without root. However, ntfs-3g has a hard-coded restriction in ntfs-3g that bails on setuid if an external libfuse is used.
  - 並沒有好的技術原因 for not allowing setuid for external FUSE besides a mistrust of the library. This patch removes the said restriction.
- 卸載權限似乎存在問題，因此如果需要卸載文件系統，則仍需要 root 權限。您還可以使用`fusermount -u /mnt/mountpoint`來卸載文件系統並避免使用root權限。此外, 如果在`/etc/fstab`中使用`users`（複數）而不是`user`選項，您可以使用`mount`和`umount`命令裝卸載文件系統。

對於非塊設備，比如普通的鏡像，命令行下的 ntfs-3g 應該可以在普通用戶權限下照常使用，因為當無法與內核直接交互時，the underlying FUSE calls 會重定向到 setuid-root fusermount 。

## 調整NTFS分區大小

注意：對重要數據請提前做好備份！

大多數已購買的系統已經有Windows安裝在其上，有些人希望在進行 Arch Linux 安裝時不要完全擦除它。因此，在某些方面，調整現有 Windows 分區的大小以為 Linux 分區騰出空間是很有用的。這經常通過Live CD或可引導的USB快閃記憶體驅動器完成。

對於Live CD，典型的創建過程是下載ISO文件，刻錄到CD，然後從它啟動。InfraRecorder是一個免費（通過GPL3）的Windows上的CD/DVD刻錄應用程式，這是很合適的方法。如果您想要使用可引導的USB驅動器，請參閱USB flash installation media中創建可引導的USB驅動器的方法。

有許多可引導的CD/USB映像可用。此列表不是詳盡無遺的, 但是是個很好的開始：

- GParted — 為x86計算機設計的小型GNU/Linux發行版。允許你使用最新版GParted應用的所有功能。不包括額外的軟體包System Rescue CD，並且磁碟加密可能不受支持。

  http://gparted.sourceforge.net/ || gparted包

- Parted Magic — gparted包。使用分區編輯器可以調整大小、複製和移動分區。您可以增長或收縮您的 C: 驅動器，為新作業系統創建空間。嘗試從丟失的分區中進行數據搶救。

  https://partedmagic.com/ ||

請注意, 調整 NTFS 分區大小的重要程序包括 ntfs-3g 和類似於 (G)parted 或 fdisk 的實用程序，由util-linux包包提供。除非您是高級用戶，否則最好使用像 GParted 這樣的工具來執行任何調整大小操作，以儘量減少由於用戶錯誤而導致數據丟失的可能性。

如果您的系統上已經安裝了 Arch Linux，並且只想調整現有 NTFS 分區的大小，則可以使用 parted 和 ntfs-3g 包來完成。或者，在安裝 GParted 包後, 可以使用 GParted GUI，其本質是調用 ntfsresize(8) 命令

## 疑難解答

### 已壓縮的文件

若您在掛載一個Windows 10的NTFS文件系統，並且讀取其中的文件和文件夾時出現以下情形：

1. 出現連結到「不支持的重解析點」（unsupported reparse point）的損壞的符號連結，或
2. 出現錯誤信息：`cannot access some_file: Input/output error` （此時`Could not load plugin /usr/lib64/ntfs-3g/ntfs-plugin-80000017.so: Success`在日誌中)

其原因是NTFS-3G默認不支持某些類型的重解析點。一些插件可用於部分特性的兼容性，如：

- 系統壓縮
- 文件去重
- OneDrive文件

點擊此處查看更多細節。

系統壓縮可以壓縮特定的文件。目前由兩種可能的解決方案。

你可以安裝ntfg-3g的 ntfs-3g-system-compressionAUR 插件. 目前插件只支持讀取，並不支持寫入，例如創建文件便不被支持。

或者，在Windows 10內禁用壓縮：

    C:\WINDOWS\system32> compact.exe /CompactOS:never

### 損壞的NTFS文件系統

如果NTFS文件系統有錯，ntfs-3g會以只讀方式掛載它。要修復NTFS系統，啟動Windows並使用它的磁碟檢查程序，chkdsk。考慮到 ntfsfix 只能修復一些錯誤，如果失敗，chkdsk 可能會成功。

想要修復 NTFS 文件系統，該設備必須已經被卸載。例如，想要修復 `/dev/sda2` 中的 NTFS 文件系統：

    # umount /dev/sda2
    # ntfsfix /dev/sda2
    Mounting volume... OK
    Processing of $MFT and $MFTMirr completed successfully.
    NTFS volume version is 3.1.
    NTFS partition /dev/sda2 was processed successfully.
    # mount /dev/sda2

如果順利的話，該分區已經可以寫入了。

### WIndows分區下的中文文件亂碼

見簡體中文本地化#Windows 分區下的中文文件名亂碼

### 元數據保存在Windows中，拒絕掛載

當與 Windows 8 或 10雙引導時,試圖掛載一個可見的Windows可能會出現如下錯誤:

    The disk contains an unclean file system (0, 0).
    Metadata kept in Windows cache, refused to mount.
    Failed to mount '/dev/sdc1': Operation not permitted
    The NTFS partition is in an unsafe state. Please resume and shutdown
    Windows fully (no hibernation or fast restarting), or mount the volume
    read-only with the 'ro' mount option.

問題是因為Windows 8中引入"快速啟動"特性。啟用快速啟動後，所有分區的元數據的一部分被還原到它們在以前關閉的狀態。因此，在 Linux 上所做的更改可能會丟失。這會發生在任何選擇"關閉"或"休眠" NTFS 分區的Windows 8 或 10 下。然而，通過選擇"重新啟動"關閉 Windows 是安全的。

要啟用對其他作業系統的系統分區寫入，請確保禁用快速重啟。通過以管理員身份執行命令:

    powercfg /h off

你可以在控制面板 >硬體與聲音> 電源選項 > 系統設置 > 當電源鍵按下時做什麼， 去掉勾選啟用快速啟動

### 刪除Windows休眠元數據

作為一個以上乾淨關機方法的替代方法，有一個辦法可以徹底刪除休眠後保存的 NTFS 元數據。這個方法只適用於當你不能或不想啟動至 Windows，並希望它完全關閉。這個辦法是在使用 ntfs-3g包 提供的 ntfsfix。

    # ntfsfix /dev/你的NTFS分区

警告：這個方法意味著已保存的 Windows 會話將徹底丟失。使用該選項後果自負。

### 掛載失敗

如果你按本指南內容操作也無法掛載你的 NTFS 分區，可以嘗試一下在 `fstab` 中的所有 ntfs 分區裡加上 UUID。參見示例.

### Windows mount failure

Windows 不會識別一個沒有相應的分區類型的NTFS分區。創建一個與 Windows 共用的NTFS分區時的常見陷阱就是忘記設置分區類型為 NTFS。 見 fdisk 或者分區工具。

## 測試版特性 & 發布

有一個關於「高級特性」的網頁，由 Jean-Pierre André ，NTFS-3G的作者之一維護。它提供了:

- 關於在 NTFS-3G 中處理一些 NTFS 特性的文檔，包括：
  - 符號連結，連接點，和一些其他的重解析點。
  - 擴展屬性 (xattrs) as an interface for ADS streams and special NTFS attributes
  - 安全和權限，包括 POSIX 映射和 ACL 映射。
- 用於解析特殊重解析點的插件。 文檔中提供的信息也適用於 Tuxera 版本 (2017.3.23)。系統壓縮插件和去重插件也適用於 Tuxera 版本，但 OneDrive 插件需要需要一些只在高級發布版可用的調整項。 當然，這個網頁目前由 J.-P. André撰寫。一個舊版的網頁可在 tuxera.com被找到；它連結到 OpenIndiana 的頁面， 又連結到 J.-P. André 的網。

## 參見

- ntfs-3g(8)

分類：​

- FUSE

NTFS-3G
新增話題