在开始之前,您必须生成 Access Key。所有示例都将使用 access_key_id 和 access_key_secret 变量,分别代表您生成的 Access Key ID(访问密钥 ID) 和 Secret Access Key(秘密访问密钥) 值。
Rclone 是一个管理云存储文件的命令行工具。您可以使用 rclone 并发上传对象到 R2。
安装 rclone ↗ 后,可以运行 rclone config ↗ 配置新的 S3 存储提供商。系统会提示您回答一系列关于新提供商详情的问题。
- 通过选择
n创建新 remote。 - 为新 remote 选择名称。例如,使用
r2。 - 选择
Amazon S3 Compliant Storage Providers存储类型。 - 选择
Cloudflare R2 storage作为提供商。 - 选择是手动输入 AWS 凭据,还是从运行时环境获取。
- 输入 AWS Access Key ID。
- 输入 AWS Secret Access Key(密码)。
- 选择要连接的区域(可选)。
- 选择 S3 API endpoint。
如果之前已配置过 rclone,可以运行 rclone config file 打印 rclone 配置文件的位置:
rclone config file
# Configuration file is stored at:
# ~/.config/rclone/rclone.conf然后使用编辑器(例如 nano 或 vim)添加或编辑新提供商。此示例假设您正在添加新的 r2 提供商:
[r2]
type = s3
provider = Cloudflare
access_key_id = abc123
secret_access_key = xyz456
endpoint = https://<accountid>.r2.cloudflarestorage.com
acl = private然后可以在任何正常工作流中使用新的 rclone 提供商。
rclone tree ↗ 命令可用于列出 remote 的内容,在此例中为 Cloudflare R2。
rclone tree r2:
# /
# ├── user-uploads
# │ └── foobar.png
# └── my-bucket-name
# ├── cat.png
# └── todos.txt
rclone tree r2:my-bucket-name
# /
# ├── cat.png
# └── todos.txtrclone copy ↗ 命令可用于将对象上传到 R2 存储桶,反之亦然 — 这允许您上传最大 5 TB 的对象(R2 支持的最大对象大小)。
# Upload dog.txt to the user-uploads bucket
rclone copy dog.txt r2:user-uploads/
rclone tree r2:user-uploads
# /
# ├── foobar.png
# └── dog.txt
# Download dog.txt from the user-uploads bucket
rclone copy r2:user-uploads/dog.txt .对于分段上传,分片大小会显著影响使用的 Class A 操作数量,进而影响最终费用。
每次分片上传都算作单独的操作,因此较大的分片大小使用更少的操作,但如果上传失败,重试成本可能更高。此外,分段上传始终至少消耗 3 倍于单次 PutObject 的操作,因为它至少包括一次 CreateMultipartUpload、UploadPart 和 CompleteMultipartUpload 操作。
平衡分片大小很大程度上取决于您的用例,但这些因素可以帮助您最小化账单,值得考虑。
可以使用 --s3-chunk-size CLI 参数配置 rclone 的分段上传分片大小。注意,可能还需要调整 --s3-upload-cutoff 参数以确保 rclone 使用分段上传。两者都可以在配置文件中设置。通常 --s3-upload-cutoff 不会小于 --s3-chunk-size。
rclone copy long-video.mp4 r2:user-uploads/ --s3-upload-cutoff=100M --s3-chunk-size=100M您还可以使用 rclone link ↗ 命令生成预签名链接,临时共享文件的公共访问权限。
# You can pass the --expire flag to determine how long the presigned link is valid. The --unlink flag isn't supported by R2.
rclone link r2:my-bucket-name/cat.png --expire 3600
# https://<accountid>.r2.cloudflarestorage.com/my-bucket-name/cat.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<credential>&X-Amz-Date=<timestamp>&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>