🚚
異なるCloudflareアカウントでR2のバケットをコピーする
2025年7月現在、Cloudflareのコンソール上では直接異なるアカウント間でのR2のコピーは行えないようです。(同じアカウント内であれば、バケット名を変更するなどの目的で移行が可能です)
代替手段として、rcloneを使ったコマンドラインでの移行が可能です。
Cloudflare R2は、AWS S3互換のオブジェクトストレージサービスなので、rcloneを使用すれば特に難しいことをすることなく移行が可能です。
Cloudflareから必要な情報を取得
移行元、移行先の2つのアカウントから以下の情報を確認します。
- アクセスキーID
- シークレットアクセスキー
- アカウントID
- URLで確認できます
https://dash.cloudflare.com/<id>
- URLで確認できます
アクセスキーID と シークレットアクセスキーは、以下の手順で取得できます。
-
メニュー > R2オブジェクトストレージ > 概要
{}API
から「APIトークンの管理」を選択します。
-
User APIトークンを作成する
-
APIトークンの設定を行って作成
- バケット名:任意の名前で良いです。
- 権限:オブジェクト読み取りと書き込み
- その他:そのままでOK
入力したら、「User APIトークンを作成する」から完了します。
- アクセスキーIDとシークレットアクセスキーを控える
作成が完了したら、これらが発行されます。値は後ほど使用します。
rcloneのインストール
インストール済みであれば、スキップで大丈夫です。
rclone --version
rclone v1.70.2
- os/version: darwin 15.5 (64 bit)
- os/kernel: 24.5.0 (arm64)
- os/type: darwin
- os/arch: arm64 (ARMv8 compatible)
- go/version: go1.24.4
- go/linking: dynamic
- go/tags: none
インストールされてなければ、適当にインストールします。
# macOS
brew install rclone
# Ubuntu / Debian
sudo apt install rclone
# Windows(PowerShell)
choco install rclone
設定ファイルを作成
以下のように作成します。
vim ~/.config/rclone/rclone.conf
[r2src]
type = s3
provider = Cloudflare
access_key_id = <移行元のアクセスキーID>
secret_access_key = <移行元のシークレットアクセスキー>
endpoint = https://<移行元のアカウントID>.r2.cloudflarestorage.com
[r2dst]
type = s3
provider = Cloudflare
access_key_id = <移行先のアクセスキーID>
secret_access_key = <移行先のシークレットアクセスキー>
endpoint = https://<移行先のアカウントID>.r2.cloudflarestorage.com
rcloneを実行
コピーコマンドを実行すると移行が完了します。
rclone copy r2src:<移行元のバケット名> r2dst:<移行先のバケット名>
Discussion