老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

带 CD2 跑了一年,这五个坑差点让我哭出来

项目内容
软件clouddrive2
版本1.0.4
平台Android APK
体积40.66M
分类系统工具
开发商CloudDrive
包名com.clouddrive2.clouddrive2
官网clouddrive2 官网
下载一clouddrive2 下载,clouddrive2 下载
下载二clouddrive2 下载,clouddrive2 下载
文档clouddrive2 文档
介绍clouddrive2 作为多网盘挂载工具上手不难,但实际用下来踩了好几个实打实的坑——从 Linux 挂载权限到备份删源、从网络排查方向到令牌权限,一个个说清楚症状和解法。

clouddrive2 是什么

先说清楚这东西是干嘛的。clouddrive2(大家习惯叫它 CD2)是一款多网盘挂载工具——把你手里七八个网盘的文件全部挂到本地,像用本地文件夹一样用。它还带本地缓存,大视频打开就能播,不用等;手机端装一个,远程访问也方便。安卓版本 1.0.4,APK 四十兆出头,从采集到的资料看算是比较活跃的项目。

多网盘账号管理界面

上手确实没什么门槛——装完、授权几个网盘、开个挂载点,就能开始用。但这不代表它没暗坑。我从去年底开始用,大大小小的问题踩了不下十次,下面挑五个最实的坑,都是我自己栽过跟头的。

手机端 clouddrive2 界面

坑一:Linux 非 root 用户挂载直接报权限被拒绝

症状:一切配置好,服务跑起来了,挂载那一步卡在那儿,日志里蹦出来「permission denied」。我一开始以为是网盘授权没对,重新扫了一遍令牌和密钥,确认没问题。又以为是挂载点目录的权限,chmod 777 了挂载目录,还是一样。

原因:CD2 在 Linux 上的挂载依赖 FUSE(Filesystem in Userspace)。如果你用非 root 用户跑服务,除了系统得有 fuse3 和 fusermount3 之外,还有一个容易被忽略的配置文件:/etc/fuse.conf。这个文件里有一行 user_allow_other,默认是被注释掉的。注释在那儿,非 root 用户就没法通过 FUSE 挂载任何东西。

解法:打开 /etc/fuse.conf,找到 # user_allow_other 这一行,把开头的 # 删掉保存,然后重试挂载。我当时就是卡在这里卡了半小时,翻了官方文档才找到这个点——没装 fuse3 也是同样的报错,两个都要确认。

坑二:备份任务跑了一周,网盘里手动删的文件没同步过来

症状:我建了个单向备份任务,把百度云里的一个项目目录备份到本地硬盘。一周后去百度云里删了几个旧版本的大文件,想着备份会自动清理。等了两天,本地硬盘上那些文件还躺着。又等了三天,还是没动静。

原因:CD2 的备份靠两条腿走路——文件系统实时监控 + 计划的完整扫描。但实时监控只看得到本工具里发生的改动。你在百度云官方客户端或者网页版里上传、删除、改名,CD2 根本收不到任何变更通知,服务商不会把这些事件推过来。所以我那手动删文件的操作,CD2 的监控完全没感知到,只能等计划的完整扫描对账才能发现。

还有一个隐形的坑:完整扫描发现「目标有、源没有」的时候,它未必会自动删——因为「源没有」可能是文件被移走了,不一定是删除。对扫描差异删不删,任务里是可以自己定的,但默认设置下很多人没注意这个选项。

解法:有三个办法。第一,在 CD2 的「我的文件」里手动刷新一次那个网盘目录,刷新时会比对差异触发增量备份;第二,开启「目录缓存持久化」,刷新时自动出差异;第三,等计划的完整扫描周期到了自然对账。最稳的做法是养成习惯——在网盘官方端动过东西之后,进 CD2 手动刷一下。

Web 控制台界面

坑三:网络报错永远先查浏览器能不能上网

症状:添加网盘时报「dns error」或者「connect error」,我盯着浏览器试了试,手机上浏览器能上网、网盘网页也能打开,心想是不是 CD2 的授权流程出了问题,反复走了三遍授权,还是一样的错。

原因:这是我踩过最离谱的排查方向错误——CD2 的服务经常跑在另一台机器上,管理页只是个前端。浏览器能上网,只能说明你手里这台手机或者电脑的网络没问题,完全不代表跑 CD2 服务的那台机器(可能是你家的 NAS、可能是远程 VPS、可能是 Docker 容器)能上网。DNS 解析失败、代理挂了、容器没出网权限——这些问题全出在服务机器上,浏览器再正常也没用。

我那次的问题就是 NAS 上的 Docker 容器 DNS 没配对,宿主机正常出网,容器里 cat /etc/resolv.conf 指向了一个不存在的地址。在容器里 nslookup 一下就明了了,但我在手机浏览器上瞎忙活了快一小时。

解法:排查网络类问题的第一动作永远是——登录跑 CD2 服务的那台机器或容器,在终端里测试出网能力。DNS、代理、容器网络,按顺序查一遍。如果是 Docker 部署,先 docker exec -it <容器名> sh 进去再测试,宿主机能上网不等于容器能。

坑四:API 令牌一股脑建了全权限

症状:为了让家里的电视盒子通过 CD2 访问我 NAS 上的网盘,我建了一个 API 令牌,权限全勾——读、写、改、账号操作、云存储操作,全权限。当时想着「都是自己家人用着方便」。后来盒子借给朋友用了半天,回来一看,我百度云里几份临时放在根目录的重要文件被删了。

原因:CD2 的 API 令牌不是 WebDAV 那种粗粒度的通道。令牌可以限定根目录、设置有效期、逐项勾权限——读、写、系统操作、账号操作、云存储操作,每一大类下面还有细项。我当时图省事全勾了,等于把所有网盘的完整控制权递了出去。而且令牌的授权是跨网盘的——服务端挂了几个网盘,全权限令牌就能动几个网盘里的东西。

令牌还有一个常被忽略的安全点:直链默认关闭,但开了之后生成的直链里可能包含用户 ID、访问令牌等敏感信息,不能随便分享。

解法:令牌按用途来建。电视盒子这种只读场景,只勾「读」权限,根目录限定到专门给它用的那个文件夹;自己平时用的令牌可以给全权限,但最好设个有效期比如 30 天,过期自动失效;临时给家人传个东西就建个限期只读令牌。三把钥匙,互不影响,比一个万能钥匙安全得多。

坑五:备份任务的「完成规则」没细看就勾了删源文件

症状:建备份任务的时候向导最后有个「完成规则」选项,我当时扫了一眼看到「上传完成后删除源文件」,心想这不就是我想要的——本地备份出去之后原文件就可以删了省空间。勾了之后跑了两天,有个目录里的工作文件真的被删了。

原因:完成规则是上传成功后自动执行的收尾动作,删的是真实文件。我当时以为「删除源文件」指的是删除临时上传文件,没细看说明就勾了。其实 CD2 的文件过滤规则里有一条安全阀:被跳过的文件夹不会被打开,白名单救不回其中的内容——所以即使你后来想挽回,那些文件的实际状态也已经被删除规则处理过了。

解法:这个选项默认应该是不勾的,但向导里字太小容易漏看。我的做法是——永远不勾删源文件的完成规则,哪怕备份任务跑完了,删文件这事我手动来。省空间诚可贵,数据价更高,真删错了 CD2 没有回收站给你捡。

要点速查

  • Linux 挂载:非 root 用户先确认 fuse3 + /etc/fuse.conf 里的 user_allow_other 没被注释,少一个都挂不上
  • 备份同步:网盘官方客户端里的改动不会被 CD2 实时监控捕获,动过之后手动刷新一下那个目录
  • 网络排查:dns error / connect error 一律去跑服务的那台机器或容器里查,浏览器正常不代表服务机器正常
  • 令牌权限:按用途建令牌,电视盒子只读、自己用全权限但设有效期、临时共享用限期令牌,别搞万能钥匙
  • 完成规则:「上传后删除源文件」这个选项碰都别碰,手动删比自动删稳一百倍

这些坑我都踩过,有的数据丢了之后还能找回来,有的(比如那次删源文件)只能靠网盘回收站抢救。把这些提前想清楚,CD2 其实是个相当好用的工具——一个入口管齐所有网盘,本地缓存加速打开,备份自动跑,远程访问也方便。坑绕开了,剩下的就是踏踏实实干活。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章

Reminder 随手备忘到底值不值得继续用下去

一款把备忘录、待办清单、四象限和 OKR 揉在一起的 Android 应用——我认真用了一段时间,从免费版能覆盖的边界到它替我省掉的切换成本,逐类给你算这笔账。