面向 Apple Silicon Mac 的原生 NTFS 图形化管理工具
Important
本项目是 NTFS 卷管理界面,不是独立的 NTFS 文件系统驱动。只读挂载可使用 macOS 系统能力;读写挂载必须依赖已安装的商业 NTFS 驱动,或 macFUSE + ntfs-3g。
NTFS for Mac 是一个使用 SwiftUI 编写的 macOS 应用,参考 Paragon NTFS 的使用方式,将 NTFS 磁盘检测、挂载、卸载和安全推出集中到图形界面中。
项目面向个人使用场景,仅构建 Apple Silicon(arm64)版本。应用通过 Disk Arbitration 监听磁盘事件,不依赖固定间隔轮询;插入或移除 NTFS 磁盘后,卷列表会自动更新。
- 自动检测 NTFS 移动硬盘和 U 盘的接入、移除及状态变化。
- 图形化执行只读挂载、读写挂载、卸载和安全推出。
- 自动识别 Paragon NTFS、Omni NTFS、Tuxera NTFS、macFUSE 与
ntfs-3g。 - 读取商业驱动、macFUSE、
ntfs-3g版本并给出安全更新提示。 - 按优先级选择读写后端:商业驱动、macFUSE FSKit、macFUSE 传统后端。
- 写入前执行只读健康检查;休眠、快速启动残留、脏卷或损坏迹象会阻止写入。
- 提供兼容、均衡、性能三档
ntfs-3g挂载策略。 - 支持全局开关与卷 UUID 双重授权的自动挂载,默认关闭。
- 使用 macOS
SMAppService管理登录启动,不写入 LaunchAgent 或sudoers。 - 提供诊断中心,可查看组件、卷、健康检查和最近日志并复制或导出脱敏报告。
- 诊断刷新会重新探测驱动和 NTFS 卷,不只更新已有快照。
- 默认使用明亮浅色界面,也可选择跟随 macOS 系统外观。
- 在当前卷操作区显示检查、授权、挂载、成功和错误状态。
- 支持窄至 760 pt 的窗口,并提供键盘与辅助功能选中语义。
- 提供“测试开源后端”模式,无需卸载商业驱动即可检查 macFUSE/ntfs-3g。
- 支持从 App 中选择本地 macFUSE
.pkg或.dmg安装文件。 - 菜单栏常驻,可快速查看卷状态并执行常用操作。
- 管理员授权通过 macOS 系统窗口完成,不要求用户复制终端命令。
- 挂载点自动避让重名目录,并带有命令超时保护。
| 优先级 | 后端 | 条件 | 说明 |
|---|---|---|---|
| 1 | Paragon / Omni / Tuxera | 已安装并获得系统授权 | 优先使用商业或系统级 NTFS 驱动 |
| 2 | macFUSE FSKit + ntfs-3g | macOS 15.4+、macFUSE 5+、ntfs-3g | 显式使用 backend=fskit |
| 3 | macFUSE + ntfs-3g | macFUSE 与 ntfs-3g 均可用 | 传统兼容后端 |
没有任何读写后端时,应用仍可使用 macOS 自带能力尝试只读挂载 NTFS 卷。
每次读写挂载都会先经过同一条安全检查流程:
| 结论 | 手动挂载 | 自动挂载 | 典型情况 |
|---|---|---|---|
| 通过 | 继续 | 继续 | 检查工具明确返回正常 |
| 需确认 | 用户确认后继续 | 跳过 | 工具缺失、检查结论不确定、内置磁盘 |
| 已阻止 | 阻止 | 阻止 | Windows 休眠、快速启动残留、脏卷、损坏迹象、物理只读 |
开源后端使用 ntfsfix --no-action,只检查而不修复。商业驱动会优先读取其文件系统包在 Info.plist 中声明的只读验证工具和参数,例如 Paragon 的 fsck_ufsd_NTFS -n。应用不会自动运行修复命令。
| 策略 | 适用场景 | 关键差异 |
|---|---|---|
| 兼容 | 老设备或问题排查 | 保留必要参数,减少可选优化 |
| 均衡 | 日常使用,默认 | 增加 noatime 与 negative_vncache |
| 性能 | 大文件传输 | 在均衡模式上增加 big_writes |
所有策略都会启用 Windows 文件名约束、macOS 扩展属性映射和当前控制台用户 UID/GID。应用不会使用管理员进程的 root UID 作为文件所有者。
自动挂载默认关闭,并且需要同时满足:
- 已打开全局自动挂载开关。
- 已按卷 UUID 单独授权该外接卷。
- 读写后端就绪,介质不是物理只读。
- 写入前健康检查明确通过。
开启总开关或授权单个卷时不会立即接管当前已连接磁盘,设置从该卷下次接入时生效。自动挂载不会绕过 macOS 管理员授权,因此系统仍可能显示密码窗口。
登录启动由 SMAppService.mainApp 管理;请先将 App 放入“应用程序”文件夹。部分 ad-hoc 开发构建可能显示登录项不可用,Developer ID 签名与公证版本更适合长期使用。
- macFUSE 当前推荐基线:
5.3.3或更高。 - ntfs-3g 当前安全基线:
2026.7.7或更高。 - 商业驱动显示检测到的产品版本,但兼容性仍以厂商针对目标 macOS 的声明为准。
这些基线用于本地提示,不会在后台联网下载或静默升级组件。
- Apple Silicon Mac(arm64)。
- App 最低部署目标:macOS 13。
- 主要兼容目标:macOS 26 和 macOS 27。
- Xcode Command Line Tools,包含 Swift 6 编译器。
macOS 27 的实际 NTFS 读写兼容性取决于所安装驱动是否明确支持该系统版本。升级 macOS 前,请先确认 Paragon、Omni、Tuxera 或 macFUSE 的兼容说明。
安装并启用 Paragon NTFS、Omni NTFS 或 Tuxera NTFS 后,应用会优先检测并使用对应驱动。
开源读写方案需要同时安装:
使用 MacPorts 安装 ntfs-3g:
sudo port install ntfs-3gmacFUSE 属于系统组件,安装后可能需要在“系统设置”中允许相关扩展并重启。项目不会静默安装驱动,也不会绕过 macOS 的安全授权。
构建 Release 版本:
./scripts/build.sh构建 Debug 版本:
CONFIGURATION=debug ./scripts/build.sh构建产物位于:
outputs/Mac NTFS.app
构建脚本固定生成 arm64 可执行文件,使用 Swift 6 完整并发检查,并进行本地 ad-hoc 签名与签名验证。
./scripts/test.sh测试不会调用 diskutil 或执行真实磁盘挂载,当前覆盖:
- NTFS 后端优先级。
- 挂载点名称清理与冲突处理。
- 三档挂载参数、FSKit 选项与控制台用户 UID/GID 生成。
- 组件版本比较与安全基线。
- 健康检查结论分类和危险状态阻止。
- 诊断报告主目录脱敏。
- Shell 标准输出读取和超时处理。
Sources/MacNTFSAssistant/
├── AppModel.swift # 应用状态与业务流程
├── AppSettings.swift # 本地挂载与自动挂载偏好
├── ServiceProtocols.swift # 可测试的服务接口
├── DependencyInspector.swift # 驱动和工具探测
├── SafetyModels.swift # 版本、安全与健康检查模型
├── VolumeHealthInterpreter.swift # 健康检查输出分类
├── DiskMonitor.swift # Disk Arbitration 事件监听
├── DiskService.swift # NTFS 卷扫描
├── MountService.swift # 挂载、卸载与推出
├── NTFS3GCommandBuilder.swift # ntfs-3g 挂载脚本生成
├── LoginItemManager.swift # SMAppService 登录项管理
├── DiagnosticReportBuilder.swift # 脱敏诊断报告生成
├── Shell.swift # 命令执行、输出与超时
├── ContentView.swift # 主界面容器
├── SidebarView.swift # 卷列表与依赖状态
├── VolumeDetailView.swift # 卷详情和操作区
├── SettingsView.swift # 挂载、自动化和后端设置
├── DiagnosticsView.swift # 组件与诊断报告界面
├── DetailPanels.swift # 状态、安装和日志面板
└── DesignSystem.swift # 颜色与通用控件样式
NTFS 写入属于高风险文件系统操作。使用读写挂载前请备份重要数据,并避免:
- 写入过程中断电或强制关机。
- 未卸载磁盘就直接拔出设备。
- 同时使用多个 NTFS 驱动接管同一个卷。
- 在文件系统异常时继续写入数据。
本项目无法保证第三方驱动、macFUSE、ntfs-3g 或未来 macOS 版本不会出现兼容问题。请先使用非重要磁盘进行测试。
- 仅支持 Apple Silicon,不提供 Intel 构建。
- 当前构建使用 ad-hoc 签名,尚未进行 Developer ID 签名和 Apple 公证。
- App 本身不包含 macFUSE 或 ntfs-3g 安装包。
- 读写性能和稳定性取决于所选 NTFS 后端。
- 自动挂载仍可能触发 macOS 管理员授权窗口,不会通过修改
sudoers绕过授权。 - 未提供验证工具的商业驱动会要求手动确认,因此不会自动写入挂载。
本仓库目前未附加开源许可证。源代码公开可见不代表授权复制、分发、修改或商业使用。macFUSE、ntfs-3g 以及商业 NTFS 驱动分别受其自身许可证约束。