無線LANルータに挿しているUSBメモリを、Raspberry Piでマウントしたあと、Google Driveと同期する方法。

無線LANルータに挿しているUSBメモリを、Raspberry Piでマウントしたあと、Google Driveと同期する方法。

今回やりたいことは、上記の図のような感じです。

Raspberry Piは、以下ラズパイと表記します。

おわかりいただけただろうか…。

無線LANルータに挿しているUSBメモリを共有できるようにする。

いわゆる、Sambaという機能だそうです。

今回はASUSの無線LANルータ「RT-AX56U」における設定で解説します。

ASUS Wireless Router RT-AX56U – ネットワークマップ

まずルータの管理画面にログインし、左メニューから「USB アプリケーション」を選択。

そのあと、「サーバーセンター」を選択。

サーバーセンターの画面に移動したら、上部タブから「Samba 共有 / Cloud Disk」を選択。

共有を有効にする」をONにすれば、そのとおり共有可能になります。

そして下の方にある「+」ボタンからフォルダ追加を行いましょう。

このフォルダが、共有におけるルートフォルダとなります。

今回は「GoogleDrive」というフォルダにしておきますが、任意で構いません。

なお、共有したフォルダにアクセスしたい場合、Windows10の場合はエクスプローラーからアドレスバーに「¥¥192.168.50.1」と入力すれば開けます。

(ルータのIPアドレスを変更してない場合。)

ラズパイの場合は、「smb://192.168.50.1」になります。

どちらのPCでも開くときにユーザー名とパスワードを求められますが、ルーターの管理画面に入るときと同じもので開くことができます。

PCに直接USBメモリを挿しているわけじゃないのに、どちらのPCからでもアクセスできるのは感動ですね…。

USBメモリをラズパイでマウントする。

ラズパイにおける、USBメモリへのパスが「smb」から始まるものだと、のちに説明するGoogleDriveのファイルのダウンロード先に設定しようとしても、エラーになってしまいます。

よって、マウントを行って通常のフォルダと変わらないパスに変えてあげる必要があります。

端末を起動して、下記のコマンドを実行しましょう。

○○○の部分は、ルーターにログインするときに用いるユーザー名とパスワードです。

各自の環境に応じて変更してください。

これで、パスに「smb」が付かない、通常のフォルダのようにアクセスすることができるようになりました。

なお、先程のコマンドの後ろにある「vers=2.0」ですが、当環境ではこれがないと「No such file or directory」というエラーになってしまいました。

(ディレクトリがないなんてことを言われていますが、あるのに…。)

参考サイト:
Raspberry Pi 3 Tips(sambaサーバーをマウント・USBメモリをマウント)
備忘録: 【Raspbian Buster September 2019】古いタイプのSAMBAサーバーの共有フォルダをマウントする方法

ラズパイでマウントしたUSBメモリを、GoogleDriveのダウンロード先にする。

rcloneというアプリを使って、端末から実行することになります。

インストールするためのコマンドは長くなるので、下記のサイトを参考にしてください。

rcloneを使用したGoogle Driveのバックアップ – Qiita

途中で、端末上に表示された認証コードをコピーする場面がありますが、Ctrl+Cでコピーしないように注意。インストール処理が中断されてしまいます。

右クリックメニューからやるのがおすすめ。

そしてインストールが完了したら、下記のコマンドで同期を開始しましょう。

なお、今回はクラウドからローカルへの、一方的なダウンロードとなります。ローカルとはつまり、ラズパイでマウントした無線ルーターのUSBメモリです。

クラウド側のファイルに変更は加えません。

USBメモリのマウントはsudoで行ったので、ダウンロードもsudoで行わないとエラーになります。

(マウント自体、sudoじゃないとエラーになる。)

当環境ではインストール時の初めの名前をつける場面で「googledrive」としたため、コマンドでもそうなっています。

「:」のあとにフォルダ名を入れると、そのフォルダのみ同期を行いますが、何もないとルートからすべてのフォルダが同期の対象です。

「:」なしではエラーになるので注意。

また、「-v」は付けておきましょう。これがないと進捗が表示されないので、まるでフリーズしているかのように見えてしまいます。

同期の速度や安定性はどんな感じ?

現在、私のGoogleDriveには、合計約50GBほどのファイルが含まれています。

まず、syncコマンドで一度目の同期を行いましたが、24時間経過してもまだ完了せず…。

そのとき「-v」を付け忘れていたため、本当に進んでいないのかフリーズしているのかは不明でした。

いったん中断して、今度はちゃんと「-v」をつけてもう一度syncをしたときは、約15時間ほどで完了しました。

syncならば変更のないファイルはとくに何もしないはずなのですが、それでも前回のsyncでダウンロードできていないファイルが、多々存在していました。

また、ファイルのサイズの大小や拡張子に関わらず、ダウンロードに失敗しているファイルが何百個も発生しており、とても安定性があるとは言えません。

エラーメッセージも定まっておらず、「No such file or directory」「interrupted system call」「resouce temporarily unavailable」「bad file descriptor」などなど…。

rcloneのせいなのか、ラズパイの性能のせいなのかわかりませんが、どうしても使いたいなら、大容量のダウンロードは避けておいた方がいいかもしれません。

余談。なぜこれやろうと思った?

メインのPCを立ち上げていないときは、タブレットからGoogleDriveにアクセスして、そこに入れている画像や動画を眺めるのをよくやります。

しかし、やはりクラウドにあるものを開こうとする以上、どうしても読み込みに時間がかかるときがあります。

そこで試しに、無線ルーターのUSBメモリを共有にして、そこに画像などを入れてタブレットから開いてみると、GoogleDriveよりは早く開くことができました。

しかし、GoogleDriveにあるファイルを、無線ルーターのUSBメモリにわざわざ手動でコピーするのはめんどくさい。

メインPCでGoogleDriveの同期フォルダを、HDDからUSBメモリに変えるのは、安定性に欠けそうだからやりたくない。

自動バックアップのアプリを入れようと思ったけど、いまだに32bitのアプリばっかりだったり、テキストがガビガビだったり、タイマーや複数ファイル同時コピー機能つきは有料のものが多かったり。

満足行くアプリがありませんでした。

そこで思いついたのが、ラズパイからGoogleDriveのファイルを、USBメモリに自動でダウンロードさせること。

普段は電源つけっぱで放置するだけのラズパイだから、GoogleDriveの中身を誤って消すようなことはしないし、寝ている間にcronで同期タイマーを入れておいたら、起きたときには最新になる。

そしてタブレットからUSBメモリにアクセスすれば、実質GoogleDriveと同じ中身を、GoogleDriveよりも早くアクセスできる。

これで完璧なのでは!?

と思ってやってみたら、先程書いたとおり。まるで使い物になりませんでした。

朝起きてからもまだ同期を続けているので、cronでタイマーを入れる気にもなりませんでした。

無線ルーターにUSBメモリを挿すのではなく、ラズパイにUSBメモリを移し替えて共有設定すれば、もしかしたら状況は変わるかもしれませんが、もう疲れた。

黒い画面でコード叩くの怖いんです。