Mac Mini 上NAS挂载配置指南

This commit is contained in:
2026-08-23 20:04:27 +08:00
parent a15b1820a6
commit 1b65495f25
2 changed files with 348 additions and 0 deletions

View File

@@ -92,6 +92,13 @@ python3 transcode_music.py /mnt/d/music/ /mnt/x/music/20260823
python3 transcode_music.py /mnt/z/我的音乐 /mnt/x/mp3输出
```
``` shell
# 4. Macmini上的命令路径(NAS上 /volume2/navidrome已经成功mount):
python3 transcode_music.py ~/MyMusic ~/mnt/volume2/navidrome/music/20260823
```
[[Mac Mini NAS 挂载配置指南]]
就这么简单。下面是完整的参数说明和更多用法。
---

View File

@@ -0,0 +1,341 @@
#mac-min #nas #mount #Configuration
## 快速概览
- **NAS IP**: `192.168.3.17`
- **用户**: `shenwei`
- **NAS 路径**:
- Volume1: `//shenwei@192.168.3.17/[share_name]`
- Volume2: `//shenwei@192.168.3.17/[share_name]`
- **本地挂载基路径**: `~/mnt/volume1/` 和 `~/mnt/volume2/`
---
## 一、脚本位置和自启动配置
### 关键文件位置
|文件|路径|说明|
|---|---|---|
|挂载脚本|`~/Library/LaunchAgents/nas-mounts.sh`|执行具体挂载命令的 Shell 脚本|
|LaunchAgent 配置|`~/Library/LaunchAgents/com.nas-mounts.plist`|系统自启动配置|
|挂载日志|`~/.nas-mounts.log`|挂载执行日志,用于问题诊断|
### 查看当前挂载状态
```bash
# 查看所有 NAS 挂载
mount | grep mnt/volume
# 或用 df 查看更清晰的统计
df -h | grep volume
```
---
## 二、nas-mounts.sh 脚本内容
### 脚本位置
```
~/Library/LaunchAgents/nas-mounts.sh
```
### 完整脚本内容
```bash
#!/bin/bash
NAS_USER="shenwei"
NAS_PASS="zmkm99zmkm00"
NAS_HOST="192.168.3.17"
# 日志文件
LOG_FILE="$HOME/.nas-mounts.log"
echo "=== NAS Mount Start $(date) ===" >> "$LOG_FILE"
# 函数:安全挂载
mount_share() {
local share=$1
local mount_point=$2
# 创建挂载点
mkdir -p "$mount_point"
# 检查是否已经挂载
if mount | grep -q "$mount_point"; then
echo "✓ Already mounted: $share" | tee -a "$LOG_FILE"
return 0
fi
# 如果目录非空,尝试卸载再删除
if [ -n "$(ls -A "$mount_point" 2>/dev/null)" ]; then
echo "Cleaning up $mount_point..." >> "$LOG_FILE"
umount -f "$mount_point" 2>/dev/null
rm -rf "$mount_point"
mkdir -p "$mount_point"
fi
# 尝试挂载
echo "Mounting $share to $mount_point..." >> "$LOG_FILE"
if mount_smbfs -o nosuid,nodev "//${NAS_USER}:${NAS_PASS}@${NAS_HOST}/$share" "$mount_point" 2>> "$LOG_FILE"; then
echo "✓ Successfully mounted: $share" | tee -a "$LOG_FILE"
else
echo "✗ FAILED to mount: $share" | tee -a "$LOG_FILE"
return 1
fi
}
# Volume1 mounts
mount_share "photo" "$HOME/mnt/volume1/photo"
mount_share "video" "$HOME/mnt/volume1/video"
mount_share "openclaw" "$HOME/mnt/volume1/openclaw"
mount_share "obsidian" "$HOME/mnt/volume1/obsidian"
mount_share "download" "$HOME/mnt/volume1/download"
mount_share "software" "$HOME/mnt/volume1/software"
mount_share "music" "$HOME/mnt/volume1/music"
mount_share "Shen%20Wei" "$HOME/mnt/volume1/home"
mount_share "homes" "$HOME/mnt/volume1/homes"
mount_share "docker" "$HOME/mnt/volume1/docker"
# Volume2 mounts
mount_share "work" "$HOME/mnt/volume2/work"
mount_share "knowledgebase" "$HOME/mnt/volume2/knowledgebase"
mount_share "backup" "$HOME/mnt/volume2/backup"
mount_share "gitea-share" "$HOME/mnt/volume2/gitea-share"
mount_share "system" "$HOME/mnt/volume2/system"
mount_share "navidrome" "$HOME/mnt/volume2/navidrome"
echo "=== NAS Mount End $(date) ===" >> "$LOG_FILE"
```
---
## 三、com.nas-mounts.plist 自启动配置
### 文件位置
```
~/Library/LaunchAgents/com.nas-mounts.plist
```
### 配置内容
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.nas-mounts</string>
<key>ProgramArguments</key>
<array>
<string>/Users/weishen/Library/LaunchAgents/nas-mounts.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
</dict>
</plist>
```
---
## 四、常见操作
### 1. 手动执行挂载脚本
```bash
# 确保脚本有执行权限
chmod +x ~/Library/LaunchAgents/nas-mounts.sh
# 直接运行脚本
~/Library/LaunchAgents/nas-mounts.sh
# 查看执行结果日志
cat ~/.nas-mounts.log
```
### 2. 重新加载自启动配置
```bash
# 卸载当前配置
launchctl unload ~/Library/LaunchAgents/com.nas-mounts.plist
# 重新加载配置(会立即执行挂载)
launchctl load ~/Library/LaunchAgents/com.nas-mounts.plist
# 查看状态
launchctl list | grep nas-mounts
```
### 3. 卸载所有 NAS 挂载
```bash
# 卸载所有 volume1 和 volume2 的挂载
umount -f ~/mnt/volume1/* 2>/dev/null
umount -f ~/mnt/volume2/* 2>/dev/null
# 验证
mount | grep mnt/volume
```
### 4. 清理并重新挂载
```bash
# 完全清理目录
rm -rf ~/mnt/volume1 ~/mnt/volume2
# 重新创建目录(脚本会自动创建,或手动创建)
mkdir -p ~/mnt/volume1
mkdir -p ~/mnt/volume2
# 手动执行脚本
~/Library/LaunchAgents/nas-mounts.sh
# 验证
df -h | grep volume
```
---
## 五、增加新的共享目录
### 步骤 1:确认 NAS 上的共享名称
在 Synology DSM 上查看:
- 控制面板 → 共享文件夹 → 找到要共享的文件夹名称
- 例如:`new_share`
### 步骤 2:编辑 nas-mounts.sh 脚本
```bash
nano ~/Library/LaunchAgents/nas-mounts.sh
```
### 步骤 3:添加新的 mount_share 调用
在对应的 Volume 部分添加一行。例如在 Volume2 部分添加:
```bash
# Volume2 mounts
# ... 现有的其他挂载 ...
mount_share "new_share" "$HOME/mnt/volume2/new_share" # ← 添加这一行
```
### 步骤 4:保存并测试
```bash
# 保存:Ctrl+O, Enter, Ctrl+X
# 测试执行
~/Library/LaunchAgents/nas-mounts.sh
# 查看日志确认成功
cat ~/.nas-mounts.log | grep new_share
# 验证挂载
df -h | grep new_share
```
### 步骤 5:重新加载 LaunchAgent
```bash
launchctl unload ~/Library/LaunchAgents/com.nas-mounts.plist
launchctl load ~/Library/LaunchAgents/com.nas-mounts.plist
```
---
## 六、问题诊断
### 挂载失败的常见原因
|错误|原因|解决方案|
|---|---|---|
|`No such file or directory`|NAS 上不存在该共享或权限不足|检查 NAS 的共享文件夹配置和权限|
|`File exists`|目录已挂载或目录非空|卸载旧挂载,删除目录后重试|
|`Permission denied`|用户无访问权限|在 NAS 的共享文件夹权限中添加用户访问权限|
|`Connection refused`|NAS 不响应或网络问题|检查 NAS IP 和网络连接|
### 快速诊断
```bash
# 1. 查看所有 NAS 挂载
mount | grep mnt/volume
# 2. 查看挂载日志
cat ~/.nas-mounts.log
# 3. 测试 NAS 连接
ping 192.168.3.17
# 4. 列出 NAS 上所有可访问的共享
smbclient -L //192.168.3.17 -U shenwei -p zmkm99zmkm00
# 5. 手动尝试挂载单个共享
mount_smbfs "//shenwei:zmkm99zmkm00@192.168.3.17/share_name" ~/mnt/test
```
---
## 七、特殊情况处理
### 共享名称包含空格
如果共享名称是 `Shen Wei`,需要用 URL 编码 `%20`:
```bash
mount_share "Shen%20Wei" "$HOME/mnt/volume1/home"
```
### 同一共享挂载到多个位置冲突
如果发现某个共享已在 `/Volumes/` 下挂载:
```bash
# 查看已挂载位置
mount | grep share_name
# 卸载原位置
umount /Volumes/share_name
# 或创建符号链接而非重复挂载
ln -s /Volumes/share_name ~/mnt/volume2/share_name
```
---
## 八、快速参考命令
```bash
# 查看当前挂载
mount | grep mnt/volume
# 手动执行脚本
~/Library/LaunchAgents/nas-mounts.sh
# 查看日志
cat ~/.nas-mounts.log
# 卸载所有
umount -f ~/mnt/volume1/* ~/mnt/volume2/* 2>/dev/null
# 编辑脚本
nano ~/Library/LaunchAgents/nas-mounts.sh
# 编辑 LaunchAgent 配置
nano ~/Library/LaunchAgents/com.nas-mounts.plist
# 重新加载 LaunchAgent
launchctl unload ~/Library/LaunchAgents/com.nas-mounts.plist
launchctl load ~/Library/LaunchAgents/com.nas-mounts.plist
```
---
## 版本历史
- **v1.0** (2026-08-23):完成初始配置,支持 Volume1 和 Volume2 多共享挂载,包含自启动和错误处理逻辑