- 创建一个包含命令的脚本。
- 创建一个
systemd 服务单元,告诉系统在启动时运行这个脚本,脚本内容为对windows宿主机SMB共享文件夹的映射
- 为什么不用官方文件中的远程挂载?因为官方远程挂载目前不支持将远程目录作为相册的备份地址!!!
- 所有操作需要使用管理员账户通过ssh登录(或者你等登录shell的任意工具,具体操作自行度娘。
🚀 第1步:创建挂载脚本
将创建一个脚本,它会智能地等待,直到 Windows 主机 (我的IP是 192.168.3.87) 真正联网可访问后,再执行挂载,对于任何挂载失败的命令,它都会自动重试几次
- 创建一个新脚本文件:
sudo nano /usr/local/bin/automount_cifs.sh
-
将以下所有内容复制并粘贴到该文件中。
#!/bin/bash
# --- 配置 ---
REMOTE_HOST="192.168.3.87" #这是我的IP,替换成你的
COMMON_OPTS="username='windows宿主机用户名‘,password='windows宿主机密码',file_mode=0777,dir_mode=0777,gid=1001"
MAX_RETRIES=5 # 最大重试次数
RETRY_WAIT=3 # 每次重试前等待3秒
# --- 1. 等待主机上线 ---
echo "Waiting for host ${REMOTE_HOST} to come online..."
while ! ping -c 1 ${REMOTE_HOST} &>/dev/null
do
sleep 5
done
echo "Host ${REMOTE_HOST} is online. Proceeding with mounts."
# --- 2. 定义一个通用的挂载函数(带重试功能) ---
# 用法: mount_share "远程共享名" "本地挂载点" "特定uid"
mount_share() {
local share_name=$1
local mount_point=$2
local uid_opt=$3
# 检查是否已挂载
if mountpoint -q "${mount_point}"; then
echo "${mount_point} is already mounted."
return 0
fi
echo "Attempting to mount //${REMOTE_HOST}/${share_name} to ${mount_point}..."
local i=1
while [ $i -le $MAX_RETRIES ]; do
# 尝试挂载
mount -t cifs "//${REMOTE_HOST}/${share_name}" "${mount_point}" -o ${COMMON_OPTS},${uid_opt}
# 检查是否成功
if [ $? -eq 0 ]; then
echo "Mount successful for ${mount_point}."
return 0
fi
# 如果失败
echo "Mount failed (Attempt ${i}/${MAX_RETRIES}). Retrying in ${RETRY_WAIT}s..."
sleep ${RETRY_WAIT}
i=$((i+1))
done
echo "Gave up mounting ${mount_point} after ${MAX_RETRIES} attempts."
return 1
}
# --- 3. 执行所有挂载 ---
mount_share "H" "/vol1/1000/WIN-H" "uid=1000"
#这里H是我在windows共享文件夹的名称,/vol1/1000/WIN-H是我在飞牛设备里面需要挂载H盘的位置
echo "All mount **s finished."
exit 0
-
保存并退出 (在 nano 中, 按 Ctrl+O 保存, Ctrl+X 退出)。
-
给这个脚本添加执行权限:
sudo chmod +x /usr/local/bin/automount_cifs.sh
🚀 第2步:创建 systemd 服务
现在创建一个服务文件,告诉 systemd 在开机时运行这个脚本。
-
创建新的 systemd 服务文件:
sudo nano /etc/systemd/system/automount-cifs.service
-
将以下所有内容复制并粘贴到该文件中:
[Unit]
Description=Mount custom CIFS network shares
# 它要求网络必须就绪后才能运行
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
RemainAfterExit=true
# 执行我们刚才创建的脚本
ExecStart=/usr/local/bin/automount_cifs.sh
[Install]
# 表明这个服务应该在“多用户模式”(即正常启动)时被启动
WantedBy=multi-user.target
-
保存并退出 (在 nano 中, 按 Ctrl+O 保存, Ctrl+X 退出)。
🚀 第3步:启用并测试服务
-
重新加载 systemd,让它读取到您的新服务文件:
sudo systemctl daemon-reload
-
启用 (Enable) 服务,让它开机自启:
sudo systemctl enable automount-cifs.service
3.. 重启飞牛设备,或者运行 sudo systemctl restart automount-cifs.service 来立即测试新脚本。