清心语轩

在喧嚣的尘世,找寻心灵的恬静

清心语轩
当前位置: 首页 > 电脑网络 > 正文

飞牛相册使用远程挂载的终极解决方法

一、前言

从飞牛刚公测,就在建议区提意见希望相册支持远程挂载,同样是官方应用-影视早早就支持了,相册也有过短暂支持的,后面被官方撤下了。官方理由是相册远程挂载的稳定性受网络环境影响比较大,暂不考虑添加远程挂载。

所有论坛也有很多解决方案,最简单的方案就是将远程挂载目录添加为我的收藏,然后在相册里面就可以通过收藏添加目录,但是显示的时候,不能显示文件夹名,添加多个目录的时候,不方便管理。

找到一个完美方案,是通过mount挂载目录,这样就可以完美解决。

二、临时挂载方法

使用mount挂载远程目录

sudo mount -t cifs //192.168.2.2/相册 /vol1/1000/相册 -o username=用户名,password=密码,uid=1000,gid=1000,nounix

三、持久化挂载方法1-通过shell脚本挂载(推荐)

1、创建shell脚本

sudo nano /usr/local/bin/smb_mount.sh

文件内容

#!/bin/bash

# 统一的SMB凭据设置
SMB_USER=${SMB_USER:-username}
SMB_PASS=${SMB_PASS:-password}
SMB_VERSION="2.1"  # 默认SMB版本

# 定义多个SMB挂载任务的配置(数组)
declare -a MOUNT_TASKS=(
    # 格式:[服务器IP, 共享路径, 挂载点, UID, GID]
    "192.168.2.2,/影视,/vol1/1000/挂载/影视,1000,1000",
    "192.168.2.2,/相册,/vol1/1000/挂载/相册,1000,1000"
)

# 遍历数组,逐个挂载
for TASK in "${MOUNT_TASKS[@]}"; do
    # 解析配置参数(按逗号分割)
    IFS=',' read -r SERVER_IP SHARE_NAME MOUNT_POINT MOUNT_UID MOUNT_GID <<< "$TASK"
    
    echo "===== 开始挂载:${SERVER_IP}${SHARE_NAME} 到 ${MOUNT_POINT} ====="
    
    # 1. 创建挂载点目录(若不存在)
    sudo mkdir -p "$MOUNT_POINT"
    
    # 2. 执行挂载命令(使用统一的用户名和密码)
    if mount -t cifs "//${SERVER_IP}${SHARE_NAME}" "$MOUNT_POINT" \
        -o username="$SMB_USER",password="$SMB_PASS",vers="$SMB_VERSION",uid="$MOUNT_UID",gid="$MOUNT_GID"; then
        echo "✅ 挂载成功:${MOUNT_POINT}"
    else
        echo "❌ 挂载失败:${MOUNT_POINT}" >&2
        echo "尝试使用较低SMB版本..."
        # 尝试使用SMB 2.0版本
        if mount -t cifs "//${SERVER_IP}${SHARE_NAME}" "$MOUNT_POINT" \
            -o username="$SMB_USER",password="$SMB_PASS",vers=2.0,uid="$MOUNT_UID",gid="$MOUNT_GID"; then
            echo "✅ 使用SMB 2.0挂载成功"
        else
            echo "❌ 所有挂载尝试均失败"
            dmesg | tail -n 10 | grep -i cifs
        fi
    fi
done

echo "===== 所有挂载任务执行完毕 ====="

设置权限

sudo chmod +x /usr/local/bin/smb_mount.sh

3、设置脚本开机自启动(通过systemd)

sudo nano /etc/systemd/system/smb_mount.service

文件内容

[Unit]
Description=SMB Share Auto Mount
After=network.target
Requires=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
Environment=SMB_USER=修改为SMB用户名
Environment=SMB_PASS=修改为SMB密码
ExecStartPre=/bin/sleep 10
ExecStart=/usr/local/bin/smb_mount.sh
# 可选:失败时自动重试
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

启用并启动服务

sudo systemctl daemon-reload  # 重新加载服务配置
sudo systemctl start smb_mount.service   # 测试挂载
sudo systemctl status smb_mount.service  #检查状态
sudo systemctl enable smb_mount.service  # 开机自启

四、持久化挂载方法2-通过fstab挂载

1、将配置写入/etc/fstab

sudo nano /etc/fstab
//192.168.2.2/相册 /vol1/1000/相册 cifs username=用户名,password=密码,vers=3.0,uid=1000,gid=1000,file_mode=0664,dir_mode=0775,iocharset=utf8,_netdev,nofail,x-systemd.after=network,x-systemd.timeout=60 0 0

按Ctrl+O键保存文件,按Ctrl+X键退出编辑器。

第一次添加的时候,命令添加错误,造成无法开机,最后重刷了两遍飞牛系统。

后面对命令进行了修改,添加了_netdev和nofail参数

添加了_netdev选项 - 声明这是一个网络设备,等网络就绪后再挂载

添加了nofail选项 - 挂载失败时不报错(不阻塞启动)

但是新问题出现了,开机无法自动挂载,但论坛没看到其他人反馈有问题,不晓得是不是个例。

2、重新加载/etc/fstab文件并挂载所有fstab条目

sudo systemctl daemon-reload
sudo mount -a

3、检查挂载是否成功:

df -hT | grep 相册

相关推荐

发表评论

gravatar

最新评论

  1. shumpuihing
    板凳
    shumpuihing Microsoft Edge 140 Microsoft Edge 140 Windows 10 Windows 10
    2025-08-21 15:40 广东 回复

    fstab挂载,开机无法启动,找不到远程路径,卡死

    • 上善若水
      上善若水 Microsoft Edge 139 Microsoft Edge 139 Windows 10 Windows 10
      2025-08-21 15:51 重庆 回复

      @shumpuihing我使用fstab挂载,也重刷了两遍飞牛,所以添加了_netdev和nofail参数,防止无法开机。不过开机后还是无法自动挂载,我现在使用的shell脚本挂载。

  2. 林三
    沙发
    2025-07-15 10:11 湖北 回复

    10年前就放弃了相册,1是涉及隐私,2是经济问题,空间大小特别贵,3是访客需求,基本没人看。放百度网盘或者qq空间不香吗?

    • 上善若水
      2025-07-15 10:45 重庆 回复

      @林三NAS系统相册,都存放到本地,别人都无法访问,只需要购买硬盘就可以了,应该算是最经济最安全的存放方式了。一个是保存相机拍摄的高清相片,还有就是作为手机相册的自动备份。QQ空间需要手动上传,但是会被压缩画质,不过查看确实也还是方便。