夕方、昨日読んだ他の人のブログで、レンタルサーバーでWordpressのデータをローカルにバックアップしているというのがあったのを思い出して、ああそうだ、自分もそれをやった方がいいと思い立ってちょこちょことサーバーをいじっていた。去年までは自宅サーバーでこのサイトを運営していて、デイリーで外付けHDDにバックアップしていた。
レンタルサーバーでも14日分のバックアップは毎日されているが、レンタルサーバーは絶対に信用できるというものでもない。昔ファーストサーバというレンタルサーバーの会社が大規模なユーザデータ消失をやらかした。去年は福井県の「ふくいナビ」というポータルサイトで全データ消失という事態が発生した。やはりレンタルサーバーのデータも手元のマシンにバックアップしておきたい。
バックアップしたいのはMySQLのデータベースと、Webのファイルシステム。これを毎日自動で実行するためには、まずcronが実行できないといけない。レンタルサーバーにSSHでログインしてcrontab -eを実行したら、お、いけそうだ。次にtarコマンドでファイルシステムをアーカイブできるか試したら、うん大丈夫そうだ。
cd $HOMEDIR/public_html tar cfz $BACKUPDIR/public_html.tgz . 2>&1 > $BACKUPDIR/backup_public_html.log
次にMySQLのバックアップだが、これは最初無理かと思った。mysqlやmysqldumpコマンドは殺されてなかったが、コマンドラインからサーバに接続できない。だめなのかな?と思ったが、よく考えたらこのレンタルサーバーはウェブサーバーとDBサーバーが切り離されている。レンタルサーバーのコントロールパネルからDBサーバーのホスト名を確認し、mysqldumpコマンドのオプションで指定したらうまくいった。
mysqldump --user=xxxxx --password=xxxxx -h xxxxx.ne.jp --all-databases > $BACKUPDIR/mysqldump_all.sql
あとはこれらを実行するシェルスクリプトを書き、cronで深夜1時に実行するようにした。そしてローカルのサーバで、現在レンタルサーバーのapacheのログを毎日FTPでGETしているcronのスクリプトにファイルシステムとMySQLのバックアップファイルを追加。
これで明日から少し安心して寝られるのだ。一応テストはしたが、夜中のcronが両方ともちゃんと動いて無事リモートのバックアップファイルがローカルサーバーに来ているか、明朝に確認しなければ。