Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NTFS for Mac icon

NTFS for Mac

面向 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。应用不会自动运行修复命令。

ntfs-3g 挂载策略

策略 适用场景 关键差异
兼容 老设备或问题排查 保留必要参数,减少可选优化
均衡 日常使用,默认 增加 noatimenegative_vncache
性能 大文件传输 在均衡模式上增加 big_writes

所有策略都会启用 Windows 文件名约束、macOS 扩展属性映射和当前控制台用户 UID/GID。应用不会使用管理员进程的 root UID 作为文件所有者。

自动挂载与登录启动

自动挂载默认关闭,并且需要同时满足:

  1. 已打开全局自动挂载开关。
  2. 已按卷 UUID 单独授权该外接卷。
  3. 读写后端就绪,介质不是物理只读。
  4. 写入前健康检查明确通过。

开启总开关或授权单个卷时不会立即接管当前已连接磁盘,设置从该卷下次接入时生效。自动挂载不会绕过 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 后,应用会优先检测并使用对应驱动。

开源后端

开源读写方案需要同时安装:

  1. macFUSE
  2. ntfs-3g

使用 MacPorts 安装 ntfs-3g:

sudo port install ntfs-3g

macFUSE 属于系统组件,安装后可能需要在“系统设置”中允许相关扩展并重启。项目不会静默安装驱动,也不会绕过 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 驱动分别受其自身许可证约束。

About

面向 Apple Silicon Mac 的原生 NTFS 图形化管理工具

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.