在 macOS 上读写 NTFS 磁盘

本文将介绍一种在 macOS 上读写 NTFS 磁盘的方法,通过它可以方便的在不同系统中传输文件。默认情况下,macOS 是无法向 NTFS 磁盘写入的 —— 这个功能由于种种原因被禁用了。我们使用一种 Hack 的方法将其启用即可。

首先,打开磁盘工具,查看 NTFS 磁盘的设备路径。例如,disk3s1 就对应了 /dev/disk3s1。也可以通过执行

1
diskutil list

来查看 NTFS 磁盘的分区名,也就是 IDENTIFIER 这一列中对应的名字,例如 /dev/disk3s1

如果 macOS 已经通过只读模式挂载了 NTFS 磁盘,还需要先卸载它。在磁盘工具中选中硬盘并将其卸载即可。

随后,根据所使用的不同系统版本,可以使用不同的工具重新挂载 NTFS 磁盘。

macOS Monterey 及更早版本

在 Monterey 和更早的 macOS 上,可以利用系统自带的 mount_ntfs 工具来挂载 NTFS 磁盘。具体方法是,执行以下命令

1
2
sudo mkdir /Volumes/disk3s1
sudo mount -t ntfs -o rw,auto,nobrowse /dev/disk3s1 /Volumes/disk3s1

/dev/disk3s1 根据实际情况替换。这里的 nobrowse 是为了避免挂载上来的还是只读模式,但是它同时会导致磁盘不可见,也就是挂载后不会在桌面和 Finder 中显示,需要手动到 /Volumes 下打开。

如果一切正常的话,就可以愉快的使用了。

macOS Ventura 及之后的版本

在 Ventura 及之后的 macOS 上,mount_ntfs 被移除了,我们需要使用第三方工具才能够实现对 NTFS 磁盘的读写。一个免费的方案是 ntfs-3g,我们可以通过 Homebrew 安装它,然后手动挂载 NTFS 磁盘。具体方法是

1
2
3
brew tap gromgit/homebrew-fuse
brew install --cask macfuse
brew install ntfs-3g-mac

然后执行以下命令

1
2
sudo mkdir /Volumes/disk3s1
sudo ntfs-3g /dev/disk3s1 /Volumes/disk3s1 -olocal -oallow_other -o auto-xattr

这里的设备名同样需要根据实际情况替换。
需要注意,ntfs-3g 第一次启动时需要安装内核拓展,需要在系统偏好设置中允许安装,并重启系统。之后就可以正常使用了。


参考文章:How to Write NTFS Drives on macOS Monterey

本文更新于 2021 年 9 月 14 日:
原先介绍的方法需要修改 /sbin/mount_ntfs,不太优美。笔者找到了一个修改 /etc/fstab 的方法,可以在 macOS Big Sur 上使用。

本文更新于 2022 年 2 月 26 日:
修改 /etc/fstab 的方法在 macOS Monterey 上又不好使了,改为手动 mount

本文更新于 2024 年 1 月 18 日:
macOS Ventura 移除了 mount_ntfs,改为使用 ntfs-3g。