概要
Amazon Cloud Driveを暗号化して扱う方法です。
※ファイルの追加、更新はできますが削除ができません
考え方
基本的なデータの流れは以下です。

- cloud用、local用に
EncFS(暗号化)の同期フォルダを用意 - AmazonCloudDriveをcloud側のEncrypted(暗号化)フォルダにマウント
- 各Decrypted(復号)フォルダを
UnionFSで1つの場所にマウント(local側はRW、cloud側はRO) - 新規ファイルの追加、更新時は
RWのlocal側にのみ書き込まれる - localに追記された変更点を、AmazonCloudDriveへアップロード
- cloud側EncryptedフォルダがAmazonCloudDriveと再同期すれば新規ファイルが確認できる

という流れになります。
環境
環境構築
acd_cliのインストール
acd_cliが使うので以下を参考にインストールしてください。
Amazon Cloud Driveをコマンドラインで操作する
フォルダの用意
$ mkdir -p ~/cloud/encrypted $ mkdir -p ~/cloud/decrypted $ mkdir -p ~/local/decrypted $ mkdir -p ~/local/encrypted $ mkdir ~/union
encfsで暗号化フォルダと復号フォルダを同期させます。
$ encfs ~/local/encrypted ~/local/decrypted
クラウドと同期
$ acd_cli mount --modules="subdir,subdir=/Encrypted" \ ~/cloud/encrypted
cloud側もlocalと同じ設定ファイルでencfs同期します。
$ ENCFS6_CONFIG=~/local/encrypted/.encfs6.xml encfs \ ~/cloud/encrypted ~/cloud/decrypted EncFS Password:
localとcloudをUnionFSでまとめる
$ unionfs-fuse -o cow \ $HOME/local/decrypted=RW:$HOME/cloud/decrypted=RO $HOME/union
動作検証
フォルダやファイルの追加
ファイルやフォルダをunionの中に入れます。
$ tree union
union/
├── fuga.txt
└── hoge
└── piyo.txt
するとUnionFSの仕組み上、localの方に追加されます。
$ tree local/
local/
├── decrypted
│ ├── fuga.txt
│ └── hoge
│ └── piyo.txt
└── encrypted
├── ,G1Qqlb46fQGV6PwHbQBJpmB
│ └── fGGZgdcFK1pVTS76QruWQdBq
└── JRwC4PLl48pKXYRkfLreJcmY
cloudは変化ありません。
$ tree cloud/ cloud/ ├── decrypted └── encrypted
この段階では当然ですがまだAmazon Cloud Driveへはアップロードされません。

同期
それでは同期コマンドでアップロードします。
$ acd_cli sync $ acd_cli --utf upload --overwrite --exclude-ending encfs6.xml \ ~/local/encrypted/* /Encrypted/
きちんと同期されました。

cloudを確認
きちんと同期されることが分かります。
$ tree cloud/
cloud/
├── decrypted
│ ├── fuga.txt
│ └── hoge
│ └── piyo.txt
└── encrypted
├── ,G1Qqlb46fQGV6PwHbQBJpmB
│ └── fGGZgdcFK1pVTS76QruWQdBq
└── JRwC4PLl48pKXYRkfLreJcmY
アンマウント
作業が終わったらアンマウントします。
$ fusermount -u ~/union $ fusermount -u ~/cloud/encrypted $ fusermount -u ~/cloud/decrypted $ fusermount -u ~/local/decrypted