ブログのバックアップにDropboxを使ってみる

このブログはさくらインターネットさんのVPSサービスを利用して運営されているのですが、ファーストサーバさんのような大規模な障害が発生したり、気が狂って間違って sudo rm -fr /* などというコマンドを実行してしまったり、どこぞのクラッカー集団に襲われたりと、まぁ色々とサーバ上のデータを失ってしまうというリスクはつきものです。 そこで大切なデータを失う前にバックアップを自動的に取るようにしましょう、というお話です。

今回のポイントですが、バックアップ先にクラウドストレージサービスであれDropboxを使用する、というところがポイントです。

DropboxUbuntu 12.04で利用する方法は下記を参考にしました。

さて、バックアップデータ採取元のVPSサーバですが、GnomeKDEといったGUI周りのサービスは入っていません。それに毎日毎日sshでログインして特定のコマンドを流す、というのも面倒なので避けたいところです。というか、絶対に3日で忘れます。忘れるというか面倒くさくなってやらなくなります。

じゃ、どうするのということですが、バックアップを代わりにやってくれるシェルスクリプトを作成してこれをcronで1日1回決まった時間に実行するようにします。

まず、シェルスクリプトはこんな感じです。

上記シェルでは大きく分けて下記3つのバックアップを取っています。

  1. MySQL内のブログ用データベースのダンプ
  2. wordpressのソース一式
  3. nginx, php-fpm の設定ファイル

バックアップ先にはDropboxと同期しているディレクトリ内にバックアップ専用ディレクトリを設けてその中にバックアップを取るようにしています。

シェルスクリプトが用意できたらcronの設定を行います。

0 3 * * * /hoge/fuga/bachup.sh

上記設定では毎日午前3時にバックアップスクリプトが実行されるようになっています。この辺りは時間別のアクセス数や他のcronの設定などの兼ね合いで決めてください。

最後にサーバ側のDropboxの設定です。 まずはDropboxのダウンロードサイトからdropbox.pyをサーバへダウンロードします。

ダウンロードができたら、dropbox.pyに実行権を付けて

$ dropbox.py start -i

とするとDropboxの同期を行うデーモンがインストールされます。

デーモンのインストールが終わったら

$ dropbox.py start

とコマンドを実行すると、DropboxのURLが表示されるので、ブラウザで表示されたURLにアクセスし、Dropboxのアカウントの登録 or 作成を行います。

Dropboxのアカウント作成 or 登録が完了した時点からホームディレクトリ内のDropboxディレクトリにあるファイルがDropboxと動機されます。

今回のようにDropboxをバックアップデータの退避先として利用する場合、sshなどでログインしていなくてもdropboxの同期デーモンが実行されていないとマズイのでこちらを参考にスタートアップスクリプトを作成し、サーバ起動時に自動的にdropboxの同期デーモンも起動するようにしておきましょう。

また、デフォルトの設定ですとDropboxのデーモンがLan syncという機能がONになっており、udp 17500でブロードキャストしているので下記コマンドでLan sync機能をOFFにしておきましょう。

$ dropbox.py lansync n
$ dropbox.py stop
$ dropbox/py start

後は、cronでバックアップスクリプトが実行される度にバックアップファイルが作成され、Dropboxの同期デーモンが自動的にDropboxにアップしてくれます。

これで少しは安心ですね。