EC2上の外部RcloneによるAWS S3とCloudflare R2間の高性能ファイル転送
現代のチームは複数のオブジェクトストレージプラットフォームを併用することが多く、大規模なデータセットをローカルデスクトップ経由で転送する際に、帯域幅・レイテンシ・データ送信料が重大なボトルネックになることにすぐ気づきます。Rcloneをクラウドインスタンス上で直接実行し、RcloneViewで制御することで、大量のトラフィックをクラウドの高速バックボーンに流し、ノートPCをデータ経路から切り離すことができます。
以下の手順は「EC2経由でAWS S3とGoogle Driveを同期する」ガイドの構成を踏襲し、S3 ↔ R2のシナリオに拡張したものです。この手順では以下を行います。
- AWS EC2サーバー上でRcloneをリモート制御デーモン(rcd)として起動する。
- 別のRcloneViewウィンドウを開き、その外部Rcloneに接続する。
- EC2上でホストされているRclone内にAWS S3とCloudflare R2のリモートを追加 する。
- ローカルの帯域幅制約を受けずに、完全にクラウド間で転送・同期・ジョブのスケジュールを行う。
同一アベイラビリティーゾーン内のトラフィックは無料ですが、AZ間およびインターネットへのデータ送信には料金が発生します(一般的にAZ間で$0.02/GB、インターネットへは$0.09/GB)。 参照: AWS料金 – データ転送
外部Rcloneを使う理由
| ローカル組み込みRclone | EC2上の外部Rclone |
|---|---|
| トラフィック経路: S3 → ローカルPC → R2 — 二重ホップで、自宅のアップロード速度に律速される。 | トラフィック経路: S3 → EC2 → R2 — クラウドバックボーン内の単一ホップで、多くの場合10〜25Gbit/sを実現。 |
| 自宅ISPの上限や非対称帯域が大規模移行を遅くする。 | はるかに高いスループット。ローカル側の上限なし。 |
| ローカルのCPU・RAMがすべてのバイトをハッシュ計算する必要がある。 | CPU処理をクラウドVMにオフロードでき、必要に応じて大きめのインスタンスサイズを選択可能。 |
| NAT/ファイアウォールの問題が発生する可能性がある。 | ポート5572を開放したパブリックIP(またはSSH経由のトンネル)を使用。 |
パート1. EC2にRcloneをデプロイする(外部Rclone)
- Ubuntu EC2インスタンスを起動する(マルチスレッドアップロードにはt3.medium以上を推奨)。
- セキュリティグループでTCP 5572を開放する(またはSSHトンネルを使用)。
- Rcloneをインストール:
curl https://rclone.org/install.sh | sudo bash
- Basic認証付きでrcdデーモンを実行:
rclone rcd --rc-addr=0.0.0.0:5572 --rc-user=admin --rc-pass=admin --log-level INFO
--rc-addrフラグは、RcloneViewが呼び出すためのHTTPエンドポイントを公開します。
- ノートPCからヘルスチェックを行う:
curl -u admin:admin -X POST "http://<EC2-IP or DNS-NAME>:5572/rc/noop"
JSONの{}レスポンスが返れば、デーモンが正常にリッスンしていることが確認できます。
👉 詳しくはこちら: AWS EC2サーバーでRcloneを実行する方法
パート2. 新しいRcloneViewウィンドウを開く
接続を整理しやすくするため、RcloneViewでは各ウィンドウが独自のRcloneエンジンで動作できます。
- RcloneViewを起動する
Homeメニューの**New Window**ボタンをクリックする。- 新しいアプリケーションウィンドウが開きます。このインスタンスはメインウィンドウとは独立しており、独自の接続コンテキストを保持します。
📌 次のステップで、このウィンドウを外部Rclone(EC2)に接続します。
👉 詳しくはこちら: New Windowで複数のRclone接続を使う。
パート3. EC2上のRcloneに接続する
新しく開いたウィンドウで、以下の手順に従ってEC2上の外部Rcloneに接続します。
- 新しいウィンドウで、設定 → Connection Managerを開く。
- New Connectionをクリックし、フォームに入力する:
| 項目 | 値 |
|---|---|
| Display Name | ec2-rclone |
| Remote Address | http://<EC2-IP or DNS-NAME>:5572 |
| Username | admin |
| Password | admin |
- **
Test Connection**をクリックして設定を確認する。 接続成功のレスポンスが表示されるはずです。 - テストに合格したら**
Saveをクリックし、続けてConnect**をクリックする。 - これでEC2上で実行中の外部Rcloneインスタンスに接続され、ウィンドウ上部に接続状態が表示されます。


パート4. AWS S3とCloudflare R2のリモートを追加する(外部Rclone経由)
➕ AWS S3リモートを追加する
- **
Remoteタブに移動し、+ New Remote**をクリックする。 ProviderタブでAmazon S3を選択する。- **
Options**タブで:providerをAWSに設定- Access Key IDとSecret Access Keyを入力
- リージョンとエンドポイントは、カスタマイズしない限りデフォルトのままで構いません
- Saveをクリックして設定を完了する。
👉 詳しくはこちら:
➕ Cloudflare R2リモートを追加する
- 再度、
Remoteタブで**+ New Remote**をクリックする。 ProviderタブでS3を選択する(そう、また「S3」です。R2はS3プロトコルを使用します)。- **
Options**タブで:providerをCloudflareに設定- Cloudflare R2 Access KeyとSecret Keyを入力
endpointをhttps://<accountid>.r2.cloudflarestorage.comに設定
- SaveをクリックしてR2リモートの設定を完了する。
👉 詳しくはこちら:
パート5. AWS S3とCloudflare R2間でファイルを同期する
🔁 方法A: SyncまたはJobを使う
- Explorerペインで、同期したいCloudflare R2フォルダとAWS S3フォルダを選択する。
homeメニューの**Sync**ボタンをクリックする。- 同期オプション(片方向または双方向)を選択し、実行内容をプレビューして確認する。
- RcloneViewが同期を実行し、**
transfer**ログタブに進捗を表示します。
- 繰り返しまたはスケジュール転送を行う場合:
- Syncモーダルで**
Save to Jobsをクリックするか、Job Manager** → **Add Job**を開く。 - 転送元、転送先、オプションを設定する。
- 保存して手動実行するか、スケジュールを設定する。
- Syncモーダルで**
👉 詳しくはこちら:
⏰ 方法B: 定期的な同期ジョブをスケジュールする
- Explorerペインで、同期を維持したいCloudflare R2とAWS S3のフォルダを選択する。
- **
HomeまたはRemoteメニューからJob Managerを開き、Add Job**をクリックする。 - 転送元と転送先を確認する。
- スケジュールエディタを使ってジョブの実行タイミングを設定する。保存前にスケジュールをプレビューする。
- 保存してスケジュール済みジョブを有効化する。
RcloneViewは指定した時刻に同期を実行します。実行の詳細やログは**Job History**で確認でき、完了時には通知を受け取れます。
👉 詳しくはこちら: ジョブのスケジュールと実行
⚡ パフォーマンスチューニング・チートシート
| パラメータ | 推奨値 | 影響度 | 理由 |
|---|---|---|---|
--s3-chunk-size | 50M | ***** | パーツを大きくすることでR2上のClass-Aオペレーションを減らし、速度を向上させます1。 |
--s3-upload-concurrency | 32–64 | *** | R2向けのマルチパートスレッド数を増やします。 |
--transfers | 32–64 | * | 並列オブジェクトアップロードにより、10Gbitリンクでのスループットが向上します1。 |
--s3-disable-checksum | 外部でチェックサムを照合する場合のみ追加 | **** | パートごとのハッシュ計算というボトルネックをスキップします—注意して使用してください1。 |
📈 実環境でのチューニング結果
クラウド間転送のパフォーマンスを最大化するため、以下のようにCloudflare R2リモートの設定をチューニングしました。
RcloneViewはRcloneのGUIフロントエンドです。ここで紹介するパフォーマンスチューニングのヒントとベンチマークは、コミュニティの投稿(Cloudflare R2へのマルチパートアップロード速度を最大化する方法)を参考にした実験的なテストに基づくものであり、お使いのクラウド環境、リージョン、ネットワーク状況、ユースケースによって結果が異なる場合があります。
これらの結果は保証されるものではなく、あくまで参考としてご利用ください。
🔧 R2リモート設定の更新方法
対象のR2リモートの設定を変更するには:
- Explorerペインで、Cloudflare R2リモートの横にある歯車アイコンをクリックするか、Remote Manager → Editに移動する。
- **
OptionsタブでShow advanced options**をクリックする。 - 以下の値を設定する:
chunk_size = 50Miupload_concurrency = 32
- 変更を保存する。
disable_checksumオプションも転送速度に大きな影響を与える可能性がありますが、今回のテストでは、ファイル転送時の整合性チェックを維持するためデフォルト値 (false)のままにしています。
📉 ベースライン: デフォルト設定でのパフォーマンス
デフォルト設定を使用した場合:
- chunk_size = 5Mi
- upload_concurrency = 4.
EC2上のRclone経由でAWS S3からCloudflare R2へ大容量ファイルを移動した際、転送速度は約114 MB/sでした。
🚀 チューニング後: 4倍のパフォーマンス向上
Cloudflare R2リモートを最適化された設定で更新した結果:
- chunk_size = 50Mi
- upload_concurrency = 32
disable_checksum = falseを維持したまま、約440 MB/sの速度を達成しました—デフォルトと比較して4倍の向上です。
✅ まとめ
クラウド間転送は、もはやノートPC経由でのろのろと進める必要はありません。重い処理をEC2上の外部Rcloneデーモンにオフロードすることで、回線速度に近い移行スピードを実現し、想定外のAWSデータ送信料を回避しながら、RcloneView上で完全にビジュアルなワークフローを維持できます。自信を持って次のS3 ↔ R2移行を始め、ローカルのボトルネックにさよならしましょう。
🔗 関連ガイド
- ストレージの設定
- EC2とリモートRclone
- ウィンドウと接続の管理
- 同期とジョブ管理
- コストに関する考慮事項
- パフォーマンス最適化