社長BLOG
Linuxサーバ、Dropboxバックアップの黒魔術
- 2010-12-22 (水)
- 社長BLOG
※反響が大きければ追記します。@tejimaに連絡下さい。
プライベートでLinuxサーバをいくつも借りている。
こういうサーバのバックアップが一番困る。お金も手間もかけられない。
信頼性は商用レベルまで行かなくても、とにかくお金がかからず、お手軽なバックアップの仕掛けを完成させたい。
コンセプトは
・流行りのクラウド
・お手軽
・ローコスト、できればタダ
クラウドファイル共有といえばDropbox。これをうまいことLinuxサーバのバックアップに使えないだろうか?
DropboxはちょうどVer1.0正式版になったところだし、チャレンジしてみよう。
全体のイメージ
ServerA ServerB2つのLinuxサーバにバックアップ専用のユーザ(backup)を作成し、
backupユーザーにたいして、Dropboxをそれぞれインストール。
ファイルとデータベースをbackupユーザーのDropboxディレクトリに定期的に上書き保存されるようにし、
Dropboxのクラウド上に転送する。
このように構成はいたってシンプル。
手順1:Linux版Dropboxのセットアップ
GUIを使わないCLI版Dropboxをセットアップする。
差分バックアップがついた2GBの無料ストレージがもらえるので、個人目的としてはかなりの量のバックアップがこなせる。
手順2:Linuxサーバのバックアップファイルづくり
バックアップを取るべきディレクトリとデータベースを圧縮し、ひとつのファイルになるようにシェルスクリプトを書く。
tar cvfz /home/backup/Dropbox/ServerA.com/allfiles.tar.gz /var/www/OpenPNE
mysqldump -u xxxx -p xxxx –default-caracter-set=utf8 -A | gzip -9 > /home/backup/Dropbox/ServerA.com/alldatabases.sql.gz
このような書き方になる。
手順3:CRONでデイリーバックアップが取られるように設定
crontabを編集し、ファイル、データベースが /home/backup/Dropbox/sitename以下に毎日上書きされるように設定する。
10 4 * * * sh /home/backup/Dropbox/ServerA.com/backup.sh
手順3:SelectiveSync 別のサーバのバックアップが転送されないようにする
デフォルトではDropboxは全サーバのすべてのファイルを共有しようとする。
複数サーバのバックアップを取りたいときは、SelectiveSync機能を使って、別サーバは除外されるようにしよう。
./dropbox.py exclude コマンドを使う。
手順4:バックアップ状況の確認
正しくバックアップが取れている。
Dropboxは無料プランでも30日の世代バックアップをとってくれるので、同一のファイル名にして上書き保存すれば、この写真のように世代バックアップをきっちり取ってくれる。
※反響が大きければ追記します。@tejimaに連絡下さい。