在 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。