使用 Python 脚本同步

准备工作

首先使用 pip 安装 farbox_bucket,参考命令 pip install farbox_bucket --user
其次,注意目录不适宜放在 iCloud 上, iCloud 的机制比较特殊,会导致 FarBox 的同步机制出问题,不建议 FarBox + iCloud 的使用方式,除非把 iCloud 上 “优化Mac存储空间” 的勾选去除。

注意: 请使用 pipenv 构建 Python 的环境,避免让自己本地的 Python 环境被 FarBox 项目混淆了,具体请参考《基于项目,独立的环境》 (这是全端工作室下一个开放课程的其中一篇内容)。

同步到服务器

创建一个 .py 的脚本文件,后续直接运行它就可以了。另外,sync_site_folder_simply 的调用是增量同步,除非被同步的目录有几万、几十万的文件,其它的时候,没有明显的性能问题。

# coding: utf8
import os
from farbox_bucket.client.sync import sync_to_farbox

# 如果 DEBUG 设定是 yes,会在日志中输出同步的记录
os.environ['DEBUG'] = 'yes'

private_key = """
这里是 Bucket 的私钥
"""

root =  "需要同步的目录的路径"

# 节点,下面这个只是参考
node = "192.168.100.7:7788"

# 开始同步
sync_to_farbox(
    node = node,
    root = root,
    private_key = private_key
)

从服务器端同步回来

脚本如何运行,参考上一段内容。

# coding: utf8
import os
from farbox_bucket.client.sync import sync_from_farbox

# 如果 DEBUG 设定是 yes,会在日志中输出同步的记录
os.environ['DEBUG'] = 'yes'

private_key = """
这里是 Bucket 的私钥
"""

root =  "需要同步的目录的路径"

# 节点,下面这个只是参考
node = "192.168.100.7:7788"

# 开始同步
sync_from_farbox(root=root, node=node, private_key=private_key) 

其它

如果被同步的目录中,有 .configs 这个隐藏目录:如果有 sorts.json,它会替换掉 Bucket 的排序设置;如果有 site.json,也会替换掉 Bucket 上的网站设置,它与 FarBox Web 端的网站设置是互相冲突的。

Comments
Write a Comment
  • 抓个虫,从服务器同步回来的脚本包名字写错啦【

    farbox_bucket.cleint.sync(×

    farbox_bucket.client.sync(√

    • Hepo reply

      @古川政良 嗯,我的过失,估计文档里还有很多地方有 typo ……

      对了,顺便帮我确认下,能否收到这条评论的邮件通知?

      • @Hepo 报,可以收到~

        • Hepo reply

          @古川政良 嗯,能收到就好。小 F 同学说是收不到,我一直都找不到原因,囧了……

  • 请问 “这里是 Bucket 的私钥”,这里的私钥需不需要把私钥写成一行(而不是很多空行),另外后面的“"""”应该怎么填写。

    • Hepo reply

      @ddkk3000 我好像很难解释这个问题,感觉这种方式应该不太合适你,以后会给自己带来很多不便。

      使用百度搜索 『python三个引号』?

  • Huhuhang reply

    安装 farbox_bucket 时存在依赖错误,应该是 farbox-markdown 更新导致的。

    • 171660840 reply

      @Huhuhang 哈哈哈,我是刚看了你的那篇文章,一试验就发现和你这个一样的问题了

    • Hepochen reply

      @Huhuhang 现在把 farbox-markdown 对 PyYAML 的版本限定去掉了,你可以再试试。 PyYAML 的 6.0 是存在的,可能是当前 pypi 用了镜像?

  • wellsleep reply

    发现 _comments 文件夹的同步到 2021年1月 之后就没了(没有新评论的 csv 文件),但是从 web 端的 文件管理器 里可以看到评论的 csv 文件。请问是啥原因?(可能是我瞎改配置?)

    p.s. 因为发现 post 的文件名改变后,该 post 下的评论会丢失,所以想改改 csv 文件可能可以自动连接到新的 post 下面?!...

    • wellsleep reply

      @wellsleep 用 farbox_client 容器可以读到所有 csv 文件,可能是之前自己写的 python 脚本问题... 非常感谢!

      btw,开源版本的 farbox,接好 SES 服务之后,别人的回复我能收到邮件提醒,但我的回复别人收不到……不造为啥。