最近、Google Cloud StorageやAWS S3よりもCloudflare R2(以下、R2)を自社のプロジェクトで採用することが増えました。
やはりCDNとして確固たる地位を築いたCloudflareが提供するクラウドストレージということで、期待値が大きいからです。
このコンテンツでは、R2へファイルをバックアップなどの目的で同期させたいときに使えるrclone
について紹介します。
rclone
は、簡単に説明するとscp
やrsync
の強化版です。以下のような特徴があります。
fuse
のようにも使えるrclone rcd --rc-web-gui
)今回はM1 Macにインストールしていきます。
公式サイトでは、zipでも提供していますが、インストールスクリプトをダウンロードして実行していきます。
インストールが成功したので、実行できるか確認します。
まず、事前準備としてCloudflareへログインしてR2の画面へ行きます。
R2の画面にManage R2 API Tokens
というリンクがあるので、そこへ移動しましょう。続いて、Create API Token
を押下します。
R2画面①
API Tokenの設定画面に移ったら、任意の名称をつけ、権限とTTL(+オプションでIP制限)を設定します。
R2画面②
R2画面③
すべてが終わったら以下のようにTokenやAccess Keyが入手できます。
R2画面④
上記の事前準備が完了したら、rcloneを設定していきましょう。通常であれば、rclone config
コマンドから設定していくのですが、今回はR2用の設定ファイルを作っていきましょう。
~/.config/rclone/rclone.conf
ファイルを作成して、以下のように書きます。
設定ファイルを作成したら、以下のコマンドで確認しましょう。
以下のように出れば成功です。
あらかじめdemo-bucket
という名称でバケットを作成している前提で進めます。
以下のコマンドを打ってみましょう。
このようにすると、自身のアカウントのすべてのバケットと、その配下にあるファイル一覧が表示されます。
最後のコロンを忘れないように注意してください。(ローカルディレクトリとして認識されてしまいます)
バケットを指定する場合は以下です。
何も入っていないバケットだと以下のように表示されます。
特定のディレクトリの中身をすべてアップロードするには以下のコマンドを実行します。
今回は以下のディレクトリを同期します。
アップロードが完了すると、一覧は以下のように表示され、R2へアップロードされていることが確認できます。
なお、この後に新しいファイルを含めてアップロードしても、既存オブジェクトのModified
(更新日時)は変更されません。変更された内容のみがアップロードされます。
従来、ファイルを転送する場合はscp
やrsync
コマンドを使ってきました。SFTPソフトやawscli
やgsutil
といったIaaS特有のコマンドの場合もあります。
rclone
は多くのクラウドストレージに対応している上に、rsync
のような差分対応やディレクトリへ直接マウントも可能です。
かなり優秀なOSSなので、クラウドストレージを多用する人はぜひ導入してみてください。