起因,自从把博客图片转移到又拍云之后,就通过 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_BUCKET
、OPERATOR
、OPERATOR_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_APPKEY
在
Application 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 原生开发。试用下来也非常好用,喜欢它通过设置快捷键快速上传。具体使用可参考各自的文档
uPic、
PicGO。
为什么要同步到多平台?数据多重备份总归是好的,另外就是一旦有这个想法之后,你不搞定这个 Actions,心里很难受。腾讯 COS
会不会很贵?本来一共也就十几兆,一个 G 的量也就几块钱,可忽略不计。又拍云
可申请联盟,每月免费 10G 存储及 15G 的 CDN。Backblaze B2
每月免费 10G 存储及每天 1G 的流量,如果套壳 Cloudflare,流量个人使用等于不要钱。折腾的乐趣,就在于不停的折腾~