Carpe Diem

備忘録

Amazon Cloud Driveをコマンドラインで操作する

概要

amazon.co.jpの方は写真のみですが、amazon.comの方ではAmazon Cloud Drive容量無制限プランを用意しています。
こちらはDropboxとは異なり、ローカルPCとの同期型でなくファイルをクラウド上にどんどん送り込むタイプのもので、公式が用意しているアプリもアップロードとダウンロードしかできません。
その不便さを解決するためにLinux上でいじるacd_cliというツールがあったので紹介します。

github.com

環境

インストール

依存環境をインストールします。

$ sudo apt-get install python3-setuptools python3-appdirs python3-dateutil python3-requests python3-sqlalchemy git
$ sudo easy_install3 -U pip

acdcliをインストールします。

$ sudo pip3 install --upgrade git+https://github.com/yadayada/acd_cli.git

設定

AmazonCloudDriveのOAuthの認可を受ける必要があります。

$ acdcli -v init

とすると、w3mというターミナル型のブラウザが起動します。

f:id:quoll00:20160126210929p:plain

※この時にUbuntuの言語設定が日本だとAmazon.co.jpにアクセスされ、Amazon.comの無制限クラウドにログインできないので/etc/default/localeLANG="en_US.UTF-8"LANGUAGE="en"を設定しましょう。

カーソルキーを上記の場所に持って行き、Enterを押すと入力可能状態になるのでID&Passwordを入力します。
完了したらSign inのところにカーソルキーを持っていき、Enter。

f:id:quoll00:20160126211550p:plain

今度はOAuthの認可画面になるので、Okayのところにカーソルキーを持っていき、Enter。

するとアクセストークンが画面に表示されます。
ただこのままだと保存できないので、まずvを押してJSONを整形します。
整形したらShift+sで保存します。パスは.cache/acd_cli/oauth_dataです。

保存ができたらqを押してexitします。

正しく実行されてると以下の様な標準出力になります。

$ acdcli -v init
16-01-26 12:13:03.893 [INFO] [acd_cli] - Plugin leaf classes: TestPlugin
16-01-26 12:13:03.894 [INFO] [acd_cli] - TestPlugin attached.
16-01-26 12:13:03.894 [INFO] [acdcli.api.client] - Initializing ACD with path "/home/vagrant/.cache/acd_cli".
For the one-time authentication a browser (tab) will be opened at https://tensile-runway-92512.appspot.com/.
Please accept the request and save the plaintext response data into a file called "oauth_data" in the directory "/home/vagrant/.cache/acd_cli".
Press a key to open a browser.

Press a key if you have saved the "oauth_data" file into "/home/vagrant/.cache/acd_cli".

16-01-26 12:18:04.069 [INFO] [acdcli.api.oauth] - New token expires at 2016-01-26 13:11:03.894994.
16-01-26 12:18:04.071 [INFO] [acdcli.api.oauth] - AppspotOAuthHandler initialized
16-01-26 12:18:04.072 [INFO] [acdcli.cache.schema] - DB schema version is 2.
16-01-26 12:18:04.073 [CRITICAL] [acd_cli] - Root node not found. Please sync.

動作確認

以下のコマンドでnode list cacheをリフレッシュします。頻繁に使います。

$ acdcli sync
Syncing...
Done.

マウント

ローカルに適当なフォルダを作成し、マウントします。マウント時はルートからのパスが必要なので~/をつけたり/home/vagrantなど直接書いてください。

$ mkdir cloud
$ acdcli mount ~/cloud

中に入るとAmazonCloudDriveに保存したファイルやフォルダが表示されます。

$ cd cloud
$ ls
Documents  Pictures  Videos

アップロード

適当なファイルをアップロードしてみます。このフォルダにデータをコピーすればクラウド上にも保存されますし、

$ touch hoge.txt
$ acdcli upload hoge.txt /
[#########################] 100.0% of     38B  1/1    12.6B/s       0s
$ ls cloud/
Documents  hoge.txt  Pictures  Videos

という形でもアップロードできます。第二引数は/から始めればAmazonのルートディレクトリになります。


ファイル削除

削除する場合は直接はrmできないので、

$ acdcli trash /hoge.txt

として削除します。


アンマウント

アンマウントは以下のコマンドです。

$ acdcli umount cloud

ソース