背景
之前在用的NTFS读写工具失效了,想着用AI搓一个能用的和自己去找一个好用的可能耗费的精力差不多
于是花了2小时基于claude Code和 GLM 5 搓了一个NTFS可读写的mac程序
项目地址:NTFS4Mac
技术方案
核心原理
NTFS4Mac 的核心原理很简单:利用开源的 ntfs-3g 驱动通过 fuse-t 框架将NTFS分区以读写模式重新挂载。
- fuse-t: 一个现代化的开源FUSE框架,不需要内核扩展,完美支持Apple Silicon
- ntfs-3g: 成熟稳定的开源NTFS驱动
相比传统的 macFUSE 方案,fuse-t 不需要加载内核扩展,在安全性和稳定性上更有优势。
项目架构
项目提供两种使用方式:
- GUI 应用 - 使用 SwiftUI 开发的原生 macOS 应用
- CLI 工具 - 纯 Bash 脚本实现的命令行工具
NTFS4Mac/
├── NTFS4Mac/ # SwiftUI GUI应用
│ ├── Models/ # 数据模型
│ ├── Services/ # 核心服务(挂载、设备检测)
│ └── Views/ # SwiftUI视图
├── lib/ # CLI脚本库
│ ├── mount.sh # 挂载逻辑
│ ├── devices.sh # 设备列表
│ └── detect.sh # 自动检测
└── ntfs-cli.sh # CLI入口
功能特性
GUI 界面

- 一键挂载: 点击按钮即可将只读NTFS分区重新挂载为读写模式
- 状态指示:
- 绿色 “RW” = 已通过 fuse-t 以读写模式挂载
- 橙色 “RO” = 只读模式(macOS原生)
- 灰色 “–” = 未挂载
- 自动检测: 每3秒自动检测设备变化
- 在Finder中打开: 快速访问已挂载的卷
CLI 命令
ntfs-cli list # 列出所有NTFS设备
ntfs-cli mount disk4s1 # 以读写模式挂载
ntfs-cli unmount disk4s1 # 卸载
ntfs-cli eject disk4s1 # 弹出设备
ntfs-cli restore disk4s1 # 恢复为macOS只读模式
ntfs-cli watch # 自动挂载新插入的NTFS设备
ntfs-cli status # 显示挂载状态
安装
一键安装
curl -fsSL https://raw.githubusercontent.com/zhouyeyu/NTFS4Mac/main/setup.sh | bash
手动安装
- 安装 fuse-t(从 GitHub Releases 下载)
- 给 fuse-t.app 授予完全磁盘访问权限
- 安装 ntfs-3g:
brew tap gromgit/fuse brew install ntfs-3g-mac - 链接 fuse-t 库:
sudo mv /usr/local/lib/libfuse.2.dylib /usr/local/lib/libfuse.2.dylib.bak sudo ln -sf libfuse-t.dylib /usr/local/lib/libfuse.2.dylib
技术实现细节
设备检测
通过解析 diskutil list external physical 的输出来识别外接NTFS设备,并检查 /sbin/mount 输出来判断挂载状态。
挂载流程
- 先卸载现有的挂载点
- 在
/Volumes/下创建挂载目录 - 调用
ntfs-3g进行挂载:ntfs-3g /dev/disk4s1 /Volumes/VolumeName -o auto_xattr,volname=VolumeName,local
权限提升
使用 AppleScript 的 do shell script ... with administrator privileges 来实现友好的GUI权限请求,而非直接使用 sudo。
欢迎在 GitHub 上 Star 和提 Issue!