概要
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