koobai
图片通过 uPic 上传到 Github,然后自动同步到腾讯 COS / 又拍云 / B2

起因,自从把博客图片转移到又拍云之后,就通过 PicGo 直接上传,顺手也会再传一份到原先的多吉云,当是备份。本身这个流程没什么问题,但当看到斌仔说,他的方案是上传到 Github,再自动同步到各大存储桶。瞬间眼前一亮,我干嘛不这样呢,一次上传就行。目前博客样式或内容更新也是直接推送到Github,然后通过 Actions 自动构建及同步到各服务商,真是换了个场景就不知道了。折腾之路开始,记录留作备忘~

找了一圈多吉云的 Actions 工作流,发现没有。 大大的小蜗牛推荐了一个,试用了下,可能由于太久没更新或者自己不会使用,无效,找到原作者,沟通相对困难。决定放弃多吉云,转向腾讯云的 COS ,之前博文记录过 Github自动构建Hugo, 并同步到腾讯COS, 同时刷新CDN缓存,只需简单的修改下yml就行,其他具体设置参照之前的博文。

name: Sync Tencent

on:
  workflow_dispatch:
  push:
    branches:
      - master
    paths:
      - 'koobaiblog/**'  # 目录内容有变化执行工作流

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
          fetch-depth: 0

      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: 3.9

      - name: Setup coscmd and sdk
        run: sudo pip install coscmd

      - name: Configure coscmd
        env:
          SECRET_ID: ${{ secrets.SecretId }}
          SECRET_KEY: ${{ secrets.SecretKey }}
          BUCKET: ${{ secrets.Bucket }}
          REGION: ${{ secrets.Region }}
        run: coscmd config -a $SECRET_ID -s $SECRET_KEY -b $BUCKET -r $REGION

      - name: Upload to COS
        run: coscmd upload -rfs --delete koobaiblog/ /    # 需同步的本地目录及COS目录

搞定腾讯云之后,开始寻找又拍云的 Actions 工作流, 斌仔博文里有详细的教程,但试用之后觉得不够完美,一是文件无法增量更新,另外一个是无法保持文件一致性,譬如删除了 Gtihub 下的文件,远端无法同步删除。经过一番搜索,发现 她和她的猫博文中有说到增量更新及一致性问题,但没给出具体的脚本,抱着试试看的态度跟作者联系了下,把我的强迫症给完美解决,非常感谢作者。以下是yml,其中 UPYUN_BUCKETOPERATOROPERATOR_PASSWORD 分别是又拍云的服务名称、操作员、操作员密码。详细使用可参考作者的 Github

name: Sync Upyun

on:
  workflow_dispatch:
  push:
    branches:
      - master
    paths:
      - 'koobaiblog/**'  # 目录内容有变化执行工作流

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository master branch
        uses: actions/checkout@master

      - name: Deploy
        uses: her-cat/upyun-deployer@v1
        with:
          bucket: ${{ secrets.UPYUN_BUCKET }}
          operator: ${{ secrets.OPERATOR }}
          password: ${{ secrets.OPERATOR_PASSWORD }}
          dir: koobaiblog  # 需同步的本地目录

Backblaze B2 同步,B2_APPKEY_ID B2_APPKEYApplication Keys菜单下生成就行。要特别注意的是B2_BUCKET写法,完整的写法是b2://xxx,其中xxx为存储桶名称。

name: Sync B2

on:
  workflow_dispatch:
  push:
    branches:
      - master
    paths:
      - 'koobaiblog/**'  # 目录内容有变化执行工作流

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: jakejarvis/backblaze-b2-action@master
      env:
        SOURCE_DIR: './koobaiblog'  # 需同步的本地目录
        B2_BUCKET: ${{ secrets.B2_BUCKET }}
        B2_APPKEY_ID: ${{ secrets.B2_APPKEY_ID }}
        B2_APPKEY: ${{ secrets.B2_APPKEY }}

找寻各个解决方案的过程中,试用了下 归臧的方案Lsky图床,发现只能同步到一个存储策略,更适合作为图片管理使用。还搜索到ZFile存储程序,支持多吉云,试用了下,每次也只能同步到一个存储策略,在 Github 中向作者提了Issues建议,能不能增加一次上传,同步到多平台存储选项,明确答复未来不支持。还发现Picsee,图片管理工具,支持同步到各大平台存储桶,但自己已经有Eagle了。

为什么选择uPic收费软件而不用开源免费的PicGo?主要就是界面跟图标好看😂,另外一个是基于 Mac 原生开发。试用下来也非常好用,喜欢它通过设置快捷键快速上传。具体使用可参考各自的文档 uPicPicGO

为什么要同步到多平台?数据多重备份总归是好的,另外就是一旦有这个想法之后,你不搞定这个 Actions,心里很难受。腾讯 COS会不会很贵?本来一共也就十几兆,一个 G 的量也就几块钱,可忽略不计。又拍云可申请联盟,每月免费 10G 存储及 15G 的 CDN。Backblaze B2每月免费 10G 存储及每天 1G 的流量,如果套壳 Cloudflare,流量个人使用等于不要钱。折腾的乐趣,就在于不停的折腾~

更新于
评论一下 ...
回到顶部