可以通过 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
|
测试
下面是一张图片,如果能够正常显示,则说明上述步骤正确。