收起左侧

飞牛与群晖设备搭配实操分享

0
回复
15
查看
[ 复制链接 ]

1

主题

0

回帖

0

牛值

江湖小虾

我的目前的设备搭配思路直接拉满!把飞牛当“前端工具人”,群晖当“专属仓库”,完美实现不占飞牛一丝空间,还能把飞牛的功能拉满,流畅度和存储需求双在线~
说多了都是泪,之前折腾过各种NAS系统,踩坑踩得脚底板疼,最后果断入手群晖DS420+,4块16T硬盘组RAID5,稳如老狗运行好几年,最近飞牛不是火嘛,忍不住跟风冲了一波,海鲜市场淘到M920X+8100全固配置,目前正按“前端飞牛+仓库群晖”的思路调试,实测体验丝滑不卡顿,折腾值直接拉满!
话不多说,直接上最终的脚本!复制就能用,不用瞎折腾👇
  1. vi /opt/mount_nas.sh
复制代码
  1. #!/bin/sh
  2. # 飞牛OS NAS自动挂载脚本
  3. # 说明:所有敏感信息已脱敏,实际使用时需替换为自己的真实信息,否则无法正常挂载
  4. NAS_IP="192.168.xxx.xxx"  # 替换为你的群晖NAS局域网IP(如192.168.1.100,可在群晖控制面板-网络中查看)
  5. USER="xxx"                 # 替换为你的群晖登录账号(建议用非管理员账号,更安全)
  6. PASS="xxx"                 # 替换为你的群晖登录密码(注意密码中的特殊符号需原样输入,不可遗漏)
  7. SHARE="xxxNAS"             # 替换为你的群晖共享文件夹名称(需提前在群晖中创建并开启共享权限)
  8. LOG="/var/log/mount_nas.log"  # 固定配置|挂载日志保存路径,方便后续排查挂载失败问题
  9. DIR_NAME="大容量空间"       # 固定配置|飞牛本地挂载目录名称,无需修改

  10. # 固定配置|将脚本运行日志输出到指定日志文件,后续出问题可查看日志排查
  11. exec >> $LOG 2>&1
  12. echo "========================================"
  13. echo "[$(date)] 开机挂载启动 "  # 日志标记|记录挂载脚本启动时间

  14. # 固定配置|延迟60秒启动挂载,避免飞牛开机后网络、系统未就绪导致挂载失败(实测最优延迟时间)
  15. sleep 60

  16. # 固定配置|循环等待/vol3目录就绪(飞牛OS存储空间自行修改,必须等待其就绪才能挂载)
  17. # 每2秒检查一次,直到/vol3目录存在再继续执行后续步骤
  18. while [ ! -d "/vol3" ]; do sleep 2; done
  19. echo "[$(date)] vol3 已就绪"  # 日志标记|记录/vol3目录就绪时间

  20. # 固定配置|循环检测群晖NAS网络连通性,避免网络未通导致挂载失败
  21. # 每2秒ping一次群晖IP,ping通(网络就绪)后再继续执行
  22. until ping -c1 -W1 $NAS_IP >/dev/null 2>&1; do sleep 2; done
  23. echo "[$(date)] 网络已就绪"  # 日志标记|记录网络就绪时间

  24. # 核心逻辑|遍历飞牛系统中UID在1000-1099之间的用户(飞牛普通用户默认UID范围)
  25. # 为每个符合条件的用户创建专属挂载目录,并挂载群晖对应用户的共享文件夹
  26. getent passwd | awk -F: '$3>=1000 && $3<=1099 {print $3":"$4}' | while IFS=: read uid gid; do
  27.   local_dir="/vol3/$uid/$DIR_NAME"  # 飞牛本地挂载路径(每个用户单独目录,避免权限冲突)
  28.   remote="//$NAS_IP/$SHARE/$uid"    # 群晖远程共享路径(与飞牛用户UID对应,实现用户隔离)
  29.   tmp="/tmp/tmp_mount"              # 临时挂载目录,用于临时挂载群晖共享根目录

  30.   # 跳过已挂载的目录,避免重复挂载导致报错
  31.   mountpoint -q "$local_dir" && echo "✅ 已挂载: $local_dir" && continue

  32.   # 创建飞牛本地挂载目录(若不存在则自动创建,无需手动操作)
  33.   mkdir -p "$local_dir"

  34.   # 临时挂载群晖共享根目录,确保群晖中对应用户的子目录存在(避免挂载时目录不存在报错)
  35.   mkdir -p "$tmp"
  36.   mount -t cifs "//$NAS_IP/$SHARE" "$tmp" -o username="$USER",password="$PASS",vers=3.0,noserverino
  37.   mkdir -p "$tmp/$uid"  # 在群晖共享根目录下,创建与飞牛用户UID对应的子目录
  38.   umount "$tmp"         # 卸载临时挂载的共享根目录

  39.   # 正式挂载:将群晖对应用户的共享目录,挂载到飞牛当前用户的专属目录
  40.   # vers=3.0:固定CIFS协议版本,适配飞牛OS与群晖,避免协议不兼容报错
  41.   # uid="$uid",gid="$gid":设置挂载目录的所属用户和组,避免权限不足无法访问
  42.   # iocharset=utf8:支持中文目录和文件名,避免乱码
  43.   # cache=none:关闭缓存,提升文件读写流畅度,适配NAS存储场景
  44.   mount -t cifs "$remote" "$local_dir" -o username="$USER",password="$PASS",vers=3.0,uid="$uid",gid="$gid",iocharset=utf8,cache=none
  45.   
  46.   # 输出挂载结果,成功/失败一眼区分,方便排查问题
  47.   [ $? -eq 0 ] && echo "✅ 挂载成功: $local_dir" || echo "❌ 挂载失败: $local_dir"
  48. done

  49. # 清理临时挂载目录,避免占用飞牛临时空间
  50. rm -rf "$tmp"
  51. echo "[$(date)] 挂载完成"  # 日志标记|记录所有用户挂载完成时间
  52. echo "========================================"

  53. # ==============================================
  54. # 单独挂载额外目录(固定配置,无需修改路径)
  55. # 说明:专门挂载群晖photo目录到飞牛指定路径,用于照片备份/查看,适配家庭场景
  56. # ==============================================
  57. echo "[$(date)] 开始单独挂载额外目录"
  58. # 配置单独挂载的目录信息(固定路径,无需修改,实际使用时确保群晖存在photo共享目录)
  59. EXTRA_REMOTE="//$NAS_IP/photo"    # 群晖额外共享目录(固定为photo,用于存储照片)
  60. EXTRA_LOCAL="/vol3/1000/DS_photo" # 飞牛本地额外挂载路径(固定,与UID=1000用户对应)
  61. EXTRA_UID=1000                    # 固定UID|对应飞牛默认管理员用户,避免权限报错
  62. EXTRA_GID=1001                    # 固定GID|对应飞牛默认用户组,与UID匹配

  63. # 检查额外目录是否已挂载,未挂载则执行挂载(避免重复挂载)
  64. if ! mountpoint -q "$EXTRA_LOCAL"; then
  65.   # 创建飞牛本地额外挂载目录(若不存在则自动创建)
  66.   mkdir -p "$EXTRA_LOCAL"

  67.   # 正式挂载额外目录(参数与主挂载一致,确保兼容性和权限正常)
  68.   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

  69.   # 输出额外目录挂载结果,方便排查问题
  70.   if [ $? -eq 0 ]; then
  71.     echo "✅ 额外目录挂载成功: $EXTRA_REMOTE → $EXTRA_LOCAL"
  72.   else
  73.     echo "❌ 额外目录挂载失败: $EXTRA_LOCAL"
  74.   fi
  75. else
  76.   echo "✅ 额外目录已挂载: $EXTRA_LOCAL"  # 若已挂载,直接提示,跳过挂载步骤
  77. fi

  78. echo "[$(date)] 额外目录挂载处理完成"  # 日志标记|记录额外目录挂载完成时间
  79. echo "========================================"
复制代码
  1. chmod +x /opt/mount_nas.sh
  2. /opt/mount_nas.sh
复制代码
最后用systemctl方式开机自动运行


收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则