第一步
下载并安装最新版 rclone
sudo apt update
sudo apt install curl -y
curl https://rclone.org/install.sh | sudo bash
第二步安装成功后配置
rclone config
输入 n 创建新配置。
输入配置名称(如 123pan)。
选择存储类型:输入 webdav。
选择供应商:输入 other(如果 123Pan 不在列表中)。
输入 WebDAV 地址(需从 123Pan 获取,示例):
url = https://webdav-xxxxxxx.pd1.123pan.cn/webdav
输入 用户名 和 密码(123Pan 账号的 WebDAV 专用凭证)。
其他选项保持默认(直接按回车跳过)。
完整配置示例
[123pan]
type = webdav
url = https://webdav-xxxxxxx.pd1.123pan.cn/webdav
vendor = other
user = your_username
pass = your_password
第三步 创建挂载目录
sudo mkdir -p /mnt/123pan
确保当前用户有权限
sudo chown -R $USER:$USER /mnt/123pan
第四步挂载
基础挂载命令
rclone mount 123pan: /mnt/123pan \
--vfs-cache-mode full \
--allow-other \
--umask 000 \
--daemon
关键参数解释:
参数和作用
--vfs-cache-mode full 启用本地缓存,避免网络波动导致 I/O 错误
--allow-other 允许其他用户访问挂载点
--umask 000 设置文件权限为 777(可读写)
--daemon 后台运行
第五步验证挂载状态
查看挂载点
df -h | grep 123pan
访问文件
ls -l /mnt/123pan
第六步 创建自启动
sudo nano /etc/init.d/rclone-123pan
脚本参考内容如下
!/bin/sh
BEGIN INIT INFO
Provides: rclone-123pan
Required-Start: $network $remote_fs $syslog
Required-Stop: $network $remote_fs $syslog
Default-Start: 2 3 4 5
Default-Stop: 0 1 6
Short-Description: Mount 123Pan via rclone
Description: Mount 123Pan WebDAV to /www/wwwroot/alldata
END INIT INFO
配置项(根据实际情况修改)
USER="root" # 运行服务的用户
RCLONE_CONFIG_NAME="123pan" # rclone配置的名称
MOUNT_DIR="/www/wwwroot/alldata" # 挂载目录
LOG_FILE="/var/log/rclone-123pan.log" # 日志文件路径
Rclone 参数
RCLONE_OPTS="--vfs-cache-mode full --allow-other --umask 000 --daemon --log-file=${LOG_FILE}"
Rclone 可执行路径(通过 which rclone
获取)
RCLONE_BIN="/usr/bin/rclone"
case "$1" in
start)
echo "Starting rclone mount for 123Pan..."
if [ ! -d "${MOUNT_DIR}" ]; then
mkdir -p "${MOUNT_DIR}"
chown ${USER}:${USER} "${MOUNT_DIR}"
fi
su - ${USER} -c "${RCLONE_BIN} mount ${RCLONE_CONFIG_NAME}: ${MOUNT_DIR} ${RCLONE_OPTS}"
;;
stop)
echo "Stopping rclone mount for 123Pan..."
fusermount -uz "${MOUNT_DIR}"
;;
restart)
$0 stop
sleep 3
$0 start
;;
status)
if mount | grep -q "${MOUNT_DIR}"; then
echo "rclone-123pan is running."
else
echo "rclone-123pan is NOT running."
fi
;;
*)
echo "Usage: /etc/init.d/rclone-123pan {start|stop|restart|status}"
exit 1
;;
esac
exit 0
设置下权限
sudo chmod +x /etc/init.d/rclone-123pan
添加到开机启动
sudo update-rc.d rclone-123pan defaults
启动服务:
sudo service rclone-123pan start
停止服务:
sudo service rclone-123pan stop
查看状态:
sudo service rclone-123pan status
重启服务:
sudo service rclone-123pan restart
验证挂载
查看挂载点
df -h | grep alldata
访问文件
ls -l /www/wwwroot/alldata
第七步 创建监控脚本
保存为 /usr/local/bin/check_rclone_mount.sh:
!/bin/bash
Rclone 挂载状态监控脚本
作者:你的名字
日期:2023-10-01
配置项(根据实际情况修改)
MOUNT_DIR="/www/wwwroot/alldata" # 挂载点目录
RCLONE_SERVICE="rclone-123pan" # 服务名称(对应init.d脚本名称)
LOCK_FILE="/tmp/check_rclone.lock" # 锁文件防止重复执行
MAX_RETRIES=3 # 最大重试次数
RETRY_DELAY=10 # 重试间隔(秒)
LOG_FILE="/var/log/rclone_monitor.log" # 日志文件
函数:记录日志带时间戳
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOG_FILE
}
检查锁文件避免并发执行
if [ -f $LOCK_FILE ]; then
log "另一个监控进程正在运行,跳过本次检查。"
exit 1
fi
touch $LOCK_FILE
核心检测逻辑
if ! mount | grep -q "$MOUNT_DIR"; then
log "检测到挂载点 $MOUNT_DIR 未挂载,尝试恢复..."
attempt=1
while [ $attempt -le $MAX_RETRIES ]; do
/etc/init.d/$RCLONE_SERVICE stop >> $LOG_FILE 2>&1
sleep $RETRY_DELAY
/etc/init.d/$RCLONE_SERVICE start >> $LOG_FILE 2>&1
sleep 5 # 等待挂载完成
if mount | grep -q "$MOUNT_DIR"; then
log "挂载恢复成功(第 $attempt 次重试)"
rm -f $LOCK_FILE
exit 0
fi
((attempt++))
done
log "错误:经过 $MAX_RETRIES 次重试仍无法恢复挂载!"
# 可选:发送报警邮件或通知
else
log "挂载点正常,无需操作。"
fi
清理锁文件
rm -f $LOCK_FILE
exit 0
设置脚本权限
sudo chmod +x /usr/local/bin/check_rclone_mount.sh
sudo touch /var/log/rclone_monitor.log
sudo chmod 644 /var/log/rclone_monitor.log
添加定时任务
sudo crontab -e
监控 Rclone 挂载状态
-
-
-
-
- /usr/local/bin/check_rclone_mount.sh >/dev/null 2>&1
- /usr/local/bin/check_rclone_mount.sh >/dev/null 2>&1
-
-
-