依赖rclone挂载的容器因为vps重启引起的目录读取失败
侧边栏壁纸
  • 累计撰写 17 篇文章
  • 累计收到 761 条评论

依赖rclone挂载的容器因为vps重启引起的目录读取失败

syqman
2022-06-03 / 3 评论 / 1,027 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年06月06日,已超过1256天没有更新,若内容或图片失效,请留言反馈。
前言

  折腾自动追剧的全家桶方案其实已经有一段时间了,由于 docker的强大,本人的全家桶方案基本都是依赖于 docker实现的,但是随之而来也暴露一个问题,就是部分容器是依赖于 rclone 挂载实现的功能,一旦重启 VPS 的话, rlone mount 服务的启动完成需要一定的时间,这时候如果 docker 容器服务比 rclone mount 服务先启动的话,会出现容器识别不到挂载目录的情况,即便 rclone mount 服务最后完成启动也不行,此时的解决方案只有重启 docker 容器。之前一直没尝试解决的原因是,觉得碰到这种情况下重启下容器就好,加上大佬们总是不理解说为啥你的 VPS 老是要重启,我觉得这个问题只有小白能和我感同身受了 表情

解决方案

  解决方案其实也很简单,只需要一个脚本,我们让他开机启动的是检测下你的挂载目录是否有内容,一旦有内容的话,则重启 docker 容器,如果没内容的话,则循环检测,直到 rclone 挂载成功。当然,脚本简单归简单,我自己可写不出来,这里仍然贴下 翔翎 大佬的作品:

#!/bin/bash
dir1=/mnt/sp01
dir2=/mnt/onedrive
while true; do
    sleep 5s
    if [[ -d $dir1 ]] && [[ -d $dir2 ]]; then
        if [[ `ls $dir1` != "" ]] && [[ `ls $dir2` != "" ]]; then
            docker restart emby
            docker restart nas-tools
            docker restart chinesesubfinder
            break
        else
            echo "No path!"
        fi
    fi
done

保存为 rclone.sh 上传到 VPS 根目录,给与权限

chmod +x rclone.sh

手动执行下看有无报错:

bash rclone.sh

如提示 docker restart emby done 等字样,表示脚本无问题。
加入开机启动,首先将脚本移动到 /etc/init.d并设置开机启动 :

mv rclone.sh /etc/init.d
sudo update-rc.d rclone.sh defaults

如果要移除启动项的话:

sudo update-rc.d -f rclone.sh remove

搞定,收工!

0

评论

博主关闭了当前页面的评论