Ubuntu18.04でrcloneを使ってクラウドストレージをローカルから操作する
はじめに
現在は色々なクラウドストレージがあり、1つだけでなくいくつかを使っている人が多いと思います。私もDropbox、Box、Onedriveを主に使っています。Ubuntuを常用するようになってから、BoxのLinux向けクライアントがないために困っていたところ、rcloneというものを見つけて使い始めてみたのでメモします。なお、この記事ではBoxを使うことを前提とし、ローカルのUbuntuからrcloneを使ってBoxのファイルをローカルにコピーしたり、マウントしたりするところまでをメモします。 なお、この記事に書いている内容では、WindowsのBoxクライアントやDropboxクライアントアプリのように、一度アプリをインストールすれば後はファイルの更新、削除、追加に合わせて自動で同期してくれるところまでは実現できず、全て手作業でのコマンド実行が必要になります。自動化したい場合などはcronなどを使って別途作業が必要になります。この記事は、あくまでrcloneのインストールと基本的な使い方を知る程度に参考にしてもらえればと思います。
2019/9/17 追記
Rclone BrowserというGUIでrcloneを使用できるアプリもあります。興味のある方は以下を見てみてください。
Linuxでは公式に用意されているクラウドストレージアプリは多くありません。ただ、rcloneとRclone Browserを使用すれば、色々なクラウドストレージを便利に使用できます。ここでは、Rclone Browserのインストール手順と簡単な使い方をまとめます。
環境
以降の作業は全てUbuntu18.04で実施しました。
rcloneのインストール手順
インストールは公式サイトの手順に従って行いました。 rclone 公式ドキュメント
手順は簡単で、以下のコマンドを実行すれば完了です。以下はcurl
でインストール用のスクリプトファイルを取ってきてそれをそのまま実行しています。
$ curl https://rclone.org/install.sh | sudo bash
[sudo] user のパスワード: % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4178 100 4178 0 0 2091 0 0:00:01 0:00:01 --:--:-- 2090
...(以下、省略)...
インストールがうまくいかない場合
もし上記コマンドを実行しても何も進まないなど、やたら時間がかかる場合は、以下のように1つづつコマンドを実行することでもインストール可能です。
まず、必要なファイルをこちらの公式サイトからダウンロードしておきます。
debファイル、rpmファイルなどもダウンロードできますが、ここではzipファイルをダウンロードしました。2018年6月26日時点だと、rclone-v1.42-linux-amd64.zip
という名前のzipファイルになります。
あとは、以下のコマンドを順番に実行していけば問題なくインストールできると思います。
$ unzip rclone-v1.42-linux-amd64.zip
Archive: rclone-v1.42-linux-amd64.zip
creating: rclone-v1.42-linux-amd64/
inflating: rclone-v1.42-linux-amd64/README.html
inflating: rclone-v1.42-linux-amd64/rclone
inflating: rclone-v1.42-linux-amd64/rclone.1
inflating: rclone-v1.42-linux-amd64/README.txt
解凍してできたディレクトリに移動して中身を見てみると以下のようになっています。
$ cd rclone-v1.42-linux-amd64/
$ ls
README.html README.txt rclone rclone.1
このディレクトリにあるrclone
を/usr/bin
に移動し、実行権限を与えます。
$ sudo cp rclone /usr/bin/
$ sudo chown root:root /usr/bin/rclone
$ sudo chmod 755 /usr/bin/rclone
あとは以下コマンドでマニュアルを登録しておきます。
$ sudo cp rclone.1 /usr/local/share/man/man1/
$ sudo mandb
以上でrclone
のインストールは完了です。
rcloneの設定ファイルを作成する
rclone
では、様々なクラウドストレージに対応しています。詳しくは公式サイトにのっています。
そして各クラウドストレージ用にrclone
からアクセスして同期できるようにするには、設定ファイルを作成する必要があります。
この設定ファイルの作成は簡単です。はじめに、rclone config
というコマンドで設定ファイルを作成します。
これを実行すると、以下のように設定ファイルがない場合は3択が表示され、入力待ち状態になります。
ここでは、新しい設定ファイルを作成するためにn) New remote
を選択します。そのために、n/s/q> n
と入力してEnterを押します。
$ rclone config
2018/06/26 17:58:52 NOTICE: Config file "/home/username/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n (nでEnter)
続いて以下のように設定の名前を入力するよう求められます。ここでは、適当にboxremote
としました。
name>boxremote
次にストレージのタイプを選択します。以下のように対応しているストレージの種類が表示されるので、目的のものを見つけて、ダブルクォーテーションで囲まれている部分を入力してEnterを押します。以下では、Boxを指定するためにbox
と入力しています。Google Driveの場合は、drive
、Onedriveの場合はonedrive
と入力してEnterします。
Type of storage to configure.
Choose a number from below, or type in your own value
1 / Alias for a existing remote
\ "alias"
2 / Amazon Drive
\ "amazon cloud drive"
3 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
\ "s3"
4 / Backblaze B2
\ "b2"
5 / Box
\ "box"
6 / Cache a remote
\ "cache"
7 / Dropbox
\ "dropbox"
8 / Encrypt/Decrypt a remote
\ "crypt"
9 / FTP Connection
\ "ftp"
10 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
11 / Google Drive
\ "drive"
12 / Hubic
\ "hubic"
13 / Local Disk
\ "local"
14 / Mega
\ "mega"
15 / Microsoft Azure Blob Storage
\ "azureblob"
16 / Microsoft OneDrive
\ "onedrive"
17 / OpenDrive
\ "opendrive"
18 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
19 / Pcloud
\ "pcloud"
20 / QingCloud Object Storage
\ "qingstor"
21 / SSH/SFTP Connection
\ "sftp"
22 / Webdav
\ "webdav"
23 / Yandex Disk
\ "yandex"
24 / http Connection
\ "http"
Storage>box
次に、Box App Client ID、Box App Client Secretを聞かれますが、これは何も入力せずにEnter押すだけでOKです。
Box App Client Id - leave blank normally.
client_id>
Box App Client Secret - leave blank normally.
client_secret>
すると以下のように、Yes、Noの2択が表示されます。ここは、rcloneからのアクセスをBox側で許可するための設定を行う部分で、Yes、すなわちy
を入力してEnterするとブラウザが起動しBoxへのログイン画面が表示されます。
もし、遠隔のサーバにターミナルからアクセスしていてブラウザを開けない場合などはNo、n
を入力してEnterします。
ここでは、yで進めます。
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
以下のようにBoxのログイン画面が表示されるので、自分のアカウント情報を入力して「承認」をクリックします。
以下のように確認画面がでるので、「Boxへのアクセスを許可」をクリックします。
成功すると以下のようにブラウザに「Success」と表示されて、
ターミナルにも続きが表示されます。最後にy
入力してセットアップ完了です。
(...上省略...)
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
--------------------
[boxremote]
type = box
client_id =
client_secret =
token = {"access_token":"drrrrre3453453;46l34","token_type":"bearer","refresh_token":";eeieeeieiwwwtkweutwkutewkutkewutuwkeutkuwkeutkwuetkuwektu","expiry":"2018-06-26T19:15:02.68246701+08:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
y
と入力すると、以下のように現在のリモートリストが表示され最初のメニューに戻ります。さらに追加する場合は同じプロセスを行います。ここでは、q
を入力して作業を完了します。
Current remotes:
Name Type
==== ====
boxremote box
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
rcloneの使い方
rcloneではかなり豊富なコマンド、機能が用意されています。ここでは基本的なコマンドのみ載せます。ディレクトリ一覧を取得
rclone lsd
によってリモートディレクトリのディレクトリ一覧のみを取得できます。なお、以下のboxremote
は上記で前章の設定作業の最初のほうで指定したname
になります。
$ rclone lsd boxremote:
-1 2018-06-14 11:52:44 -1 dir1
-1 2017-11-26 20:35:32 -1 dir2
-1 2017-12-08 18:44:08 -1 dir3
上記は
boxremote
のルートディレクトリ配下にあるディレクトリ一覧を取得していますが、以下のように特定のディレクトリ配下のディレクトリ一覧を取得することももちろんできます。
以下の場合は、dir1
配下のディレクトリ一覧を取得しています。
$ rclone lsd boxremote:/dir1
-1 2018-06-14 11:52:44 -1 subdir11
-1 2017-11-26 20:35:32 -1 subdir12
-1 2017-12-08 18:44:08 -1 subdir13
ファイル一覧を取得
rclone ls
を使うと、ディレクトリではなくファイル一覧を取得します。なお、デフォルトでは、サブディレクトリ内にあるファイルもすべて再帰的に取得します。
$ rclone ls boxremote:/dir1
-1 2018-06-14 11:52:44 -1 file1
-1 2017-11-26 20:35:32 -1 file2
-1 2017-12-08 18:44:08 -1 file3
-1 2018-06-14 11:52:44 -1 subdir11/subfile11
-1 2017-11-26 20:35:32 -1 subdir12/subfile12
-1 2017-12-08 18:44:08 -1 subdir13/subfile13
もしサブディレクトリのファイルまでは取得したくない場合は、以下のように--max-depth 1
オプションで探索するサブディレクトリの階層を指定できます。ディレクトリ名は取得されません。以下の場合は、dir1
直下にあるファイルのみを表示します。
$ rclone ls --max-depth 1 boxremote:/dir1
-1 2018-06-14 11:52:44 -1 file1
-1 2017-11-26 20:35:32 -1 file2
-1 2017-12-08 18:44:08 -1 file3
より詳細なファイル一覧を取得
以下のようにrclone lsl
を使うことでタイムスタンプ、ファイルサイズを表示します。
$ rclone lsl boxremote:/dir2
14152 2015-03-16 13:11:08.000000000 test1.html
26157 2015-03-17 10:47:53.000000000 test2.html
12105 2015-03-16 12:17:11.000000000 test3.html
他にも、SON形式でファイル一覧を取得するlsjson
などのコマンドも用意されています。
指定したリモートのフォルダをローカルの指定したフォルダにコピーする
rclone copy
を使うと、リモートディレクトリの中身をローカルにコピーできます。以下では、リモートにあるdir1
をローカルのdestdir
にコピーしています。
$ rclone copy boxremote:/dir1 ./destdir
なお、上記のようにオプションを与えない場合は進捗が表示されずわかりにくいため、以下のように-v
オプションをつけることで進捗を表示できます。
$ rclone copy -v boxremote:/dir1 ./destdir
2018/06/26 22:45:46 INFO : test1.html: Copied (new)
2018/06/26 22:45:47 INFO : test2.txt: Copied (new)
(...省略...)
2018/06/26 22:46:23 INFO : test3.html: Copied (new)
2018/06/26 22:46:23 INFO :
Transferred: 306.128 kBytes (7.198 kBytes/s)
Errors: 0
Checks: 0
Transferred: 117
Elapsed time: 42.5s
リモートのディレクトリをローカルにマウントする
mount
を使うことでローカルの指定したディレクトリにマウントすることができます。以下では、この記事内で作成したboxremote
のルートディレクトリを./mntpoint
というローカルのディレクトリにマウントしています。これにより、ファイルを追加したり修正したりすればそのままリモートの中身も反映され、削除すれば当然ながらリモートからも削除されます。なお、ここで使用しているrclone mountは、まだ実験的な機能であり、思いがけない動作をする可能性があるのでそれを承知の上使ってください。
$ rclone mount boxremote:/ ./mntpoint &
まとめ
rcloneは他にも色々なクラウドストレージに対応しており、また豊富なコマンドが用意されていて多機能です。rcloneをcronなどと組み合わせれば、自動バックアップ作成など色々と応用できそうです。関連記事
- 公開日:2020/02/16 更新日:2020/02/16
圧縮、暗号化、リモート対応の差分バックアップを作成できる「Borg Backup」の使い方
圧縮、暗号化に対応し差分バックアップを作成できるソフトウェアである「Borg Backup」をUbuntuにインストールして使ってみたのでその手順をまとめます。「Borg Backup」はLinux、macOSに対応しています。
- 公開日:2020/02/14 更新日:2020/02/14
自分専用の後で読むサービスを構築できる「Wallabag」をUbuntu + Nginxで構築する手順
後で読むサービスのPocketにかなり近く、機能豊富なオープンソースのWallabagをUbuntuにインストールしたのでその手順をまとめます。
- 公開日:2020/02/12 更新日:2020/02/12
ファイル単位で暗号化して保存できるCryptomatorをインストールして使う手順
Cryptomatorは、ファイル単位での暗号化が可能なソフトウェアです。この記事では、UbuntuにCryptomatorをインストールする手順と使い方をまとめます。
- 公開日:2020/01/22 更新日:2020/01/22
WireGuardでVPNサーバーを構築してスマホやPCから接続する手順
WireGuardはOpenVPNよりもシンプルで高速、より安全なVPNとして開発が進められており、OpenVPNに代わるVPNとして期待されています。この記事ではWireGuardを使ってVPNサーバーを構築し、そのVPNサーバーにUbuntuやiPhoneから実際に接続してみるまでの手順をまとめます。
- 公開日:2020/01/17 更新日:2020/01/17
ディレクトリ表示や移動をインタラクティブに実行できるコマンドツール「Broot」
Linuxで端末を使っている時にディレクトリ構造をざっくり確認したり各ディレクトリにどのようなファイルが入っているかを確認したりしたい場合があると思います。Brootはディレクトリ構造を表示しつつさらにそこから各ディレクトリに移動したりファイルを検索したりできるコマンドラインツールです。