Mac Mini 上NAS挂载配置指南
This commit is contained in:
@@ -92,6 +92,13 @@ python3 transcode_music.py /mnt/d/music/ /mnt/x/music/20260823
|
|||||||
python3 transcode_music.py /mnt/z/我的音乐 /mnt/x/mp3输出
|
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 挂载配置指南]]
|
||||||
|
|
||||||
就这么简单。下面是完整的参数说明和更多用法。
|
就这么简单。下面是完整的参数说明和更多用法。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
341
knowledgebase/Mac Mini NAS 挂载配置指南.md
Normal file
341
knowledgebase/Mac Mini NAS 挂载配置指南.md
Normal 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 多共享挂载,包含自启动和错误处理逻辑
|
||||||
Reference in New Issue
Block a user