同步 S3 存储桶

可以通过 rclone 来进行两个存储桶的同步,这里将 minio 存储桶同步到 Cloudflare R2 存储桶中。我想达到的目的是本地笔记使用本地图床 minio,发布后的笔记则替换域名无缝转为 Cloudflare R2 图床链接。

安装 rclone

可以通过 apt 进行安装,但是安装版本较低:

1
2
3
4
5
6
sudo apt install rclone
rclone --version 

rclone v1.50.2
- os/arch: linux/amd64
- go version: go1.13.8

也可通过脚本进行安装:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
curl https://rclone.org/install.sh | sudo bash
rclone --version

rclone v1.67.0
- os/version: ubuntu 20.04 (64 bit)
- os/kernel: 4.14.129-bbrplus (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.22.4
- go/linking: static
- go/tags: none

rclone 添加 minio

通过 rclone config 后按照提示填写配置即可。需要注意的是,minio 的地区配置需要填写 us-east-1, 即与 picGo 等工具保持一致。可以参考 官方文档

添加完成后,可以通过 rclone lsd minio: 来查看 minio 的存储桶,如果输出正常,则添加成功。注意最后一定要包含 :

rclone 添加 Cloudflare R2

添加方法和 minio 差不多,选择提供商时选择 cloudflare 即可,可参考 官方文档。这里需要注意,填入的 R2 Token 权限要设置为 " 管理员读和写 “,否则在 rclone lsd r2: 时会报错:

1
2
3
4
5
6
7
8
9
2024/06/17 13:05:17 DEBUG : rclone: Version "v1.67.0" starting with parameters ["rclone" "lsd" "r2:" "-vv"]
2024/06/17 13:05:17 DEBUG : Creating backend with remote "r2:"
2024/06/17 13:05:17 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2024/06/17 13:05:17 DEBUG : Resolving service "s3" region "auto"
2024/06/17 13:05:17 ERROR : : error listing: AccessDenied: Access Denied
        status code: 403, request id: , host id: 
2024/06/17 13:05:17 DEBUG : 6 go routines active
2024/06/17 13:05:17 Failed to lsd with 2 errors: last error was: AccessDenied: Access Denied
        status code: 403, request id: , host id: 

同步

使用 rclone sync 命令进行同步,一些有用的选项:

  • --progress: 显示同步进度。
  • --dry-run: 模拟运行,不会实际传输文件。
  • --checksum: 使用校验和而不是修改时间和大小来确定文件是否需要传输。
  • --transfers=N: 设置并行文件传输数量,默认为 4。

例如:

1
rclone sync minio:bucketA r2:bucketB --progress --checksum

测试

下面是一张图片,如果能够正常显示,则说明上述步骤正确。
image.png


Licensed under CC BY-NC-SA 4.0
最后更新于 2024-06-17 15:40+08:00