|
|
我的目前的设备搭配思路直接拉满!把飞牛当“前端工具人”,群晖当“专属仓库”,完美实现不占飞牛一丝空间,还能把飞牛的功能拉满,流畅度和存储需求双在线~
说多了都是泪,之前折腾过各种NAS系统,踩坑踩得脚底板疼,最后果断入手群晖DS420+,4块16T硬盘组RAID5,稳如老狗运行好几年,最近飞牛不是火嘛,忍不住跟风冲了一波,海鲜市场淘到M920X+8100全固配置,目前正按“前端飞牛+仓库群晖”的思路调试,实测体验丝滑不卡顿,折腾值直接拉满!
话不多说,直接上最终的脚本!复制就能用,不用瞎折腾👇
- #!/bin/sh
- # 飞牛OS NAS自动挂载脚本
- # 说明:所有敏感信息已脱敏,实际使用时需替换为自己的真实信息,否则无法正常挂载
- NAS_IP="192.168.xxx.xxx" # 替换为你的群晖NAS局域网IP(如192.168.1.100,可在群晖控制面板-网络中查看)
- USER="xxx" # 替换为你的群晖登录账号(建议用非管理员账号,更安全)
- PASS="xxx" # 替换为你的群晖登录密码(注意密码中的特殊符号需原样输入,不可遗漏)
- SHARE="xxxNAS" # 替换为你的群晖共享文件夹名称(需提前在群晖中创建并开启共享权限)
- LOG="/var/log/mount_nas.log" # 固定配置|挂载日志保存路径,方便后续排查挂载失败问题
- DIR_NAME="大容量空间" # 固定配置|飞牛本地挂载目录名称,无需修改
- # 固定配置|将脚本运行日志输出到指定日志文件,后续出问题可查看日志排查
- exec >> $LOG 2>&1
- echo "========================================"
- echo "[$(date)] 开机挂载启动 " # 日志标记|记录挂载脚本启动时间
- # 固定配置|延迟60秒启动挂载,避免飞牛开机后网络、系统未就绪导致挂载失败(实测最优延迟时间)
- sleep 60
- # 固定配置|循环等待/vol3目录就绪(飞牛OS存储空间自行修改,必须等待其就绪才能挂载)
- # 每2秒检查一次,直到/vol3目录存在再继续执行后续步骤
- while [ ! -d "/vol3" ]; do sleep 2; done
- echo "[$(date)] vol3 已就绪" # 日志标记|记录/vol3目录就绪时间
- # 固定配置|循环检测群晖NAS网络连通性,避免网络未通导致挂载失败
- # 每2秒ping一次群晖IP,ping通(网络就绪)后再继续执行
- until ping -c1 -W1 $NAS_IP >/dev/null 2>&1; do sleep 2; done
- echo "[$(date)] 网络已就绪" # 日志标记|记录网络就绪时间
- # 核心逻辑|遍历飞牛系统中UID在1000-1099之间的用户(飞牛普通用户默认UID范围)
- # 为每个符合条件的用户创建专属挂载目录,并挂载群晖对应用户的共享文件夹
- getent passwd | awk -F: '$3>=1000 && $3<=1099 {print $3":"$4}' | while IFS=: read uid gid; do
- local_dir="/vol3/$uid/$DIR_NAME" # 飞牛本地挂载路径(每个用户单独目录,避免权限冲突)
- remote="//$NAS_IP/$SHARE/$uid" # 群晖远程共享路径(与飞牛用户UID对应,实现用户隔离)
- tmp="/tmp/tmp_mount" # 临时挂载目录,用于临时挂载群晖共享根目录
- # 跳过已挂载的目录,避免重复挂载导致报错
- mountpoint -q "$local_dir" && echo "✅ 已挂载: $local_dir" && continue
- # 创建飞牛本地挂载目录(若不存在则自动创建,无需手动操作)
- mkdir -p "$local_dir"
- # 临时挂载群晖共享根目录,确保群晖中对应用户的子目录存在(避免挂载时目录不存在报错)
- mkdir -p "$tmp"
- mount -t cifs "//$NAS_IP/$SHARE" "$tmp" -o username="$USER",password="$PASS",vers=3.0,noserverino
- mkdir -p "$tmp/$uid" # 在群晖共享根目录下,创建与飞牛用户UID对应的子目录
- umount "$tmp" # 卸载临时挂载的共享根目录
- # 正式挂载:将群晖对应用户的共享目录,挂载到飞牛当前用户的专属目录
- # vers=3.0:固定CIFS协议版本,适配飞牛OS与群晖,避免协议不兼容报错
- # uid="$uid",gid="$gid":设置挂载目录的所属用户和组,避免权限不足无法访问
- # iocharset=utf8:支持中文目录和文件名,避免乱码
- # cache=none:关闭缓存,提升文件读写流畅度,适配NAS存储场景
- mount -t cifs "$remote" "$local_dir" -o username="$USER",password="$PASS",vers=3.0,uid="$uid",gid="$gid",iocharset=utf8,cache=none
-
- # 输出挂载结果,成功/失败一眼区分,方便排查问题
- [ $? -eq 0 ] && echo "✅ 挂载成功: $local_dir" || echo "❌ 挂载失败: $local_dir"
- done
- # 清理临时挂载目录,避免占用飞牛临时空间
- rm -rf "$tmp"
- echo "[$(date)] 挂载完成" # 日志标记|记录所有用户挂载完成时间
- echo "========================================"
- # ==============================================
- # 单独挂载额外目录(固定配置,无需修改路径)
- # 说明:专门挂载群晖photo目录到飞牛指定路径,用于照片备份/查看,适配家庭场景
- # ==============================================
- echo "[$(date)] 开始单独挂载额外目录"
- # 配置单独挂载的目录信息(固定路径,无需修改,实际使用时确保群晖存在photo共享目录)
- EXTRA_REMOTE="//$NAS_IP/photo" # 群晖额外共享目录(固定为photo,用于存储照片)
- EXTRA_LOCAL="/vol3/1000/DS_photo" # 飞牛本地额外挂载路径(固定,与UID=1000用户对应)
- EXTRA_UID=1000 # 固定UID|对应飞牛默认管理员用户,避免权限报错
- EXTRA_GID=1001 # 固定GID|对应飞牛默认用户组,与UID匹配
- # 检查额外目录是否已挂载,未挂载则执行挂载(避免重复挂载)
- if ! mountpoint -q "$EXTRA_LOCAL"; then
- # 创建飞牛本地额外挂载目录(若不存在则自动创建)
- mkdir -p "$EXTRA_LOCAL"
- # 正式挂载额外目录(参数与主挂载一致,确保兼容性和权限正常)
- mount -t cifs "$EXTRA_REMOTE" "$EXTRA_LOCAL" -o username="$USER",password="$PASS",vers=3.0,uid="$EXTRA_UID",gid="$EXTRA_GID",iocharset=utf8,cache=none
- # 输出额外目录挂载结果,方便排查问题
- if [ $? -eq 0 ]; then
- echo "✅ 额外目录挂载成功: $EXTRA_REMOTE → $EXTRA_LOCAL"
- else
- echo "❌ 额外目录挂载失败: $EXTRA_LOCAL"
- fi
- else
- echo "✅ 额外目录已挂载: $EXTRA_LOCAL" # 若已挂载,直接提示,跳过挂载步骤
- fi
- echo "[$(date)] 额外目录挂载处理完成" # 日志标记|记录额外目录挂载完成时间
- echo "========================================"
复制代码- chmod +x /opt/mount_nas.sh
- /opt/mount_nas.sh
复制代码 最后用systemctl方式开机自动运行
|
|