rcloneでお洒落にクラウドストレージを扱う
あなたは普段、どこのクラウドストレージを使っていますか? Googleドライブ? DropBox? マイクロソフトのOneDriveでしょうか? 巷には、無料でも使えるクラウドストレージがいくつもあるので、 きっと何かしらのクラウドストレージを使ってみたことがある人がほとんどだと思います。
しかし、実際にこれらのサービスを使ってみると、 これらストレージへのアクセスの仕方は、 Webブラウザ経由であったり、専用のアプリが用意されていたり、それぞれのサービス毎に異なっています。 つまりは、複数のクラウドストレージを扱うことは、それぞれ操作の仕方が異るので、結構面倒臭いのです。
Rcloneで全部解決
rcloneは、コマンドラインからクラウドストレージ等のファイルを扱うコマンドで、 上述の様な面倒を全部あっさり片づけてくれます。
ArchLinuxの場合、公式リポジトリにrcloneパッケージがあるので、 インストールは簡単! 次のコマンドですぐにインストール出来ます。
$ sudo pacman -S rclone
rcloneは、事前にクラウドストレージ毎の登録設定を行なっておくことで、 どのクラウドストレージであっても、コマンドライン上では、同じように扱うことが出来るようになります。
rcloneでストレージの登録設定を行なう時に、ストレージの名前を付けます。 そして、rcloneのコマンドでは、各クラウドストレージをこの名前で扱います。 例えば、自分のもっているGoogleDriveを「nekogoogledrive」と名付け、 そこへ、~/Documentsをバックアップする場合、次の様なコマンドになります。
$ rclone sync ~/Documents nekogoogledrive:
一方で、自分のもっているdropboxのクラウドストレージを「nekodropbox」と名付け、 そこへ、~/Documentsをバックアップする場合、次の様なコマンドになります。
$ rclone sync ~/Documents nekodropbox:
この様に、rcloneを使えば、クラウドストレージの種類を気にする事なく、 コマンドラインから皆おなじように使うことが出来るようになります。
Rcloneにクラウドストレージを登録する
rcloneを使う場合に一番はじめにすることは、自分の使っているクラウドストレージをrcloneに登録することです。 rcloneのウェブページでは40以上のクラウドストレージに対応していると書かれています。
rcloneの設定は、 コンソール上で次のコマンドを実行して始める事が出来ます。
$ rclone config
rclone configは、ターミナル上で対話形式で設定を行っていきます。 まずは、名前を決め、 自分の扱うクラウドストレージの種類を選択し、 そのストレージ毎に設定すべき項目(ストレージアクセスの認証方法等)を設定していきます。
GoogleDriveをrcloneに登録
設定の例として、GoogleDriveを登録設定を紹介しましょう。 GoogleDriveは、誰でも簡単に無料で利用できるクラウドストレージのひとつです。 Googlelアカウントを作成すれば利用出来るようになります。
新しい設定
rclone configコマンドを実行すると、 一番始めに、設定のメニューが出ます。 ここで、プロンプトに「 n 」を入力して、 新しいリモートストレージ設定を開始します。
名前を付ける
一番始めに、このストレージの名前を決めます。 nameプロンプトに好きな文字列を入力します。 つまり、先に紹介した様にrcloneコマンドライン上でのクラウドストレージの呼び名になります。
例えば「お洒落な気分でGoogleストレージ」を略して、 「okgstrage」とするならば、プロンプトに次のように入力します。
name> okgstrage
そして、このokgstrageが、rcloneコマンドライン上でのクラウドストレージの呼び名になるので、 先に紹介したバックアップのコマンドならば、具体的に次の様に使われる様になります。
$ rclone sync ~/Documents okgstrage:
google driveを選択する
名前の入力が終ると、 rcloneで扱うことの出来る世界中のストレージサービスの一覧が表示されます。 google driveもこの中に記載されているはずですが、 ターミナルの上の方へ流れてしまっているかもしれません。 ターミナルのスクロール機能で戻って確認してみて下さい。
ここで、Strageと書かれたプロンプトには、該当する「数字」か「文字列」のどちらかを入力します。 Google Driveの場合、数字ならば16(数字はいつも16に決っているわけではないので、必ず一覧で確認が必要です)、 文字列ならば drive と入力します。
Strage> drive
Google APIを利用するためのコード
何かのプログラムがGoogle Driveに接続するAPIを利用する際、 そのサービスを受けるためのIDとパスワードが必要となります。 次の設定項目ではそのためのIDとパスワードの入力が促されます。
しかし、これらIDとパスワードをrclone自体が内部で用意してくれているので、 まずは、それを利用することとします。 (このIDとパスワードは、自分の持っているGoogleDriveにアクセスするためのID、パスワードではありません) そこで、client_idプロンプトについては空欄のままエンターキーを押します。 続いて、client_secretプロンプトも同様に空欄のままエンターキーを押します。
これで、rclone自身が用意しているIDとパスワードで、 Google driveの接続APIが利用出来る様になります。
但し、rclone自身が用意しているIDとパスワードは、 rcloneを利用する人すべてで共有することになり、 Google側での時間単位での利用量制限等にひっかかると思われ、 パフォーマンスが落ちることが予想されます。
ですから、設定が終ってrcloneが動くことが確認できたら、 自分用のAPI利用のためのIDとパスワードを取得して、 これに再設定することで、パフォーマンスを改善することが出来ます。
自分用のAPI利用のためのIDとパスワード(client id, client secret)の取得については、 https://rclone.org/drive/#making-your-own-client-id に説明がありますが、日本語では、次のサイトが参考になります。
自分でAPIを利用したプログラムを開発するわけではないので、詳しくOAuth2.0のことを理解する必要はありません。 Google Cloud Platformのページから、rclone用のクライアントIDとクライアントシークレットと呼ばれるものを入手できれば、 それでOKです。 ここでのアカウントは、利用するGoogleDriveのアカウントとは関係ありません。 同じでも良いですし、開発用(例えば、google apiの管理用に使っているアカウント)のものでもかまいません。 Google Cloud Platformで、rclone用のプロジェクトを作成し、google drive 用のapiを有効にし、 OAuth2の認証設定を行なうことで、クライアントIDとクライアントシークレットを手に入れることが出来ます。
アクセス権限の範囲
次の設定は、 Google Driveの操作について、 読み込みのみ可能で書き込み禁止等の制限の範囲を決定します。 ここではフルアクセス可能な1番でいきましょう。 scopeプロンプトに数字の1を入力します。 ここの入力も文字列でも可能です。文字列の場合は「drive」です。
scope> 1
rootフォルダの設定
接続するGoogle Driveのrootフォルダを変更する場合には、 ここで設定をおこないます。 普通は変更しないのでroot_folder_idプロンプトは 空欄のままエンターキーを押せばOKです。
サービスアカウントファイルの設定
サーバーマシンのように、インタラクティブ環境の無いマシンでの認証のために サービスアカウントファイルというものがあり、 それを利用する場合にそのファイルパスを設定します。 しかし、通常はこれを利用しないので、 service_account_fileプロンプトに対しては、 空欄のままエンターキーを押せばOKです。
詳しい設定
より詳細な設定として advanced config を行なうか聞かれます。
ここでは特に設定する必要が無いので、プロンプトに対して n を入力します。
y/n> n
GoogleDriveアカウントの認証
接続するGoogleDriveアカウントの認証を行ないます。
認証のための手続きをrcloneに自動でやってもらうために、 プロンプトには y を入力します。
y/n> y
そうすると、自動的にブラウザが起動され、 googleアカウントへのログインページが開かれます。
Google Driveを利用するアカウントのIDとパスワードを入力します。 すると、次のようにrcloneがこのアカウントのGoogle Driveを操作することを許可するかどうか尋ねる画面になります。
ここで、下の方にある「Allow(許可)」ボタンをクリックします。
認証手続が自動的に行なわれ、 認証に成功すると、ブラウザに次の様な表示があらわれます。
これで、利用するGoogleDriveアカウントの認証作業は終わりです。 ブラウザは終了してかまいません。 次の作業はまたコンソールで行ないます。
チームドライブの設定
チームドライブの設定をここで行なうことが出来ます。
しかし、ここでは使わず、プロンプトに n を入力します。
y/n> n
行なった設定の確認
ここまで設定してきた内容の確認画面になります。
確認出来たらプロンプトに対して y 入力します。
y/e/d> y
設定を終了する
これで「okgstrage」の設定は完了し、 rclone configの一番始めのメニュー画面に戻ります。
rclone configを終了するには、 プロンプトに q を入力します。
e/n/d/r/c/s/q> q
以上で、Google driveをrcloneで使うための設定は終りです。
次回から、rclone configコマンドを実行すると、 「Current remotes」に、自分登録したクラウドストレージ名(ここでは、okgstrage)が表示されるはずです。
rcloneのテスト
まずは解りやすいように、 事前にWebブラウザ等経由で、GoogleDrive上にファイルやディレクトリを作っておきましょう。 準備が出来たら、次のコマンド実行します。 「okgstrage」の部分は、あなたの登録したストレージ名にします。
$ rclone lsd okgstrage:
rclone lsdコマンドは、引数にあたえたリモートストレージのディレクトリを表示します。
次は、rclone lsコマンドを試してみましょう。引数にあたえたリモートストレージのファイルを表示します。
$ rclone ls okgstrage:
最後は、rclone copyコマンドを試してみましょう。引数にあたえたリモートストレージにファイルをコピーします。
$ rclone copy ~/Documents/hoge.txt okgstrage:
rclone copyコマンドは、逆もしかりです。
$ cd ~/tmp
$ rclone copy okgstrage:hoge.txt .
rcloneでできること
rcloneで出来ることの一覧がrcloneのページにあります。
https://rclone.org/#features
上述のページで紹介されている主な機能は以下のようなものです。
この中でもリモートストレージを「mount」して利用するのが便利なので、 別のノート 「rcloneでGoogleDriveとかDropBoxとかをお洒落にマウントする」で紹介したいと思います。
No comments: