ブログのバックアップ用シェル作成!定時起動し障害に備える

シェアする

Pocket

何事かが起こって、ブログの中身が消えてしまったら!?

何も備えがないと元に戻すことはできません。こんな事態になったら、もう、お手上げとなってしまいます。

この対処として、バックアップを取っておくことが大切です。例によって、師匠50オヤジに相談、教えてもらいました。

1.バックアップ用シェルの作成

(1) バックアップ対象

60爺は自宅でサーバを立ち上げて、現在のブログを運用しています。これを考えると、何をバックアップすればよいかわかってきます。

ここから導き出したバックアップ対象ですが、次の二つを保管しておけば、まず、問題がないと考えます。

  • データベースのフルバックアップ
  • /var/www/wordpressのディレクトリ

ひとつ目は、ブログの記事の入っているデータベース即ち MySQL の中身全てです。二つ目は、wordpressに関わりのあるファイル全般です。

この2つのファイルさえあれば、万が一、問題が起こってもデータベースとwordpressの内容を元に戻すことで、ブログを再現することができるようになります。

(2) バックアップ方法

バックアップ方法は、次の内容を組み込んだシェルを作成して実施します。

  • データベースのフルバックアップファイル dump.sql 取得
  • wordpressのバックアップファイル wordpress.tar.gz 取得
  • 上記の2ファイルを、別サーバ(192.168.nnn.nnn)のホームディレクトリ配下の/blog_backupに ftp で転送(put)

シェルの内容は、次のようになります。

#!/bin/sh
# MySQL のフルバックアップ取得
mysqldump -u root -pXXXXXXXXXX -x --all-databases --events > /tmp/dump.sql
cd /var/www
# wordpress 配下のファイルを圧縮して保管
tar cvzf /tmp/wordpress.tar.gz wordpress
cd /root/blog_backup
# ftp で上記2ファイルを既定のフォルダに転送
ftp -n < /root/blog_backup/blog_backup.prm
chown root.root /tmp/dump.sql
chown root.root /tmp/wordpress.tar.gz
chmod 700 /tmp/dump.sql
chmod 700 /tmp/wordpress.tar.gz
root@raspbian:~/blog_backup# ls
blog_backup.prm blog_backup.sh

そして、上記blog_backup.prmの内容は、こうなってます。

open 192.168.xxx.100 ※別サーバID
user user_id PSW
binary
cd /home/xxxxxxxx/blog_backup
lcd /tmp
put dump.sql
put wordpress.tar.gz

上記、シェルの内容を図に示すと、次のようになります。

Webサーバから、データベース及びブログのバックアップファイルを、asteriskサーバに格納します。

2.バックアップを定時起動

(1) バックアップ起動時間の決定

さて、バックアップを取っても、ある時点のものだけでは、何の役にも立ちません。

定期的にバックアップを取ることが重要です。ただ、闇雲にバックアップを取っても、環境を無駄にするだけでは意味がありません。

このバックアップは、ブログに万一のことがあった場合の保険ですので、日に1回取得し、何かあった際には、前日の朝一に戻れるようにしたいと思います。

そこで、バックアップ時間を朝3時とします。つまり、翌日からは朝3時に、バックアップ内容の上塗りがかかるようにします。

(2) バックアップの起動方法

バックアップの起動は、定時になったら、上記のシェルを動かせば良いので cron を使用して実現します。

次のように指定します。

00 3 * * * /root/blog_backup/blog_backup.sh 

上記の例では、毎朝3:00(この時間は朝とはいわないか?)に実行されます。実際のディレクトリにいって内容を見てみました。

ちゃんと、本日の3:00にバックアップされてます。

/blog_backup $ ls -l
-rw------- 1 xxxxxxxx xxxxxxxx  3491434 5月 15 03:00 dump.sql
-rw------- 1 xxxxxxxx xxxxxxxx 39205076 5月 15 03:00 wordpress.tar.gz

(3) 考察:バックアップの今後

上記にも書いた通り、現時点のシェルは、毎日、ファイルを上書きしますが、将来は、日単位でバックアップするとか、たとえば、30分おきにバックアップする必要が出てくるかもしれません。

そうした場合は、ファイル名称に時間を入れて追加していくなどの工夫がいると思います。

当面は、現状のもので運用し、将来に備えたいと思います。

※ 参考 crontab について

crontabは、ウィキペディアで以下のように説明されてます。

(クロンタブ、あるいはクローンタブ、クーロンタブとも)コマンドはUnix系OSにおいて、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。 標準入力からコマンド列を読み取り、crontabと呼ばれるファイルにそれを記録する。

詳細は、crontabの書き方を見てください。

スポンサーリンク

シェアする

フォローする