Github Actions 备份对象存储

Author Avatar
Klein 3月 20, 2024

简单记录下 GitHub Actions 备份对象存储。

image.png

安装

安装 Rclone,参考:https://rclone.org/install/

配置 Rclone

b2 的 account 就是 keyID, key 就是创建新 Application Keys 时只出现一次的 key

1
2
3
4
5
6
7
8
9
10
11
[r2]
type = s3
provider = Cloudflare
access_key_id = access_key_id
secret_access_key = secret_access_key
endpoint = endpoint

[b2]
type = b2
account = account
key = key

rclone config paths 可以查看这个 Config 保存在什么位置。

将 Config 文件的内容用 Base64 编码待用。

1
2
3
4
5
# Windows
base64 -w 0 rclone.config

# Mac
base64 -i file.conf

在仓库添加 Secrets RCLONE_CONFIG

workflow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
name: Cloudflare R2 to Backblaze B2 Sync
on:
schedule:
# 4 times everyday
- cron: "0 */6 * * *"
workflow_dispatch:

jobs:
sync:
name: S3 Bucket Sync
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3

# Setup Rclone
- name: Setup Rclone
uses: AnimMouse/setup-rclone@v1
with:
rclone_config: ${{ secrets.RCLONE_CONFIG }}

# Rclone Sync from Cloudflare R2 to Backblaze B2
- name: Rclone Sync
run: |
rclone sync ${{ secrets.R2_REMOTE_NAME }}:${{ secrets.R2_BUCKET_NAME }} ${{ secrets.B2_REMOTE_NAME }}:${{ secrets.B2_BUCKET_NAME }} -v