🧙

🧙 Cloudflare R2 別アカウント間のデータ移行手順(rclone利用)

に公開

🎯 概要

  • 別アカウントにバケットを移行したいユースケースの際に使用できるtipsです。
  • rclone を利用することで、S3互換APIを通じて高速・安全にオブジェクトをコピーできます。

🧰 前提条件

  • Cloudflare アカウントが2つ(移行元・移行先)
  • 各環境で R2 バケット作成済み
  • ターミナル環境で rclone が使用可能
// rclone入っていない方は
brew install rclone

🔑 APIトークンの準備

  • 移行で使用する設定ファイル用のtoken情報をダッシュボードから取得します。
  • Cloudflare Dashboard → R2 > Manage API Tokens
  • Create API Tokenから新規作成
  • 権限を以下のように設定
    • Object Read & Write を付与
  • 生成後、以下を控える:
access_key_id
secret_access_key
endpoint(例:https://<ACCOUNT_ID>.r2.cloudflarestorage.com)

⚙️ rclone の設定

設定ファイル作成

vim ~/.config/rclone/rclone.conf

以下を追記:

[old]
type = s3
provider = Cloudflare
access_key_id = <移行元のアクセスキーID>
secret_access_key = <移行元のシークレットアクセスキー>
endpoint = https://<移行元のendpoint url>

[new]
type = s3
provider = Cloudflare
access_key_id = <移行先のアクセスキーID>
secret_access_key = <移行先のシークレットアクセスキー>
endpoint = https://<移行先のendpoint url>

🚀 データ移行実行

不要ファイルがある場合は除外して進捗を表示しながらコピーします。

rclone copy old:<source-bucket> new:<dest-bucket> \
  --exclude "hogehoge/**" \   // hogehoge配下全てを除外してcopyします。
  --progress \                // 進捗情報表示
  --transfers 16              // 同時に処理する数デフォルトは4

🔁 中断・再開について

rclone はファイル単位で整合性チェックを行うため、
途中で止まっても再実行すれば自動的に再開されます。

📄 参考

Discussion