Amazon S3を使ってブログの無料バックアップ
動機
一般的なブログサービスを利用していれば、データが消えたりといった問題を気にする必要はありません。
ですが、私の場合、ブログのデータ及び、.zshrcや.emacs各種設定ファイルもレンタルサーバ上で管理しているため、データが消えた場合の復旧方法を考えておく必要がありました。
バックアップ先をどこにしようかと思っていたのですが、ちょうどAmazon Web Serviceが1年間無料のサービスを展開中だったため、Amazon S3に保存することにしました。
一応参考になる人もいるかと思いましたので手順を公開します。
Amazon Web Serviceの登録から利用まで
下記から入手可能なドキュメントを見ながら登録してもらえば問題ないでしょう。 http://jaws-ug.jp/documents/j5f69c
その他にも無料Tierを利用してみましたという解説記事は多いのでこちらを参照してください。 http://blog.livedoor.jp/hakin/archives/51875780.html http://d.hatena.ne.jp/koujirou6218/20101105/1288952470
Amazon S3の利用
Amazon S3は、99.99%の堅牢性を持つデータ保存サービスです。 こちらのGetting Startedを確認しながら「バケットの作成」 => 「ファイルのアップロード」 => 「ファイルのダウンロード」と一通り試してみてください。
バケットというのは乱暴に言ってしまえばデータを格納するフォルダやディレクトリのようなものと思ってくれればさしあたっては問題ないかと思います。
AWSコマンドラインツールのインストール
バックアップを手動で行うのであればAWSコンソールを利用すればいいのですが、やはり自動化したいものです。 APIは提供されているのでプログラムを書くことでも自動化できますが、今回はAWSというTimothy Kayさんという方が開発したコマンドラインツールを利用したいと思います。
まずはこのツールを自宅サーバーやレンタルサーバに対してインストールする手順を説明します。
なお、AWSコマンドラインツールの説明は以下のURLで詳しく書かれています。 http://aws.amazon.com/code/739 http://timkay.com/aws/
1. curlをインストール $ apt-get install curl or $ yum install curl 2. awsスクリプトをダウンロード $ curl github.com/timkay/aws/raw/master/aws -o aws 3. awsを適当なディレクトリにコピーします。 $ cp aws $HOME/bin/aws 4. そのフォルダで以下のコマンドを実行します $ cd $HOME/bin/ && aws --link=short 5. アクセスキーとシークレットキーを~/.awssecretに保存します。 1行目がアクセスキーで2行目がシークレットキーです。 アクセスキーやシークレットキーはAWSトップから、 「アカウント」=>「セキュリティ証明書」を辿ることで確認できます。 $ echo "<Access-Key>" > ~/.awssecret $ echo "<Secret-Key>" >> ~/.awssecret $ chmod 600 ~/.awssecret (<Access-Key>, <Secret-Key>は、 自分のアクセスキーやシークレットキーに置き換えてください)
これで準備完了です。awsをコピーしたフォルダにPATHを通せばs3putやs3lsといったコマンドを利用することができます。s3lsで先ほど作ったバケットが表示されればOKです。
$ $HOME/bin/s3ls +-----------------+--------------------------+ | Name | CreationDate | +-----------------+--------------------------+ | < バケット名 > | 2010-11-16T06:18:14.000Z | +-----------------+--------------------------+
Wordpressデータベースのバックアップ
Wordpressのデータベースをバックアップするのはmysqldumpを利用すればOKです。 下記のようなコマンドになるかと思います。
mysqldump --add-drop-table \ -u<WordPressのユーザー名> \ -p<WordPressのmysqlパスワード> \ <Wordpressのデータベース名> | \ /bin/bzip2 -c > $HOME/blog.bak.sql.bz2
バックアップファイルの作成とAmazon S3アップロード
次は実際にバックアップファイルを作成、アップロードしたいと思います。 今回は$HOME以下のディレクトリを全てバックアップしたいと思いますので下記のようなシェルスクリプトを用意しました。
!/bin/sh # wordpressのDBバックアップ /usr/bin/mysqldump --add-drop-table \ -u<WordPressのユーザー名> \ -p<WordPressのmysqlパスワード> \ <Wordpressのデータベース名> | \ /bin/bzip2 -c > $HOME/blog.bak.sql.bz2 # バックアップ対象ディレクトリをcfで固める /bin/tar cf - -C $HOME ./ | /bin/bzip2 -c > /tmp/backup.tar.bz2 # 一時ファイルは削除 /bin/rm $HOME/blog.bak.sql.bz2 # s3にアップロード # (<bucke name>は自分で作成したバケット名に置き換えてください。) $HOME/bin/s3put <bucket name>/backup.tar.bz2 /tmp/backup.tar.bz2 # バックアップファイル削除 /bin/rm /tmp/backup.tar.bz2
このスクリプトをcronで1週間に一回程度実行するように設定すればバックアップ完了です。
$ crontab -l 57 2 * * 7 /home/aaa/bin/backup_script.sh