diff --git a/Project/transcode_music/transcode_music.md b/Project/transcode_music/transcode_music.md index 244dba5e..692caa2d 100644 --- a/Project/transcode_music/transcode_music.md +++ b/Project/transcode_music/transcode_music.md @@ -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 挂载配置指南]] + 就这么简单。下面是完整的参数说明和更多用法。 --- diff --git a/knowledgebase/Mac Mini NAS 挂载配置指南.md b/knowledgebase/Mac Mini NAS 挂载配置指南.md new file mode 100644 index 00000000..96996944 --- /dev/null +++ b/knowledgebase/Mac Mini NAS 挂载配置指南.md @@ -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 + + + + + Label + com.nas-mounts + ProgramArguments + + /Users/weishen/Library/LaunchAgents/nas-mounts.sh + + RunAtLoad + + KeepAlive + + + +``` + +--- + +## 四、常见操作 + +### 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 多共享挂载,包含自启动和错误处理逻辑 \ No newline at end of file