- Raspberry PI2の上で、メールフィルタリング・アプリであるPOPFileを動かしている。
- でも、Raspberry PI2の信頼性は未知数(あまり期待していない)なので、設定情報や学習データなど、大事なファイルがいつ無くなってしまってもおかしくない状況。
- なので、Amazon S3に定期的にバックアップする仕組みを準備できないか、トライしてみた。
AWS CLIのインストールと設定
インストール
僕のRaspberry PI2では、一般的に用いられているRaspbianではなく、ごく普通のUbuntu (14.04)をインストールしていて、その上でPOPFileを動かしている。
まずはその環境からAmazon S3にアクセスできるようにするため、AWS CLIをインストールする。
数分ほど他のことをしている間に、インストールは無事終了した。
AWS CLIの初期設定
次は、aws configure
コマンドで、アクセスキー( Access Key )情報とリージョンを設定しておく。
リージョンをちゃんと設定しておかないと、いざaws s3
コマンドを使おうとする際にエラーでこけるので、要注意!
この設定で、既に作成してあったバケットを参照できるか試してみる。
大丈夫だ、問題無い。
POPfileバックアップ用のバケット作成
何はともあれ、ファイルを保存するためのS3バケットpopfile_back
を作成する。
比較的安価なS3 STANDARD-IAを使う
今年の9月に、Amazon S3で低頻度アクセス向けのストレージクラス「Standard - IA」が利用できるようになった。
週一回POPFileのデータをバックアップする用途にはそれで十分なので、こちら↓のQiita記事を参考に、バケットの設定をしてみた。
[aws-cli]Amazon S3のバケットに、ストレージクラス「Standard – IA」を適応する
まずは、バケットのポリシー設定コマンドに入力するためのJSONファイル set_s3_standard_ia_lifecyclepolicy_config.json
を用意する。
このJSONファイルを使って、bucketのポリシー設定を行う。
設定できたことを確認する
このコマンドで出力されたJSONは、次の通り。
ちゃんと設定できていることを確認できた。
バックアップ用スクリプトの作成
POPFileでバックアップを取っておきたいのは…
/var/lib/popfile/
にある、設定ファイルpopfile.cfg
と、学習データpopfile.db
の二つ。なので、次のようなシェルスクリプト~/crons/popfile-backup-s3
を用意した。
そして、このシェルスクリプトを呼び出すcron用のスクリプトを、/etc/cron.weekly/
フォルダに作成した。内容は次の通りで、動作確認ログは/tmp/backup_to_s3.log
に出力する。(←手抜き)
これで、週に一回S3にデータがバックアップされる…はず。(まだ1週間経っていないので、検証できてない。^^;)
このバックアップ先のバケットは、AWSコンソールからバージョン管理機能を有効にしておいたので、そのうち「上書きしてしまったtgzファイルの以前のバージョン」を取り出すのも試してみたいけど、今日はここまで。( ˘ω˘)
Comments