以下省略!

タイダルウ(ry 毎日1記事執筆運動実施中。

s3cmd sync+crontabでS3に自動同期されるフォルダを作るアレ

f:id:abyssluke:20150214201750p:plain:w240:lefts3cmdというコマンドラインからストレージサービスのAmazon S3を操作できるツールを使い、特定のフォルダ(ここではS3Box*1とする)を自動で特定のバケット(ここではtarget-bucketとする)に同期させてみるなど。

・予めs3cmdをインストール*2、設定しておく(Default Regionはap-northeast-1と入力すること)。詳しくはググるべし。
・s3cmd mb s3://target-bucket(作成したいバケット名)/を実行して専用のバケットでも作っておく(既存のバケットを使う場合は不要)
・s3cmd sync --server-side-encryption*3 --delete-removed*4 /path/to/S3Box/ s3://target-bucket/を実行するとS3Boxフォルダの中身がそのままS3のバケットと同期される。

あとは自動同期化。以下のようなスクリプトを組み、crontabで15分おき(お好みで調節)に回す。

#!/bin/sh
date >> /path/to/log/s3sync.log
/path/to/s3cmd sync --server-side-encryption --delete-removed /path/to/S3Box/ s3://target-bucket/ >> /path/to/log/s3sync.log 2>&1
echo "---" >> /path/to/log/s3sync.log

encfs(いつか紹介予定)で暗号化したフォルダを同期対象にしておくといいかも。容量無制限(使用容量や転送量、リクエスト数による従量課金制)だし、バックアップとして使えるし。

*1:登録商標とかだったらごめんなさい

*2:最新版をダウンロードし、~/bin/にs3cmdとS3フォルダを置くのが吉

*3:S3サーバー上で暗号化される。お好みで付けておく

*4:片方でファイルが削除されるともう片方も削除される