# auto-mount-ntfs **Repository Path**: rikh/auto-mount-ntfs ## Basic Information - **Project Name**: auto-mount-ntfs - **Description**: NTFS 磁盘自动挂载/卸载系统。支持热插拔自动挂载、卷标命名、同名处理、自动修复、安全弹出、开机扫描。适用于挂载大量 NTFS 盘的 Ubuntu 服务器。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-28 - **Last Updated**: 2026-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NTFS 磁盘热插拔自动挂载系统 v1.0 ## 📦 适用环境 - **系统:** Ubuntu 24.04 (noble) amd64+ - **场景:** 内网离线环境,200 张 NTFS 磁盘热插拔 - **硬件:** HBA/SAS 背板(smartpqi)、普通 SATA/USB 均可 - **v2.0 核心改进:** systemd 定时器接管挂载,绕过 AppArmor 对 udev FUSE 的限制 ## 🚀 快速安装 ```bash tar -xzf auto-mount-ntfs.tar.gz cd auto-mount-ntfs chmod +x *.sh sudo ./install.sh ``` 安装时自动: - 检测当前用户 uid/gid - 停用 udisks2(避免挂载冲突) - 启用 `user_allow_other`(FUSE 权限) - 安装 systemd 定时器(每秒扫描新盘) ## ⚙️ 工作原理 ``` v2.0 混合方案: 挂载: systemd timer (auto-mount-scan.timer) ├─ 每秒扫描 /dev/sd*1 ├─ 检测未挂载的 NTFS 盘 → ntfs-3g 挂载到 /media/{卷标}/ └─ 绕过 AppArmor: systemd context 不受 FUSE 限制 卸载: udev REMOVE 事件 ├─ 拔盘 → udev 触发 → sync + umount -l └─ umount 不需要 FUSE 权限,AppArmor 不影响 ``` ## 🛠 可用命令 ```bash ntfs-list # 📊 表格概览:卷标/容量/已用/剩余/使用率 ntfs-eject 备份盘 # ⏏️ 安全弹出(按卷标名) ntfs-eject sdb1 # ⏏️ 安全弹出(按设备名) ntfs-repair # 🔍 诊断 7 项 ntfs-repair --fix # 🔧 诊断 + 自动修复 # systemd 控制 systemctl status auto-mount-scan.timer # 定时器状态 sudo systemctl restart auto-mount-scan.timer # 重启定时器 sudo /usr/local/bin/auto-mount-scan.sh # 手动扫描挂载 ``` ## 📋 文件清单 | 文件 | 用途 | |:--|:--| | `install.sh` | 一键安装脚本 | | `auto-mount-scan.sh` | 扫描 + 挂载脚本(systemd 定时调用)| | `auto-mount-scan.service` | systemd oneshot 服务 | | `auto-mount-scan.timer` | systemd 定时器(每秒触发)| | `auto-umount-ntfs.sh` | udev 卸载脚本 | | `99-auto-mount-ntfs.rules` | udev 规则(仅 REMOVE)| | `ntfs-list.sh` | 表格概览工具 | | `ntfs-eject.sh` | 安全弹出工具 | | `repair.sh` | 诊断修复工具 | | `debs/` | ntfs-3g + FUSE 离线安装包 | ## 🗑️ 卸载 ```bash sudo systemctl disable --now auto-mount-scan.timer sudo rm /etc/systemd/system/auto-mount-scan.{service,timer} sudo rm /etc/udev/rules.d/99-auto-mount-ntfs.rules sudo udevadm control --reload-rules sudo systemctl daemon-reload sudo rm /usr/local/bin/auto-mount-scan.sh sudo rm /usr/local/bin/auto-umount-ntfs.sh sudo rm /usr/local/bin/ntfs-{list,eject,repair} ``` ## 🔧 故障排查 ```bash # 定时器不跑 sudo systemctl status auto-mount-scan.timer sudo journalctl -u auto-mount-scan.service --since "5 min ago" # 盘不挂载 sudo /usr/local/bin/auto-mount-scan.sh # 手动跑一次看报错 tail -f /var/log/auto-mount-ntfs.log # 看日志 # "Operation not permitted" # → 检查 /etc/fuse.conf 是否有 user_allow_other # → 检查 udisks2 是否已停用 # ntfs-repair --fix 一键诊断修复 ```