Raspberry PiでNASを構築する方法はいくつかあります。外付けのHDDを認識させ、単にsambaを動かすだけでも簡易的なNASになります。もちろん、全て入ったパッケージであるOMVなどで構築する方法がベターでしょう。
今回は、より簡単にクラウドストレージサービスと連携できるRclone をご紹介します。
ちょっとマイナー?なbox.comとの連携方法です。
Rclone の役割
クラウドストレージサービスとやり取りするための中間アプリケーションです。sambaみたいなもので、Raspberry Piにあるローカルのファイルを、登録したクラウドストレージサービスにコピーしたり、その逆である取り出してコピーしたりできます。
どちらかというと、Raspberry Piにあるファイルをバックアップする目的で使用したい人が多いでしょう。
これも考え方によって、外出先からスマホで撮影した写真を、その場boxにアップロードすれば、定期的にそのboxからRaspberry Piのストレージにコピー保存することも自動的に可能になります。
結果的にスマホからRaspberry Piへコピーしているような仕組みが出来ます。
先程のようにRaspberry Piを起点にコピーする場合は、外出先でbox内のファイルを見せる・使うことも可能ですから、持ち出し鞄みたいに使えます。
このような仕組みはiPhoneは以前から活用している人も多いでしょう。iPhoneで撮影した画像も自宅のmacで確認できたり、iPadなどでも同期できていたり、そういう使い方がRaspberry Piを介してできるというわけです。
便利ですよね?
対応しているクラウド
RcloneはGoogleドライブ、AmazonS3などの有名なクラウドドライブサービスとも連携が可能です。対応しているサービスはたくさんあります。
ただ、すべてそのまま簡単に連携できるとは限りません。セキュリティが高くなった現在では設定が少し厄介です。認証させないとならないからです。

rcloneの公式サイトにはそれぞれのサービスの解説記事が載っています。すべて異なりますので確認が必要です。
冒頭のように今回はbox.comで進めていきます。
インストール方法
Raspbian Busterのデスクトップ環境で実行しています。ssh経由ではなく、実際にディスプレイとキーボードとマウスを接続したRaspberry Piを操作している前提です。
次のコマンドcurlでインストールします。
curl https://rclone.org/install.sh | sudo bash
設定は以下コマンドから対話式で実行します。
rclone config
n) New remote
s) Set configuration password
q) Quit config
初めてなら、Newの「n」
名前を聞かれたら任意で付けてください。後にフォルダにも関係するので分かり易い方がいいでしょう。
name> box (任意)
リモートストレージサービスを選択するため、ズラズラと出てきます。
1 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Box
\ "box"
7 / Cache a remote
\ "cache"
8 / Citrix Sharefile
\ "sharefile"
9 / Dropbox
\ "dropbox"
10 / Encrypt/Decrypt a remote
\ "crypt"
11 / FTP Connection
\ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
13 / Google Drive
\ "drive"
14 / Google Photos
\ "google photos"
15 / Hubic
\ "hubic"
16 / In memory object storage system.
\ "memory"
17 / JottaCloud
\ "jottacloud"
18 / Koofr
\ "koofr"
19 / Local Disk
\ "local"
20 / Mail.ru Cloud
\ "mailru"
21 / Mega
\ "mega"
22 / Microsoft Azure Blob Storage
\ "azureblob"
23 / Microsoft OneDrive
\ "onedrive"
24 / OpenDrive
\ "opendrive"
25 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
26 / Pcloud
\ "pcloud"
27 / Put.io
\ "putio"
28 / QingCloud Object Storage
\ "qingstor"
29 / SSH/SFTP Connection
\ "sftp"
30 / Sugarsync
\ "sugarsync"
31 / Transparently chunk/split large files
\ "chunker"
32 / Union merges the contents of several remotes
\ "union"
33 / Webdav
\ "webdav"
34 / Yandex Disk
\ "yandex"
35 / http Connection
\ "http"
36 / premiumize.me
\ "premiumizeme"
6 / Box
\ "box"
今回6番のboxにしますので6と打ちます。
Storage> 6
次はENTERで飛ばします。あとでブラウザからログインします。
- client_id>
- client_secret>
次も飛ばせばデフォルトでUSERになりますので良いでしょう。box_sub_type>もそのままENTERで飛ばします。
- box_config_file>
- box_sub_type>
拡張の設定はしなくてOKです。n
Edit advanced config? (y/n)
y/n>n
Remote configもコマンドでしているので自動ではなく手動にしますからNOで。
Remote config
Use auto config?
y/n> n
分かりにくい箇所(認証)
そして最後のここは分かりにくいと思います。
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine (same rclone version recommended) :
rclone authorize "box"
Then paste the result below:
このターミナル画面はそのままにして(閉じずに)、
もう一つLXTerminalを開いてください。
そこで「rclone authorize "box"」とコマンドを実行すると、規定のブラウザが立ち上がってboxへのアクセスを許可します。

すると別に立ち上げコマンドを打ったLXTerminalの端末画面に、コードが表示されます。

このキャプチャ画面ではモザイク処理してしますけど、{"access_token〜をこの場合は3行分コピーして、先程のboxを設定していたLXTerminal画面にペーストしてください。
先程のLXTerminalには、Then paste the result below:で止まっていましたよね。
すると設定が完了します。初めのメニュー構成に戻ります。
rcloneの利用コマンド例
すべてはご紹介できません。単純にフォルダ同期する例をご紹介します。詳しくは記事最下部にある公式サイトをご覧ください。
基本のコマンドと指定方法
lsコマンドと同じで、lsdというのはフォルダのみ一覧で表示します。
rclone lsd remote:
こちらはフォルダ内のファイルも含めてファイル単位で一覧に表示します。
rclone lsd remote:
copyコマンドです。転送元と転送先の順番に気をつけてください。
rclone copy 転送元 転送先(例:box:backup)
syncコマンドは同期になりますが、一方通行なので気をつけてください。以下の例はboxにあるフォルダをローカルのboxフォルダに同期コピーしています。
rclone sync 転送元(例:box:backup) 転送先(例:/home/pi/box)
boxに"私の Box Notes"のフォルダを指定する場合
box:"私の Box Notes"
ちなみに、この"私の Box Notes"には、先程のトークン情報ファイルのメモが入っていました。
テスト同期のオプション
これ大事です! 最初は必ず付けてくださいね。誤ってファイルを削除しかねません。それも全部?!
オプションは2つでセットです。
--dry --run
rclone sync 転送元(例:box:backup) 転送先(例:/home/pi/box)--dry --run
メッセージを確認して何がどこへコピーされたか確認してください。この際、実際にはコピーされていませんので安心してください。
その後にオプションを外して実行します。
ヒント
フォルダを用意した方が分かり易いので、dataなど適当なフォルダを/home/piにでも作りましょう。
sudo mkdir data
sudo chmod 777 ./data
権限も与えてあげないと同期(コピー)する際にパーミッションエラーが出ます。
このフォルダと同期してあげると分かり易いと思います。
cronで定期的に実行
ここは定期的に実行するためにcronに記述すると自動的にコピーできます。
sudo vi /etc/crontab
#追記
0 3 * * * pi rclone sync data box:pi-data
これは午前3時の丑三つ時にpiユーザーがrclone sync を実行する例です。dataフォルダの中身をboxサービスのpi-dataフォルダへ同期コピーするという意味です。
cronについては色々と細かくありますので、ここでは省きます。
まとめ
Googleドライブのネタはいくつかあったので、マイナー?なbox.comのクラウドサービスをご紹介しました。
rcloneを使って定期的にバックアップが取れるのは便利です。例えば、写真・画像のバックアップは皆思うでしょう。
Raspberry Pi だと、何かを計測したデータのテキストをクラウドスペースにアップロードして、それを外出先から確認することでルーターのポート開放も要りません。
個人で使うのに、あまり大きなファイル転送や仕組みはセキュリティとしても危険です。上手く活用してください。
ただ、制限があります。boxではリフレッシュトークンが有効なのが60日間、また、あまり早いタイミングでファイルが転送できない、となっています。
バックアップ目的で利用するため、定期的なバックアップになるかと思います。そうなると、2ヶ月間も一度もアクセスしないことは意味がないので、毎週のように実行していれば有効期限が訪れることは例外以外にはありません。
リフレッシュトークンなのでアクセストークンとは別です。リフレッシュトークンは一般的に更新すれば継続して同じトークンファイルを使えますが、アクセストークンは一般的には短く数分〜数十分です。
ファイル転送の速度は、あまりにも速いタイミングでなければ気にする必要はありません。テストで何度も試すとなると、上手くいかないことに気が付きますが、これは連続で転送を実施しているからです。数分毎でもファイルの大きさによっては問題ありません。
これらの期間はクラウドサービスによっても異なると思いますので、公式サイトを参考にしてください。
Rclone公式boxのページ: https://rclone.org/box/
コメント