結局、Raspberry Pi3はNASとして動いています。外付けのUSBハードディスクを付けて、その中身をGoogleDriveに定期的にバックアップしておく。という構成にしようと思っていました。バッチリバックアップ体制です。
Raspberry Pi購入前にLinuxで実現できるGoogleDriveとの同期方法は調べていました。結構情報があったので実現できそうなイメージが湧いていたのです。
しかし、実際にやってみるとGoogle側のAPI仕様が変更になって使えなかったり、GUIがガタガタで動かないし、ライセンス購入が必要になっていたり、がっかりな結果となりました。
今回、試してみて動作まで至らなかったのは【grive】と【overGrive】です。うーん、残念。
そこで、他に良さそうなソフトウェアががないか調べてみたのですが、ちょうど良さそうなものがありました。
■rcloneというコマンド
GoogleDriveだけでなく、ドロップボックスやAWS S3など、いろいろなクラウドストレージに対応したソフトウェアです。ARMのバイナリもあって、Raspberry Piでも動きました。期待通りの動きをしたのです。go言語で実装されているみたいですね。rsyncのクラウド対応版だと思ってもらえば、わかりやすいと思います。
以下に使うまでの手順を紹介します。
■インストール
rclone.orgから【Linux Arm】のバイナリをダウンロードしました。zipファイルを展開して、rcloneコマンドを実行すれば、そのまま起動します。
■準備 設定を行う
まずは、以下のコマンドを実行して、設定ファイルを作成します。
$ rclone config
コマンドを実行すると、対話形式で設定を聞かれます。今回はGoogleDriveを設定しました。
No remotes found - make a new one
n) New remote
s) Set configuration password
n/s> n
nを入力して、新規に設定を作成します。
name> googledrive
次に名前を入力します。ここで入力した名前が、のちのちコマンドラインで出てくるので、覚えておいてください。自由に設定して大丈夫です。
Choose a number from below, or type in your own value
1 / Amazon Cloud Drive
\ "amazon cloud drive"
2 / Amazon S3 (also Dreamhost, Ceph)
\ "s3"
3 / Backblaze B2
\ "b2"
4 / Dropbox
\ "dropbox"
5 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
6 / Google Drive
\ "drive"
7 / Hubic
\ "hubic"
8 / Local Disk
\ "local"
9 / Microsoft OneDrive
\ "onedrive"
10 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
11 / Yandex Disk
\ "yandex"
Storage> 6
ストレージの種類を選択します。今回はGoogleDriveなので6を入力しました。
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
クライアントIDとシークレットキーの入力を求められますが、空で大丈夫です。
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> n
nを入力します。SSH接続などでGUIが使えない状態のときはNを選んでくださいと書いてあります。コマンドラインで実行をしているので、今回はNを入力しています。
If your browser doesn't open automatically go to the following link: 【ここにURLが表示される】
Log in and authorize rclone for access
Enter verification code>【ここにTOKENを貼り付ける】
URLをブラウザに貼り付けて、Googleにアクセスし許可をするとTOKENが戻ってきます。その文字列を【ここにTOKENを貼り付ける】の位置にコピペしてください。
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
これで、設定が完了しました。yを入力して完了にします。
Name Type
==== ====
googledrive drive
e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> q
さっき追加した情報が表示されています。qを入力して設定を終わります。
■コマンドを実行する
rcloneには以下の様なサブコマンドが用意されています。
copy
sync
ls
mkdir
rmdir
だいたい、いつもの名前です。より詳しいドキュメントはこちらの公式マニュアルを確認してください。
実行は以下の様な感じのイメージです。
■copyやsyncの時
rclone 【コピー元】【コピー先】
■lsなど
rcolne 【対象】
※syncやcopyを利用するときは十分に気をつけてください。rsyncの–deleteオプションをつけた時のような悲劇が発生します。–dry-runオプションやテストディレクトリでテストをしてから操作してください。
▼GoogleDriveを操作するサンプル
■GoogleDriveのルートのディレクトリを取得する
rclone ls googledrive:
■GoogleDriveのフォルダの中身を取得する
rclone ls googledrive:【対象のディレクトリ名】
■GoogleDriveにディレクトリを作る
rclone mkdir googledrive:【ディレクトリ名】
■GoogleDriveからダウンロード
rclone copy googledrive:【ディレクトリ名】【ダウンロード先のディレクトリ】
※必ず–dry-runオプションを付けたり、テストディレクトリで動作確認してから実行してください。データが消え去る可能性があります。
別にRaspberry PiでないLinux環境でも動くので、VPS等でも応用できそうです。しばらくこれでバックアップ運用をしてみようと思います。参考にしてみてください。では。