Amazon Cloud Driveをコマンド操作するには

スポンサーリンク

大量の写真データバックアップ用ストレージとして、ACD(Amazon Cloud Drive)が最強です

ACDに写真をアップするのにWebアプリや専用ネイティブアプリケーションが用意されていますが、コマンドライン版アプリケーションacdcliを使えば、Jenkinsなどと組み合わせた自動化が簡単にできます。

acdcliのインストール手順

Pythonで書かれたアプリケーションなのでpipを使いますが、python3.2以降が必須なので注意してください。

proxy環境下であれば、sudo時のhttpproxy, httpsproxy環境変数設定を忘れずに。

$ sudo pip3 install acdcli

初期設定

まずはOAuth認証などの初期化が必要です。acdcli initを実行してください。

$ acdcli init
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 "/Users/xxxx/Library/Caches/acd_cli".  
Press a key to open a browser.  

Enterキーを入力するとブラウザが起動し、Amazonアカウントでのログインを迫ってきます。

OSXのターミナルで作業したので普通にブラウザが起動しますが、headlessなLinuxサーバ上で作業している場合はw3cが立ち上がると思うので、Prime会員のAmazonアカウントでログインし、oauthdataファイルを取得してください。サインインボタンを押すとoauthdataファイルがダウンロードされます。

oauth_dataファイルが取得できたら、acdcliのキャッシュディレクトリに配置します。

Linux(Ubuntu)のacdcliキャッシュディレクトリは以下で、

$ mv ~/Downloads/oauth_data .cache/acd_cli/.

OSX(EI Capitan)の場合は以下です。

$ mv ~/Downloads/oauth_data ~/Library/Caches/acd_cli/.

これで初期設定は完了です。

コマンドの使い方

acdcli syncして、使用状況を閲覧したり、lsしたりしてみてください。syncは時々実行するのが良さげです。

sync

$ acdcli sync -h | grep sync
sync (s)            [+] refresh node list cache; fetches complete node listif cache is empty or incremental changes if cache is non-empty

$ acdcli sync
Syncing...  
Done.  

usage

$ acdcli usage
Documents:   15276,  162.1 MiB  
Other:         213,   42.6 MiB  
Photos:      79067,  273.1 GiB  
Videos:          0,    0.0 B  
Total:       94556,  273.3 GiB  

ls

$ acdcli ls /
[tmFoJO-RTEaZ-KWpTnoAqg] [A] ドキュメント/
[E_QJy_j6RgCa7g9D2OzAOg] [A] ビデオ/
[ss6Bjft-RXyJjgWW1L_5qw] [A] 写真/

mount

FUSE(Filesystem in Userspace)がインストール済みであれば、ACDをファイルシステムとしてマウントすることもできます。

$ acdcli mount /mnt/media

ただ、Ubuntuだとうまくいったんですが、OSXではうまくいきませんでした。OSXFUSEをインストールしたんですが… 未だ解決方法がわかりません。

$ acdcli mount ./temp
~ $ 16-04-03 22:01:42.961 [ERROR] [acd_cli] - Traceback (most recent call last):
  File "/Users/takashi/.anyenv/envs/pyenv/versions/3.5.1/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
    context)
  File "/Users/takashi/.anyenv/envs/pyenv/versions/3.5.1/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 450, in do_execute
    cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: metadata  

upload

ACDにファイルをアップロードするにはacdcli ulコマンドを使います。

$ acdcli ul -h
usage: acd_cli upload [-h] [--max-connections MAX_CONNECTIONS]  
                      path [path ...] parent

  ...
  --overwrite, -o       overwrite if local modification time is higher or
                        local ctime is higher than remote modification time
                        and local/remote file sizes do not match.
  --deduplicate, -d     exclude duplicate files from upload

我が家の場合は年ごとにディレクトリを分けているので、以下のようにしてアップロードしてみます。ローカル側で更新があったファイルは、ACD上のファイルを上書きするように、-oオプションをつけます。

$ acdcli upload -o /pictures/???? /写真/

かなり時間がかかりましたが、以下のようにアップロードできました。

$ acdcli ls /写真
[a3ShzU9rQImK4IUJogtCYA] [A] 1940/
[TRCOKEClSvO0Vn8mR49M7g] [A] 1950/
[z-5K-rIvTcK6LhE95ttmVQ] [A] 1970/
[FjUOR6sIR0-HRfj-Kue0fQ] [A] 1980/
[fNM3D46wTK2ZH-Qs0kqJyA] [A] 1999/
[3VGG1_R8SPSDSagKmwb_rA] [A] 2000/
[T5rDJjBoR8-jma2frjwleQ] [A] 2001/
[qLfe8wjoSca_PkGAV8rt_Q] [A] 2002/
[yajl1HN9ShChVpc61acIIQ] [A] 2003/
[nCZBDL-kSyWK4Jselhg3XA] [A] 2004/
[f9I2UYKeTJ6btt9qoPmPEg] [A] 2005/
[sTKEX8E4Qry8cr8RCg2V5w] [A] 2006/
[_9epoPv7Tbu1ZCkH91UNAQ] [A] 2007/
[2JL9gJUES5OIm3aHOyROLg] [A] 2008/
[Lk6ZZlM9SBKjJmaThvj4Jg] [A] 2009/
[IwhZVxNPQg2yf7MGXHcG1A] [A] 2010/
[UzhetmcbRg6fNMtIZ3uiZg] [A] 2011/
[6yYeb13ARhqlx8xjzNJFwA] [A] 2012/
[cE2d8gPMTwGc6gy0Hs0FZg] [A] 2013/

アップロードした写真は、ブラウザやiPhoneアプリ(Amazon Photo)から閲覧できます。Fire TV Stickを接続したTVからも閲覧可能です。

我が家では写真と動画の日付別整理をJenkinsにやってもらっているので、最後にACDへのアップロード操作を追加しておきました。

これで写真データが完全に二重化されて安心♪

comments powered by Disqus