rclone on AWS EC2(Amazon Linux)の設定 @Google Drive

なんて不親切なんだろう・・・という、設定記事しかなく
最終的に、

rcloneでGoogle Driveへのリモートバックアップを自動化する【rsyncみたいなやつ】

を見つけて、ようやくGoogle Driveの接続が出来ました。
動いてしまえば、どの記事を読んでも「ああ~」という感じなんですが、
悩ましいかったところを強調して、記載してみました。

rcloneのインストール

curl https://rclone.org/install.sh | sudo bash

これだけ。あっけないぐらい、
あとは、つらつらと勝手にインストールしてくれます。

rcloneの設定

インストール完了後、入力するところを、強調しています。
※当然ながら、以降は入力せんでいいやつです。

[ec2-user@ip-10-0-0-0 ~]$ rclone config
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n ※新規
name> GoogleDrive ※任意
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
(省略)
11 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
12 / Google Drive
\ "drive"
(省略)
Storage> 12
** See help for drive backend at: https://rclone.org/drive/ **

Google Application Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> 000000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com ※Google APIs 承認情報
Google Application Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> xxxxxxxxxxxxxxxxxxxxxxxxx ※Google APIs 承認情報

Google Driveを使うには、認証が必要です。

  • client_id
  • client_secret

は、まず、

https://console.developers.google.com/apis/credentials

に、読み書きしたいGoogleDriveのアカウントでログインします。
規約云々は、やり過ごしてもらって、

1. プロジェクトを作成

 

※場所は、「組織なし」で、作成を押します。

2. 認証情報

「OAuth クライアント ID の作成」をしていきます。

++ 以下、作成中 ++

では、続きを。

Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Full access all files, excluding Application Data Folder.
\ "drive"
2 / Read-only access to file metadata and file contents.
\ "drive.readonly"
/ Access to files created by rclone only.
(省略)
scope> 2 ※readonly(EC2から書き込む予定があれば、1)
ID of the root folder
Leave blank normally.
Fill in to access "Computers" folders. (see docs).
Enter a string value. Press Enter for the default ("").
root_folder_id> xxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxx ※ルート直下の場合はなにも入力しない
Service Account Credentials JSON file path
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> ※なにも入れず、Enterを押す
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
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
If your browser doesn't open automatically go to the following link: 
https://accounts.google.com/o/oauth2/auth?(省略)
※このURLをブラウザーに貼り付け、認証の手続きを行う。
Log in and authorize rclone for access
Enter verification code> xxxxxxxxxxxxxxxxxxxxxxx ※承認後に表示されるコード
Configure this as a team drive?
y) Yes
n) No
y/n> n
--------------------
[GoogleDrive] ※最初に設定した名前
type = drive
client_id = 000000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
client_secret = xxxxxxxxxxxxxxxxxxxxxxxxx
scope = drive.readonly
root_folder_id = xxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxx
token = {"access_token":"xxxx","token_type":"Bearer","refresh_token":"1/xxxx","expiry":"2018-10-28T18:54:53.172455517Z"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name Type
==== ====
GoogleDrive drive

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 ※終了

rcloseの動作確認

rclone ls GoogleDrive:/

の実行結果↓

rclose 実行

無事、GoogleDrive上の一覧を取得することが出来ました!

Amazon Cloudですが、こちらも参考に。

>> https://qiita.com/_akisato/items/f4b36e86fcf7ae665b4d

 

rclone 導入経緯

クライアントで入力された値を、直接WEBのURLを叩いて、データを送り込むのが普通なんですが、
「インターネット非接続状態で動かない」という
現場からのクレームを考えた結果、

ファイルとしてログを保存しておけば、
オンラインになれば、GoogleDriveが勝手に、
ファイルを吸い上げてくれるので、

オフライン・オンライン時の処理を簡素化するために、GoogleDriveを使いました。

Gmailやリモートデスクトップも使えるので、
ホントGoogleアカウントは便利ですネ?!

***

そんなわけで、どうしても、EC2からGoogleDriveにアクセスする必要があり、

まず試したのが、「google-drive-ocamlfuse」なんですが、
インストールで失敗します。
リポジトリー先にファイルがなく、開発終了?のため断念。

参考 > https://qiita.com/wapa5pow/items/b91be008810331c4dc59

次に、PHPでやろうとしたのですが、コンソールでないと動かないようで、

参考 > https://t.co/fyUsZ8TBx0

(後で思えば、execで呼び出せばよかった)
Javascript版でGoogleDriveを読み込んで、AJAXでDBに書き込もうかとしたのですが、
それも面倒だったので、

rcloneにたどり着いたわけです。

 

せっかくなので、
WEBサーバーのファイルバックアップの設定もしておきたいと思います。

-

Windowsプロファイルのパスの変更

うっかり初期のログインユーザーの名前を、「yuhki」で作ってしまい、
その後、ドメイン参加したところまでは、良いのですが、

Dropboxで共有しているファイルで、
別のPCでは通っているパスの設定が、こちらのPCでは通らない

で、見てみると、

「c:\uses\yuhki」ではなく、「c:\users\yuhki.domain\]に・・・

同じユーザー名がある場合は、重複を防ぐため、
ユーザー名+ドメイン名になるため、Dropboxのパスがことなり・・・

ということで、

なんとか、プロフィールのパスを、「c:\uses\yuhki」に戻せないかやってみました。

  1. ドメイン参加をやめて、yuhkiとは別の管理者アカウントを作り、
    yuhki.domain >> yuhkiにフォルダー名を変更し、
    再びドメイン参加し、ログインした所、
    一時プロファイルでログインされる・・・
  2. レジストリーのユーザー情報を削除して、新たにログインため、レジストリーをいじってみる。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

もう一度1から環境を作り直すしかないと思っていた所、
設定の中に、パスが刻まれているのを発見!

Windowsプロファイルのパスの変更

yuhki.domain >> yuhkiに書き換えてみた所、無事成功!

各ソフトで保存先の設定が、「yuhki.domain」となっていた部分を書き換えて元通り。

最悪、再インストールと腹づもりはしていたのですが、
大分、時間が節約できました!

参考

[Windows]「一時ユーザプロファイルでログオンしています」の解決方法

-