Published on

Farbox2.0趟坑补遗

Authors
  • avatar
    Name
    wellsleep (Liu Zheng)
    Twitter

FarBox 2.0 的坑由于开源,又只有 Hepo 一人维护,自己部署+运维还是有许多许多的小坑。在此记录一下,对于碰到这类问题的朋友希望有所帮助。

  1. Client 端的同步

对于不使用 Metion 客户端的用户,唯一的同步办法基本只有 python 脚本。当然也可以使用网页版的文件管理器直接写文章,但备份很成问题,需要将云端的文件同步回来,还不如本地写好,用脚本同步到云端。

这个同步用的脚本很有讲究,由于 farbox_bucket 模块只兼容 python 2.7 版本,因此建议使用 pipenv 建立虚拟环境。

  • 【重要】转到 root 用户进行安装。如果使用普通用户,在后期同步可能遇到权限问题。

  • pipenv --python 2.7 建立 python 2.7 的虚拟环境

  • 【重要】修改用户目录 /root 下的 Pipfile 文件,将 pip 源从默认源改为清华或阿里。farbox_bucket 里面会用到大量第三方依赖,尽管只是一个同步的客户端还需要如此多的依赖我也是没想到。这些依赖如果使用默认源,在当前国内网速下一次搞定非常困难(深圳电信 500M 光纤),因此尽早修改为妙。同时注意一下 Pipfile 最下面虚拟环境所使用的 python 版本是不是 2.7 。

  • pipenv install farbox_bucket 安装需要一段时间,其间也有些莫名其妙的警告(比如告知 2.7 已经要淘汰了之类的),装好之后用 pipenv run python 进去 import 这个模块试一下,确认安装正常。

  • 接下来就可以使用 官方文档 撰写脚本了。

之所以第一步需要 root 用户,是因为在上传前,脚本会首先在本地的 .sync 目录下生成和云端一致的 bucket,再上传云端。本地创建 bucket 很神奇的需要 root 权限,如果使用普通用户,就会出现无法创建本地 bucket 因此无法同步的问题……

  1. crontab 定时脚本

这个问题不是 FarBox 的问题,是为了达到类似 Dropbox 自动同步的效果而自己搭建的机制。

Docker 创建的原生 Ubuntu 无法自定义开机启动!!!读起来好像是 docker 机制的问题,无法与 OS 的启动机制兼容。因此 SSHD 和 CRON 这两个基础服务都只能进入 docker 镜像启动,这种为了启动 cron 而不得不再写个 cron 任务的可笑行为用了一段时间后(因为无法永远不关主机,尽管搭在 NAS 上)只好放弃了。自己在 NAS 上搭了个完整虚拟机(QEMU)。

在完整虚拟机上搭 Ubuntu,再在 cron 里轮询文件夹变化,如果有变化用 pipenv run 拉起来同步脚本,将内容同步到云端。经测试,星际蜗牛版黑群晖(J3455+4G)的性能勉强够用,此刻很想买个 DS920+...